SonnyBIM
Published on

Thay Đổi Kiến Trúc Từ Layered Architecture Tới Clean Architecture

Authors

Giới thiệu

Mình đã chuyển đổi cấu trúc dự án Sonny từ Layered Architecture sang Clean Architecture

Mục đích chính là mình sẽ opensource những dự án độ phức tạp cao hơn, tách hiệt hoàn toàn framework và business logic dễ dễ dàng mock unitest nhiều case

Mỗi kiến trúc Layer hay Clean đều có ưu và nhược điểm riêng, theo mình thì cũng không cần cuồng một kiến trúc nào cả, tùy vào mục đích và độ lớn của dự án mà mình sẽ triển khai theo kiến trúc nào

Layered Architecture

Phù hợp cho dự án vừa và nhỏ, trình độ junior trở lên là được

Ưu điểm

  • Triển khai giai đoạn đầu nhanh
  • Phù hợp với trình độ code mới và vừa (code dễ dàng)
  • Tránh bị over-engineering

Nhược điểm

  • Không tách rời được business logic, rất khó để unitest (đa số là Integration test)
  • Thay đổi framwork sử dụng tốn rất nhiều thời gian
  • Nói chung là dài hạn bảo trì các kiểu sẽ rất tốn thời gian, nhiều lúc là không thể thay đổi luôn ấy chứ

Clean Architecture

Phù hợp cho dự án lớn, phức tạp về business logic, Trình độ senior trở lên

Ưu điểm

  • Tất cả các nhược điểm của Layer Architecture là ưu điểm của thằng này
  • Dễ dàng mở rộng lâu dài

Nhược điểm

  • Triển khai giai đoạn đầu lâu hơn, do phải viết bài bản lúc đầu
  • Khá khó hiểu cho Junior

Tình hình thực tế

Hầu như ở Việt Nam làm tool Revit, hay anh em dân xây dựng viết app thì triển khai Layered Architecture, mình chưa thấy source nào mà triển khai theo Clean Architecture cả