“Mô hình C4 giúp các đội ngũ truyền đạt kiến trúc phần mềm một cách rõ ràng, nhất quán và ở mức độ chi tiết phù hợp.”
— Simon Brown
Mô hình C4 Model (Phạm vi, Thùng chứa, Thành phần, Mã nguồn) là một khung phân cấp, có thể thu phóng để tài liệu hóa kiến trúc phần mềm. Nó được thiết kế để thân thiện với nhà phát triển, phù hợp với Agile, và dễ đọc — vượt ra khỏi những sơ đồ rối mắt, tĩnh tại “hộp và đường kẻ”.
Nó giúp các đội ngũ:
-
Truyền đạt kiến trúc một cách hiệu quả với cả các bên liên quan kỹ thuật và phi kỹ thuật.
-
Duy trì tài liệu hóa nhất quán, được kiểm soát phiên bản.
-
Tập trung vào điều quan trọng ở mỗi cấp độ trừu tượng.
🔍 Các trừu tượng cốt lõi của Mô hình C4

| Cấp độ | Khái niệm | Mục đích |
|---|---|---|
| Cấp độ 1: Phạm vi | Hệ thống và con người | Ai sử dụng hệ thống? Nó tương tác với môi trường như thế nào? |
| Cấp độ 2: Thùng chứa | Đơn vị triển khai | Các thành phần kỹ thuật cấp cao là gì (ứng dụng, cơ sở dữ liệu, API)? |
| Cấp độ 3: Thành phần | Nhóm logic | Chức năng được cấu trúc như thế nào bên trong một container? |
| Cấp độ 4: Mã nguồn (Tùy chọn) | Lớp, giao diện, phương thức | Chi tiết triển khai — thường được tạo tự động bởi IDEs. |
✅ Nguyên tắc chính: Phóng to chỉ khi cần thiết.Bắt đầu rộng, sau đó đi sâu.
🧩 Các thành phần chính và mối quan hệ
| Thành phần | Mô tả | Ví dụ |
|---|---|---|
| Người | Người thực hiện hoặc người dùng | Khách hàng, Quản trị viên, API bên thứ ba |
| Hệ thống phần mềm | Một hệ thống mang lại giá trị | Hệ thống ngân hàng trực tuyến |
| Container | Đơn vị triển khai (chạy hoặc triển khai được) | Ứng dụng web, Microservice, Cơ sở dữ liệu, Hàm không máy chủ |
| Thành phần | Nhóm logic các chức năng liên quan | Module xác thực, Bộ xử lý thanh toán, Lớp giao diện Mainframe |
| Các mối quan hệ | Các kết nối bằng ngôn ngữ đơn giản giữa các thành phần | "Sử dụng", "Gọi", "Đọc/Viết", "Phụ thuộc vào" |
💬 Sử dụng ngôn ngữ tự nhiên cho các mối quan hệ. Tránh dùng các thuật ngữ mơ hồ như “kết nối với”.
📊 Các cấp độ Mô hình C4 với các ví dụ PlantUML
📌 Tất cả các ví dụ sử dụng thư viện C4-PlantUML để đảm bảo tính nhất quán và tự động hóa.
1. Sơ đồ bối cảnh hệ thống (Cấp độ 1)
Ai sử dụng hệ thống? Hệ thống bên ngoài nào nó tương tác với?
🎯 Đối tượng mục tiêu: Các bên liên quan không chuyên, người sở hữu sản phẩm, cấp lãnh đạo.
@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
LAYOUT_WITH_LEGEND()
title Sơ đồ bối cảnh hệ thống cho Ngân hàng trực tuyến
Person(customer, "Khách hàng", "Một khách hàng cá nhân ngân hàng")
System(banking_system, "Hệ thống Ngân hàng Trực tuyến", "Cho phép khách hàng xem tài khoản và thực hiện thanh toán")
System_Ext(mainframe, "Hệ thống Ngân hàng Mainframe", "Lưu trữ tất cả dữ liệu ngân hàng cốt lõi")
Rel(customer, banking_system, "Sử dụng")
Rel_R(banking_system, mainframe, "Lấy thông tin tài khoản từ")
@enduml
✅ Tập trung vào: Phạm vi và ranh giới của hệ thống.
2. Sơ đồ Container (Mức 2)
Các thành phần kỹ thuật chính là gì và chúng sử dụng công nghệ nào?
🎯 Đối tượng người xem: Kiến trúc sư, nhà phát triển, kỹ sư DevOps.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
Person(customer, "Khách hàng", "Một khách hàng ngân hàng cá nhân")
System_Boundary(c1, "Hệ thống Ngân hàng Trực tuyến") {
Container(web_app, "Ứng dụng Web", "Java, Spring MVC", "Cung cấp nội dung cho người dùng")
Container(api_app, "Ứng dụng API", "Java, Spring Boot", "Cung cấp chức năng thông qua JSON/HTTPS")
ContainerDb(db, "Cơ sở dữ liệu", "Cơ sở dữ liệu quan hệ", "Lưu trữ dữ liệu người dùng")
}
System_Ext(mainframe, "Hệ thống Ngân hàng Mainframe", "Lưu trữ tất cả dữ liệu ngân hàng cốt lõi")
Rel(customer, web_app, "Sử dụng", "HTTPS")
Rel(web_app, api_app, "Gọi", "JSON/HTTPS")
Rel(api_app, db, "Đọc/Viết", "JDBC")
Rel(api_app, mainframe, "Sử dụng", "XML/HTTPS")
@enduml
✅ Tập trung vào: Lựa chọn công nghệ, giới hạn triển khai, luồng dữ liệu.
3. Sơ đồ Thành phần (Mức 3)
API Application được cấu trúc nội bộ như thế nào?
🎯 Đối tượng người xem: Nhà phát triển, trưởng nhóm kỹ thuật, trưởng nhóm.
@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
LAYOUT_WITH_LEGEND()
title Sơ đồ Thành phần cho Ứng dụng API trong Ngân hàng Trực tuyến
Container(api_app, "Ứng dụng API", "Java, Spring Boot")
ContainerDb(db, "Cơ sở dữ liệu", "Cơ sở dữ liệu quan hệ")
System_Ext(mainframe, "Hệ thống Ngân hàng Mainframe")
Container_Boundary(api_boundary, "Ứng dụng API") {
Component(sign_in, "Bộ điều khiển Đăng nhập", "Bộ điều khiển MVC", "Cho phép người dùng đăng nhập")
Component(security, "Thành phần Bảo mật", "Spring Security", "Xử lý xác thực")
Component(mainframe_facade, "Bộ giao diện Mainframe", "DAO", "Giao tiếp với Mainframe")
Rel(sign_in, security, "Sử dụng")
Rel(security, db, "Đọc/Viết")
Rel(sign_in, mainframe_facade, "Sử dụng")
Rel(mainframe_facade, mainframe, "Sử dụng")
}
@enduml
✅ Tập trung vào: Cấu trúc nội bộ, trách nhiệm, phụ thuộc.
4. Sơ đồ mã nguồn (Mức 4 – Tùy chọn)
Chi tiết triển khai: lớp, giao diện, phương thức.
🎯 Đối tượng người xem: Nhà phát triển, người kiểm tra mã nguồn.
⚠️ Không khuyến khích vẽ thủ công — tốt nhất là tạo tự động thông qua IDEs (ví dụ: IntelliJ, VS Code) bằng công cụ vẽ sơ đồ tự động.
Ví dụ (đơn giản hóa):
@startuml
class SignInController {
+signIn()
+validateCredentials()
}
class SecurityComponent {
+authenticate()
+generateToken()
}
class MainframeFacade {
+fetchAccountData()
+sendTransaction()
}
SignInController --> SecurityComponent : Sử dụng
SecurityComponent --> Database : Đọc/Viết
MainframeFacade --> MainframeAPI : Sử dụng
@enduml
✅ Thực hành tốt nhất: Tự động hóa mức độ này bằng các công cụ như PlantUML + các tiện ích mở rộng IDE.
✅ Thực hành tốt nhất và Nguyên tắc chính
| Nguyên tắc | Tại sao điều đó quan trọng |
|---|---|
| Tinh chỉnh từng bước | Bắt đầu với bối cảnh → chỉ thêm chi tiết khi cần thiết. Tránh ghi chép quá mức. |
| Sơ đồ như mã nguồn | Lưu trữ .puml tệp trong Git. Cho phép quản lý phiên bản, CI/CD, hợp tác và so sánh thay đổi. |
| Bao gồm chú thích | Luôn giải thích các biểu tượng, màu sắc và quy ước (ví dụ: Đỏ = Bên ngoài, Xanh dương = Nội bộ). |
| Tập trung vào giao tiếp | Các sơ đồ nên cung cấp thông tin, không phải để ấn tượng. Đơn giản > đầy đủ. |
| Sử dụng sơ đồ “Bức tranh hệ thống” | Hiển thị cách nhiều hệ thống tương tác với nhau trong toàn tổ chức. |
| Sử dụng sơ đồ “Động” | Thêm sơ đồ tuần tự để hiển thị hành vi tại thời điểm chạy (ví dụ: luồng đăng nhập). |
| Phạm vi hợp lý | Một sơ đồ thành phần phải được xác định phạm vi trong một container duy nhất. Đừng trộn các container! |
🛠 Công cụ và Hệ sinh thái
-
PlantUML + Thư viện C4-PlantUML – Miễn phí, dựa trên văn bản, được kiểm soát phiên bản.
-
Visual Paradigm, Lucidchart, Draw.io – Hỗ trợ C4 thông qua các mẫu.
-
Trình cắm IDE – Tự động tạo sơ đồ C4 từ mã nguồn (ví dụ: IntelliJ + trình cắm PlantUML).
-
Tích hợp CI/CD – Tạo sơ đồ như một phần của quy trình xây dựng.
📚 Tài liệu tham khảo và Đọc thêm
- Trang web chính thức của Mô hình C4 – Hướng dẫn chuẩn của Simon Brown
- Hỗ trợ Mô hình C4 trong Visual Paradigm: Một hướng dẫn thân thiện với người mới, giới thiệu mô hình C4 và minh họa cách Visual Paradigm hỗ trợ trực quan hóa nó bằng các công cụ trực quan và các tính năng được hỗ trợ bởi trí tuệ nhân tạo.
- Mô hình C4 là gì?: Một cái nhìn tổng quan toàn diện về mô hình C4, giải thích phân cấp bốn cấp độ—Bối cảnh, Thùng chứa, Thành phần và Mã nguồn—and cách nó giúp giao tiếp kiến trúc phần mềm rõ ràng và mở rộng được.
- Hướng dẫn toàn diện về trực quan hóa Mô hình C4 với các công cụ AI của Visual Paradigm: Một khám phá chi tiết về cách các khả năng AI của Visual Paradigm giúp đơn giản hóa việc tạo và hoàn thiện các mô hình C4, giảm thiểu công sức thủ công và nâng cao độ chính xác.
- Mô hình C4: Hướng dẫn toàn diện về trực quan hóa kiến trúc phần mềm với các công cụ được hỗ trợ bởi trí tuệ nhân tạo: Một tài liệu tham khảo toàn diện về việc áp dụng mô hình C4 trong kiến trúc phần mềm thực tế, tập trung vào mô hình hóa và tự động hóa được thúc đẩy bởi trí tuệ nhân tạo.
- Bộ công cụ sơ đồ C4 tích hợp sẵn và tuân thủ tiêu chuẩn: Nhấn mạnh cam kết của Visual Paradigm về tuân thủ tiêu chuẩn, bao gồm các quy tắc sơ đồ C4 và các mối quan hệ cha-con trên các cấp độ trừu tượng.
- Tính năng Công cụ Mô hình C4 – Hợp tác thời gian thực và Xuất: Mô tả đầy đủ các tính năng của công cụ mô hình C4, bao gồm hợp tác thời gian thực, kiểm soát phiên bản và khả năng xuất mô hình dưới dạng HTML tương tác hoặc báo cáo chuyên nghiệp.
- Phiên bản phát hành Hỗ trợ đầy đủ Mô hình C4 của Visual Paradigm: Thông báo phát hành chính thức chi tiết về việc tích hợp đầy đủ các loại mô hình C4—bao gồm Bức tranh Hệ thống, Bối cảnh Hệ thống, Thùng chứa, Thành phần, Động lực và Triển khai—vào bộ công cụ mô hình hóa của Visual Paradigm.
- Công cụ Sơ đồ C4 – Tính năng chính và Lợi ích: Một cái nhìn sâu sắc về các khả năng cốt lõi của công cụ sơ đồ C4, nhấn mạnh độ chính xác, phân cấp và tính rõ ràng trực quan trong việc biểu diễn kiến trúc phần mềm.
- Bật mí sức mạnh của Mô hình C4 – Đơn giản hóa các sơ đồ kiến trúc phần mềm: Khám phá lợi ích của việc sử dụng mô hình C4 để đơn giản hóa kiến trúc phần mềm phức tạp, giúp nó trở nên dễ tiếp cận đối với cả các bên liên quan kỹ thuật và phi kỹ thuật.
- Trình sinh sơ đồ AI cho Mô hình C4 hoàn chỉnh: Chi tiết về trình sinh sơ đồ C4 được hỗ trợ bởi AI, chuyển đổi mô tả bằng ngôn ngữ tự nhiên thành các sơ đồ C4 được cấu trúc đầy đủ, tuân thủ đúng mức độ trừu tượng.
- Trợ lý chat AI của Visual Paradigm – Tinh chỉnh sơ đồ theo cách trò chuyện: Giới thiệu tính năng trợ lý chat AI cho phép người dùng thay đổi sơ đồ bằng các lệnh ngôn ngữ tự nhiên, chẳng hạn như thêm hoặc đổi tên các thành phần.
- Trình soạn thảo C4 PlantUML được hỗ trợ bởi AI – Ngôn ngữ tự nhiên thành mã: Mô tả phòng thí nghiệm PlantUML được hỗ trợ bởi AI, chuyển đổi mô tả bằng tiếng Anh đơn giản thành mã PlantUML hợp lệ, với hỗ trợ hiển thị và chỉnh sửa tức thì.
- Tận dụng Studio C4 AI của Visual Paradigm để đơn giản hóa tài liệu: Một nghiên cứu trường hợp về cách các đội ngũ sử dụng công cụ C4 được hỗ trợ bởi AI để tạo ra tài liệu kiến trúc chính xác, dễ bảo trì và mở rộng được.
- Phòng thí nghiệm C4 PlantUML được hỗ trợ bởi AI – Trình soạn thảo song song: Cho thấy cách Phòng thí nghiệm C4 PlantUML cho phép người dùng viết và tinh chỉnh sơ đồ bằng tiếng Anh đơn giản, với phản hồi trực quan tức thì và sinh mã tự động.
- Video demo Studio C4 AI của Visual Paradigm: Một minh họa thực tế về quy trình làm việc của mô hình C4 được hỗ trợ bởi AI, cho thấy cách một mô tả bằng ngôn ngữ tự nhiên có thể được chuyển đổi thành sơ đồ C4 hoàn chỉnh, có cấu trúc chỉ trong vài giây.
🎯 Suy nghĩ cuối cùng
Mô hình C4 không phải là về việc tạo ra những sơ đồ hoàn hảo — mà là về kể đúng câu chuyện ở mức độ chi tiết phù hợp.
Sử dụng nó để:
-
Tiếp nhận nhà phát triển mới nhanh hơn.
-
Đồng bộ hóa các đội nhóm về ranh giới hệ thống.
-
Giao tiếp với các bên liên quan mà không cần dùng thuật ngữ chuyên môn.
-
Phát triển tài liệu kiến trúc song song với mã nguồn.
✅ Mẹo chuyên gia: Bắt đầu bằng một Sơ đồ bối cảnh hệ thống sơ đồ. Sau đó, phát triển mô hình theo nhu cầu thay đổi của đội nhóm của bạn — giống như xây dựng bản đồ từng con phố một cách từ từ.
Hãy cho tôi biết nếu bạn muốn:
-
Phiên bản PDF có thể tải về của hướng dẫn này
-
Một kho lưu trữ mẫu với sơ đồ C4 trong Git
-
Các tập lệnh tự động hóa để tạo sơ đồ C4 từ mã nguồn
-
Một so sánh với các mô hình khác (ví dụ: 4+1 View, Zachman)
Chúc bạn vẽ sơ đồ vui vẻ! 🖥️📘











