Kiến trúc Sạch (Clean Architecture)

Опубликовано: 24 Июль 2026
на канале: Dev Block
224
9

Kiến trúc Sạch (Clean Architecture) là một triết lý thiết kế phần mềm hiện đại, được phổ biến bởi Robert C. Martin (Uncle Bob). Mục tiêu chính của kiến trúc này là tạo ra một hệ thống dễ bảo trì, dễ kiểm thử, và độc lập với các yếu tố bên ngoài như framework, cơ sở dữ liệu (DB), hoặc giao diện người dùng (UI).

Nguyên lý cốt lõi: Quy tắc Phụ thuộc (Dependency Rule)
Kiến trúc Sạch được xây dựng dựa trên nguyên tắc cơ bản là sự phụ thuộc phải luôn hướng vào trong. Điều này có nghĩa là các vòng tròn bên trong (core logic) không bao giờ được phép biết hoặc phụ thuộc vào các vòng tròn bên ngoài (chi tiết triển khai).

Kiến trúc này được hình dung bằng một chuỗi các vòng tròn đồng tâm, chia hệ thống thành các lớp (layers) với chức năng rõ ràng:

Entities (Thực thể): Vòng tròn trung tâm chứa các quy tắc nghiệp vụ chung và quan trọng nhất của công ty (Enterprise-wide Business Rules). Chúng là các đối tượng cơ bản, ít khi thay đổi và không phụ thuộc vào bất kỳ lớp nào khác.

Use Cases (Trường hợp sử dụng): Lớp này chứa các quy tắc nghiệp vụ cụ thể của ứng dụng (Application Business Rules). Lớp Use Cases điều phối luồng dữ liệu vào và ra, quyết định cách các Entities được sử dụng để đạt được mục tiêu của ứng dụng.

Interface Adapters (Bộ điều hợp Giao diện): Lớp này chịu trách nhiệm chuyển đổi dữ liệu từ các định dạng bên ngoài (ví dụ: HTTP Request từ Web, hàng trong DB) sang định dạng phù hợp cho các Use Cases và Entities xử lý, và ngược lại. Lớp này chứa các Presenters, Controllers, và Gateways.

Frameworks & Drivers (Frameworks và Trình điều khiển): Vòng tròn ngoài cùng chứa các chi tiết kỹ thuật bên ngoài và dễ thay đổi, chẳng hạn như Database, Web Frameworks (như Spring hay Rails), UI, và các công cụ bên ngoài (như thiết bị, thư viện).

Lợi ích chính
Độc lập với Frameworks: Logic nghiệp vụ cốt lõi không bị ràng buộc bởi bất kỳ framework nào.

Dễ kiểm thử: Các quy tắc nghiệp vụ (Entities và Use Cases) có thể được kiểm thử độc lập mà không cần khởi tạo UI, Web Server hay Database.

Độc lập với Database: Bạn có thể thay đổi database (ví dụ: từ SQL sang NoSQL) mà không ảnh hưởng đến logic nghiệp vụ cốt lõi.

Độc lập với Giao diện người dùng: Giao diện người dùng (ví dụ: Web, Desktop, Mobile) có thể thay đổi dễ dàng mà không làm thay đổi các Use Cases.

Tóm lại, Kiến trúc Sạch giúp tách biệt rõ ràng giữa "Cái gì" (logic nghiệp vụ) và "Làm thế nào" (chi tiết kỹ thuật), đảm bảo tính bền vững và khả năng thích ứng của phần mềm theo thời gian.

Spotify: https://open.spotify.com/episode/0SGM...