Clean Architecture là gì - Ưu nhược và cách dùng hợp lý
Clean Architecture là một kiến trúc ứng dụng nổi tiếng, dựa trên nguyên lý loại bỏ sự lệ thuộc giữa các đối tượng cũng như các layer trong ứng dụng. Kiến trúc này gồm 4 layer được biểu diễn bằng các vòng tròn đồng tâm.
Mục Lục
Clean Architecture là gì?
Clean Architecture kế thừa nguyên lý Dependency Inversion trong SOLID, được cấu trúc theo 4 tầng:
- Entities
- Use Cases
- Interface Adapters
- Frameworks & Drivers
Nguyên tắc chính là "hướng tâm" — layer trong không biết gì về layer ngoài.
Entities
Layer trong cùng, nơi chứa các business logic cốt lõi. Ví dụ: Object Person
với hàm setAge
đảm bảo age
≥ 1.
Use Cases
Chứa logic ứng dụng (application-specific logic). Ví dụ: Use Case đăng ký tài khoản.
Interface Adapters
Chuyển đổi dữ liệu phù hợp giữa Use Cases và giao diện người dùng hoặc hệ quản trị cơ sở dữ liệu.
Frameworks & Drivers
Tầng ngoài cùng – nơi triển khai các công cụ, thư viện cụ thể như Web Framework, DB driver,...
Ưu và nhược của Clean Architecture
Nhược điểm
- Cồng kềnh, phức tạp cho ứng dụng nhỏ.
- Trừu tượng cao, ảnh hưởng đến performance.
- Khó tuyển người hiểu kiến trúc đúng cách.
Ưu điểm
- Chia để trị hiệu quả – tách biệt rõ ràng giữa các tầng.
- Dễ maintain và mở rộng – giảm breaking change.
- Dễ viết unit test – mock các tầng qua interface.
Áp dụng Clean Architecture sao cho hợp lý
Không phải ứng dụng nào cũng cần đủ 4 tầng. Tùy theo quy mô và độ phức tạp, có thể dùng mô hình đơn giản hơn.
Ví dụ với REST API có thể chỉ dùng 3 tầng:
- Transport
- Business
- Repository/Storage
Ví dụ flow API Update Product:
Ở tầng Storage, có thể dùng MongoDB hoặc MySQL – chỉ khác nhau về implement cụ thể, cùng sử dụng interface chung.
Clean Architecture không phải là "chuẩn bắt buộc", mà là định hướng tốt để tổ chức code dễ test, dễ mở rộng, và dễ maintain.