← C4 Model: vẽ kiến trúc phần mềm

Bài 9 · Vận dụng · 18 phút

Giao tiếp đúng khán giả

Biên soạn bởi Nguyễn Anh Tuấn

Chọn mức zoom theo người nghe: business đọc Context, tech lead đọc Container, dev đọc Component, ops đọc Deployment - kể chuyện kiến trúc cho từng phòng ban.

Ta đã có đủ các loại sơ đồ và cách vẽ chúng cho đẹp. Nhưng một sơ đồ chỉ thực sự có ích khi trao đúng người. Sai lầm phổ biến: chiếu một sơ đồ dày đặc chi tiết kỹ thuật cho phòng kinh doanh, rồi tự hỏi vì sao không ai gật đầu.

  • Mỗi khán giả cần một độ chi tiết khác nhau - đây là lý do C4 có nhiều mức.
  • Đưa quá ít: người kỹ thuật thiếu thông tin. Đưa quá nhiều: người kinh doanh ngợp.
  • Kỹ năng ở đây: chọn đúng mức zoom cho người đang nghe.

Cùng một hệ thống Ngân Hàng Số, hai bức cho hai khán giả. Bức Context cho người kinh doanh - chỉ thấy hệ thống, người dùng và dịch vụ ngoài:

System Context - Ngân Hàng Số

[Người dùng]

Khách hàng

Xem số dư, chuyển khoản, tra cứu giao dịch.

[Hệ thống phần mềm]

Ngân Hàng Số

Cho khách hàng giao dịch trực tuyến.

[Hệ thống ngoài]

Hệ thống lõi (Core Banking)

Nguồn sự thật về tài khoản & giao dịch.

[Hệ thống ngoài]

Dịch vụ Email

Gửi email thông báo giao dịch.

Quản lý tài khoản [HTTPS]Lấy số dư, ghi giao dịch [XML/HTTPS]Gửi email [SMTP]

Còn bức Container cho đội kỹ thuật - lộ các container và công nghệ bên trong; cùng một sự thật, khác độ chi tiết:

Container - bên trong Ngân Hàng Số

[Người dùng]

Khách hàng

Giao dịch trực tuyến.

[Container: React]

Web App

Ngân hàng trên trình duyệt.

[Container: Swift / Kotlin]

Mobile App

App ngân hàng trên điện thoại.

[Container: Java / Spring]

API Application

Cung cấp API cho web & mobile.

[Container: Oracle]

Cơ sở dữ liệu

Lưu đăng nhập, nhật ký giao dịch.

[Container: RabbitMQ]

Hàng đợi tin

Xử lý giao dịch bất đồng bộ.

[Hệ thống ngoài]

Hệ thống lõi (Core Banking)

Tài khoản & giao dịch.

Dùng [HTTPS]Dùng [HTTPS]Gọi [JSON/HTTPS]Gọi [JSON/HTTPS]Đọc/ghi [SQL/TCP]Đẩy giao dịch [AMQP]Lấy số dư [XML/HTTPS]
Kinh doanh, sales, khách hàng, nhà đầu tưSystem Context
Quản lý dự án (PM), tech leadContainer
Lập trình viên trong một containerComponent
Vận hành (ops), hạ tầngDeployment
Kiến trúc sư doanh nghiệpSystem Landscape
Bất kỳ ai cần hiểu một luồng cụ thểDynamic

Không phải luật cứng

Đây là điểm khởi đầu, không phải luật bất biến. Một PM kỹ thuật có thể muốn xem tới Component; một dev mới có thể cần Context trước. Hãy đọc người nghe, đừng đọc bảng một cách máy móc.

Trình bày kiến trúc là kể một câu chuyện, không phải xả hết hình lên màn hình. Vài nguyên tắc giữ người nghe theo kịp:

  • Mở bằng Context: đặt mọi người vào cùng bức tranh lớn trước.
  • Zoom đúng độ sâu khán giả cần, rồi DỪNG - đừng zoom tiếp vì "tiện thể".
  • Một sơ đồ một lúc: nói xong bức này mới sang bức khác.
  • Để câu hỏi của người nghe dẫn bạn zoom sâu hơn, thay vì áp đặt.

Trung thực: "death by diagram"

Đổ tám sơ đồ dày đặc trong mười phút là cách chắc chắn khiến người nghe buông. Ít hơn mà đúng mức luôn thắng nhiều mà sai khán giả. Khi nghi ngờ, lùi về Context.

Đọc từng tình huống và chọn loại sơ đồ hợp nhất để trình bày cho người trong tình huống đó:

🎯 Trình bày cho khán giả này bằng sơ đồ nào?

1/8

Sếp kinh doanh, không rành kỹ thuật, muốn biết hệ thống phục vụ ai và nối với những dịch vụ ngoài nào.

  • Mẹo: hỏi "người này quan tâm câu gì?" rồi chọn sơ đồ trả lời đúng câu đó.
  • Người không kỹ thuật gần như luôn về Context; ops gần như luôn về Deployment.
  • Câu hỏi "chạy theo thứ tự nào" gọi Dynamic; "toàn cảnh tổ chức" gọi Landscape.

Đây chính là lời hứa lớn nhất của C4: giúp bạn nói chuyện kiến trúc với người ngoài đội kỹ thuật. Vài mẹo thực chiến:

  • Dùng từ của họ: với phòng kinh doanh, nói "khách hàng", "đối tác", "dịch vụ" - không nói "endpoint", "schema".
  • Bắt đầu từ Context và xem nét mặt: nếu họ gật, mới cân nhắc zoom; nếu chưa, ở lại Context.
  • Liên hệ tới điều họ quan tâm: chi phí, rủi ro, thời gian - chứ không phải công nghệ thuần.
  • Sẵn sàng zoom khi được hỏi, nhưng đừng tự ý lao xuống Component.

Nhắc lại

Sơ đồ System Context là cây cầu tốt nhất tới các phòng ban khác - nắm chắc nó là bạn đã có công cụ giao tiếp mạnh nhất.

Bạn đã đi hết lý thuyết và công cụ C4: bốn mức, sơ đồ bổ trợ, ký pháp, diagrams as code, và cách giao tiếp. Giờ là lúc ghép tất cả lại.

Bước tiếp theo

Bài cuối là dự án: Mô hình hoá 3 hệ thống - tự dựng mô hình C4 cho ba hệ thống khác nhau rồi trình bày cho "phòng ban".

Câu hỏi thường gặp

Gần như luôn. Context đặt mọi người vào cùng một bức tranh trước khi đi sâu. Kể cả khán giả kỹ thuật cũng hưởng lợi: nó nhắc lại ranh giới hệ thống và các bên liên quan trước khi bàn chi tiết.

Bắt đầu ở Context cho TẤT CẢ cùng hiểu, rồi zoom sâu dần cho những ai cần. Người kinh doanh nắm được phần đầu là đủ; người kỹ thuật theo tiếp xuống Container/Component. Một mô hình phục vụ được cả phòng họp.

Là khi bạn đổ quá nhiều sơ đồ và chi tiết một lúc khiến người nghe ngợp rồi buông. Triệu chứng: chiếu một sơ đồ Component dày đặc cho phòng kinh doanh. Cách chữa: ít sơ đồ hơn, đúng mức hơn, kể chuyện thay vì đổ hình.

Tốt hơn là chọn một, hai bức hợp với người nhận, kèm một dòng dẫn dắt. Gửi cả chục sơ đồ không chú thích thường khiến người nhận không biết bắt đầu từ đâu - và họ sẽ bỏ qua.

Zoom xuống mức kế tiếp ngay tại chỗ - đó chính là sức mạnh của C4: các mức đã có sẵn và khớp nhau. Bạn không bị kẹt vì mọi mức đều là cùng một mô hình ở độ zoom khác nhau.

Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.

Tick những điều em tự tin làm được sau khi học bài này. 0/6

Trả lời vài câu để chắc rằng em đã nắm bài.

Câu 1/3 Điểm: 0

Trình bày cho phòng kinh doanh (không rành kỹ thuật), nên mở đầu bằng sơ đồ nào?

  1. 1

    Chọn sơ đồ theo khán giả

    Làm hết các tình huống trong widget "Trình bày cho khán giả này bằng sơ đồ nào?" ở Bước 4; ghi lại tình huống nào mèo con chọn sai.

    Hoàn thành khi: Trả lời hết; giải thích được vì sao đáp án đúng cho 2 tình huống từng nhầm.

  2. 2

    Bản đồ khán giả

    Cho 5 vai trò: CEO, PM, lập trình viên, kỹ sư vận hành, kiến trúc sư doanh nghiệp. Gán mỗi vai trò với mức/loại sơ đồ hợp nhất, kèm lý do.

    Hoàn thành khi: Đủ 5 vai trò; mỗi vai trò một loại sơ đồ và một câu lý do.

  3. 3

    Kịch bản trình bày 3 phút

    Viết dàn ý trình bày một hệ thống cho nhóm hỗn hợp trong 3 phút: bắt đầu ở đâu, khi nào zoom, dừng ở đâu cho ai.

    Hoàn thành khi: Dàn ý mở đầu bằng Context; nêu rõ điểm zoom sâu và cho ai.

  4. 4

    Dịch cho người không kỹ thuật

    Một đồng nghiệp định chiếu sơ đồ Component cho phòng kinh doanh. Đề xuất nên đổi sang sơ đồ nào và giải thích vì sao.

    Hoàn thành khi: Đề xuất Context (hoặc Container ở mức cao); lý do bám việc khán giả không rành kỹ thuật.

  5. 5

    Tránh death by diagram

    Một buổi họp định chiếu 8 sơ đồ liên tiếp. Đề xuất cắt còn mấy bức và theo thứ tự nào, vì sao.

    Hoàn thành khi: Đề xuất giảm số sơ đồ; có thứ tự (thường mở bằng Context) và lý do.

  6. 6

    Câu hỏi dẫn độ sâu

    Viết 3 câu hỏi mà nếu khán giả đặt ra, mèo con sẽ zoom xuống một mức cụ thể để trả lời.

    Hoàn thành khi: Đủ 3 câu; mỗi câu gắn với mức sơ đồ sẽ dùng để trả lời.