Architecture

Đây là bài viết mở đầu trong loạt bài viết về “Software Archtecture Căn Bản“. Đây là loạt bài viết chủ yếu giới thiệu về một số mô hình kiến trúc phần mềm hay nói đúng hơn là sự phát triển của chúng qua từng giai đoạn, qua đó giúp chúng ta có cái nhìn tổng quát, up-to-date và là roadmap để bắt đầu hành trình chinh phục (đào sâu) thế giới của những bản thiết kế với vai trò là những kỹ sư và kiến trúc sư phần mềm đam mê với nghề.

Mở đầu

Bài viết đầu tiên của tôi lúc nào cũng dông dài, các bạn có thể bỏ qua và nhảy ngay vào phần quan trọng phía dưới.

Điều đầu tiên, tôi không phải là 1 kiến trúc sư phần mềm, dù cho trong tương lai tôi muốn như thế. Các bài viết trong series này cũng không phải do tôi tự sáng tạo ra để viết ra mà chủ yếu dựa trên nguồn tài liệu sẵn có từ series The Software Architecture Chronicles trên trang herbertograca.com và một số nguồn khác. Đây là 1 loạt bài viết nói về các dạng kiến trúc trong phần mềm từ thuở sơ khai đến hiện tại. Các bạn có thể tham khảo “nguyên văn” bằng tiếng Anh ở trên trang của tác giả. Phần tiếng Việt được tôi chuyển ngữ ở blog này chủ yếu phục vụ cho nhu cầu tự học và diễn giải bằng văn phong của chính tôi. Tuy phần dàn bài được dựa trên The Software Architecture Chronicles, trong quá trình viết, tôi có tìm thêm từ một số nguồn khác nếu có cách diễn giải tốt hơn thì sẽ dùng / pha trộn ý để tạo nên một bài viết mạch lạc và đầy đủ nhất.

Thiên tài Isaac Newton đã từng nói: “Nếu tôi nhìn thấy được xa hơn bởi vì tôi đứng trên vai những người khổng lồ, nhưng đừng ngủ gục trên vai của họ”. Bằng cách học tập từ những người đi trước, chúng ta sẽ có được kiến thức và kinh nghiệm cho bản thân mình, suy nghĩ về nó và áp dụng vào thực tiễn như là một cái bản đồ và đòn bẩy giúp bạn đi xa hơn, đúng hướng hơn.

Các thuật ngữ và tên gọi chuyên ngành sẽ được giữ nguyên vì nó không quá khó hiểu đối với các bạn khi đã đang và có ý định đặt chân đến nấc thang về kiến trúc phần mềm. Các hình ảnh sẽ được giữ nguyên nội dung và watermark (nếu có) từ original post vì mình không giỏi khoản vẽ vời.

(Trong mỗi bài viết tôi sẽ trích nguồn tham khảo đến bài viết gốc nhằm tôn trọng quyền tác giả. Vì chỉ với mục đích học tập và chia sẻ nên tôi tin tưởng rằng việc làm của mình là hoàn toàn hợp pháp về mặt bản quyền, nếu có bất cứ vi phạm nào được phản ánh, tôi sẽ sẵn lòng hợp tác để thay đổi cho phù hợp)

Trong series này, tác giả chủ yếu đề cập đến các concept (khái niệm) được mô tả bằng lời và một số các hình ảnh, có rất ít các ví dụ bằng code như khi chúng ta tiếp cận với các bài viết về programming tutorial hay design pattern.

Mục lục bài viết trong series này bao gồm:

  1. Software Architecture Timeline
  2. Các khái niệm căn bản trong kiến trúc phần mềm
  3. Sự phát triển của các ngôn ngữ lập trình
  4. Architectural Styles vs. Architectural Patterns vs. Design Patterns
  5. Kiến trúc một khối (Monolithic)
  6. Kiến trúc phân lớp (Layered Architecture)
  7. Kiến trúc phân lớp (đọc thêm)
  8. Model View Controller (MVC) và các biến thể của nó
    1. MVC (Model View Controller)
    2. MVP (Model View Presenter
    3. (Sưu tầm) MVVM và VIPER: Con đường trở thành Senior

    4. ADR (Action-Domain-Responder)
  9. EBI Architecture
  10. Low Coupling và High Cohesion là gì?
  11. Các nguyên lý thiết kế package
  12. Đo lường kết cấu của kiến trúc
    1. Thực hành measure metric trong project với NDepend
  13. Domain-Driven Design
      1. (Tản mạn): Về Domain Driven
      2. (Đọc thêm): Tại sao lại cần Domain Driven
      3. (Đọc thêm): Domain Driven là cái gì
  14. Ports & Adapters Architecture (aka Hexagonal Architecture)
    1. Thực hành implement Ports & Adapters Architecture
  15. Onion Architecture
  16. Clean Architecture
    1. Clean Architecture by Robert C. Martin (2017) (Book review)
    2. Thực hành implement Clean Architecture
  17. Kiến trúc biết nói (Screaming Architecture)
  18. Event-Driven Architecture
    1. How should you model your event-driven processes?
    2. Đọc thêm: các bài viết hay về xử lý bất đồng bộ trong hệ thống phân tán
  19. Command Query Responsibility Segregation (CQRS)
    1. Xây dựng hệ thống Ecommerce với DDD và CQRS
  20. Kiến trúc hướng dịch vụ (SOA)
  21. Orchestration or Choreography?
  22. Microservices Thực Tiễn: Từ Thiết Kế Đến Triển Khai (Bản tóm tắt)
    1. Microservices Thực Tiễn: Từ Thiết Kế Đến Triển Khai (Bản đầy đủ)
  23. Kết hợp các mẫu kiến trúc / pattern vào trong một (DDD, Hexagonal, Onion, Clean, CQRS, …)
  24. Explicit Architecture #02: Reflecting architecture and domain, in code
    1. Symfony
    2. Laravel
    3. Zend
    4. Aura
    5. ReactJS
    6. VueJS
  25. Explicit Architecture #03: Evolving a project: from MVP to P
  26. 4 + 1 Architecture view model
  27. Architecture quality attributes
  28. Giới thiệu về Serverless Architecture
  29. Headless Architecture
  30. Single Page Application
  31. Cloud Native Application (CNA)

Nowww! Hãy cùng bắt đầu hành trình khám phá về Software Architecture

Bài viết được tham khảo từ:
https://herbertograca.com/2017/07/03/the-software-architecture-chronicles/

(Và một số nguồn khác)

Tổng hợp bởi edwardthienhoang