1. C4 model

Nếu bạn chưa từng biết đến C4 thì đây là trang web mà bạn nên tham khảo khi tìm hiểu C4 là gì? https://c4model.com Khi mô tả hệ thống, chúng ta sẽ phải tìm cách để minh họa hệ thống một cách tốt nhất để đảm bảo mọi thành viên có thể hiểu được hệ thống vừa tổng quan nhưng khi cần có thể xem chi tiết được công nghệ, cũng như từng thành phần bên trong hệ thống. Có rất nhiều cách để minh họa kiến trúc, hệ thống ví dụ như dưới đây:

drawing

hay theo kiểu vẽ này

drawing1

Theo tiêu chuẩn chung thì chúng ta có ngôn ngữ mô hình hóa (UML) để mô tả hệ thống, nhưng việc chúng có cung cấp một cách hiệu quả để giao tiếp kiến trúc phần mềm thường không còn liên quan nhiều bởi vì nhiều nhóm phát triển đã từ bỏ chúng để ưu tiên các biểu đồ “ box and line” đơn giản hơn nhiều.

Do đó mô hình C4 được tạo ra như một cách giúp các nhóm phát triển phần mềm mô tả và truyền đạt kiến trúc phần mềm, cả trong các phiên thiết kế ban đầu hay khi tài liệu lại một mã nguồn hiện có. C4 model sẽ giúp các bạn mô tả hệ thống một cách nhanh hơn, cung cấp những level chi tiết để giúp toàn đội phát triển có thể hiểu và thực hiện update một cách dễ dàng. Về chi tiết thì C4 cung cấp một cách thức mô tả giống như bạn sử dụng Google, nó cho phép bạn đi từ tổng quan đến chi tiết từng thành phần trong hệ thống.

Tuy nhiên cách tốt nhất để hiểu và sử dụng C4 model là áp vào một dự án thực tế.

2. Sử dụng C4 model như thế nào?

Có rất nhiều tool cho phép bạn mô tả kiến trúc, hệ thống bằng C4. Nhưng có lẽ tool dễ dùng và phổ biến nhất là Drawio hoặc PlantUML. Ở ví dụ này tôi sử dụng Drawio.

Hệ thống mà tôi sẽ sử dụng C4 ở đây là một hệ thống IoT. Trong hệ thống sẽ gồm một số thành phần như Server, Mobile App, Database, etc. Mục tiêu dùng C4 sẽ tập trung vào các chủ đề trong C4 như Context ==> Container ==> Component. Chi tiết level thì các bạn có thể tham khảo trên trang web

drawing3

2.1 System Context

Theo tài liệu của C4 mode thì đây là diagram dùng cho tất cả đối tượng, và được khuyến khích sử dụng cho team phát triển. Context

2.1 Container

Biểu đồ này là mức chi tiết của hệ thống so, ở trong diagram này ta có thể thấy chi tiết hơn về các thành phần, diagram này thích hợp cho các thành viên có hiểu biết về kỹ thuật trong team phát triển. Context

2.3 Component

Khi zoom gần vào từng thành phần ta sẽ nhìn thấy các component bên trong containers

Context

3. Kết luận

Qua ví dụ thực tế, tôi thấy rằng áp dụng C4 rất thuận tiện trong việc mô tả hệ thống, tuy cũng phải mất một chút thời gian để làm quen. Tuy nhiên lợi ích mang lại là điều dễ dàng nhận thấy, nó sẽ giúp cho team phát triển document một cách thống nhất và nhanh chóng.