C4 Model - Phương pháp hay để tiếp cận kiến trúc phần mềm
2. Kiến trúc phần mềm cổ điển
2.1 Khái niệm
Kiến trúc phần mềm cổ điển thường sử dụng các sơ đồ kỹ thuật như:
- UML Class Diagram
- UML Component Diagram
- UML Deployment Diagram
- Sequence Diagram
- Layered Architecture Diagram
Mục tiêu chính là mô tả cấu trúc và hành vi của hệ thống từ góc nhìn kỹ thuật.
2.2 Đặc điểm
Các mô hình truyền thống thường tập trung vào:
- Cấu trúc chi tiết của hệ thống.
- Quan hệ giữa các lớp (Class).
- Luồng tương tác giữa các đối tượng.
- Triển khai phần mềm trên hạ tầng.
Ví dụ, một hệ thống thương mại điện tử có thể được mô tả bằng:
- Class Diagram cho các thực thể Product, Order, Customer.
- Sequence Diagram cho quy trình đặt hàng.
- Deployment Diagram cho máy chủ ứng dụng và cơ sở dữ liệu.
2.3 Ưu điểm
- Chuẩn hóa và được công nhận rộng rãi.
- Hỗ trợ phân tích thiết kế chi tiết.
- Phù hợp với tài liệu kỹ thuật chuyên sâu.
- Có nhiều công cụ hỗ trợ.
2.4 Hạn chế
- Khó hiểu đối với người không chuyên kỹ thuật.
- Tài liệu dễ trở nên lỗi thời.
- UML thường quá chi tiết cho việc trao đổi kiến trúc tổng quan.
- Thiếu một cách tiếp cận nhất quán từ mức tổng thể đến chi tiết.
3. C4 Model
3.1 Khái niệm
C4 Model (Context, Container, Component, Code) là phương pháp mô tả kiến trúc phần mềm do Simon Brown phát triển.
Mục tiêu của C4 là cung cấp các sơ đồ kiến trúc dễ hiểu, tập trung vào khả năng giao tiếp giữa các bên liên quan thay vì chỉ phục vụ mục đích kỹ thuật.
C4 chia kiến trúc thành 4 cấp độ:
- Context Diagram
- Container Diagram
- Component Diagram
- Code Diagram
3.2 Các cấp độ trong C4 Model
Context Diagram
Mô tả hệ thống như một "hộp đen" trong môi trường hoạt động.
Thể hiện:
- Người dùng
- Hệ thống hiện tại
- Các hệ thống bên ngoài
Ví dụ:
Customer
↓
E-Commerce System
↓
Payment Gateway
Mục tiêu là giúp lãnh đạo, khách hàng và các bên liên quan hiểu được vai trò của hệ thống.
Container Diagram
Mô tả các khối thực thi chính của hệ thống.
Ví dụ:
- Web Application
- Mobile App
- API Service
- Database
Sơ đồ này giúp nhóm phát triển hiểu cách hệ thống được chia thành các thành phần triển khai độc lập.
Component Diagram
Mô tả chi tiết bên trong một container.
Ví dụ trong API Service:
- Product Controller
- Order Service
- Payment Service
- Repository
Mức này tương đương với một phần của UML Component Diagram nhưng được tổ chức rõ ràng hơn.
Code Diagram
Mô tả mã nguồn hoặc lớp chi tiết.
Thông thường sử dụng UML Class Diagram hoặc các sơ đồ tương tự.
4. So sánh Kiến trúc Cổ điển và C4 Model
|
Tiêu chí |
Kiến trúc cổ điển |
C4 Model |
|
Mục tiêu |
Thiết kế kỹ thuật |
Giao tiếp kiến trúc |
|
Độ chi tiết |
Thường rất chi tiết |
Từ tổng quan đến chi tiết |
|
Khả năng đọc hiểu |
Khó với người không kỹ thuật |
Dễ hiểu hơn |
|
Tính phân cấp |
Không rõ ràng |
Rõ ràng theo 4 cấp |
|
Hỗ trợ Microservices |
Hạn chế |
Rất tốt |
|
Bảo trì tài liệu |
Khó cập nhật |
Dễ duy trì |
|
Khả năng trình bày với khách hàng |
Thấp |
Cao |
|
Khả năng mô tả code |
Tốt |
Tốt (qua Level 4) |

