0

Clean Architecture là gì - Ưu nhược và cách dùng hợp lý

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

  1. Clean Architecture là gì?
  2. Ưu và nhược của Clean Architecture
  3. Áp dụng Clean Architecture sao cho hợp lý

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

  1. Cồng kềnh, phức tạp cho ứng dụng nhỏ.
  2. Trừu tượng cao, ảnh hưởng đến performance.
  3. Khó tuyển người hiểu kiến trúc đúng cách.

Ưu điểm

  1. Chia để trị hiệu quả – tách biệt rõ ràng giữa các tầng.
  2. Dễ maintain và mở rộng – giảm breaking change.
  3. 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.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí