2025-08-01 C4 Model 是什麼

我用你最容易理解的方式來說明 C4 Model 的「容器圖(C4 Container Diagram)」,你馬上就懂,而且能立刻把你的三台 notebook 轉成專業架構圖。


🌟 C4 Model 是什麼?

C4 = 一套畫軟體架構的標準方法,由 4 個層級組成:

層級 名稱 它在畫什麼? 適用對象
C1 System Context 系統與外部的關係 老闆、PM、客戶
C2 Containers(容器圖) 系統的主要「運行單元」 架構師、工程師
C3 Components 每個容器裡的主要模組 工程師
C4 Code 程式碼層級 開發、維運

你現在要的是 C2:容器圖。


🧩 那「容器(Container)」到底是什麼?

👉 不是 Docker!不是 VM!不是 Linux container!

在 C4 裡,Container = 可獨立運行的應用或資料庫

例如:

  • Web App
  • Backend API
  • Mobile App
  • Database
  • Message Queue(Redis)
  • Lambda Function
  • 前端 SPA(Vue)

只要是「獨立運作的東西」,都叫 Container。


🔥 你的專案有哪些 Container?

非常清楚:

✔ 外部使用者

  • LINE Users

✔ Backend Containers(Mac #1)

  • NestJS App(主要後端 API + Webhook + QueueClient)

✔ Frontend Containers(Mac #2)

  • Vue3 Frontend(Vite)(瀏覽器跑的 SPA)

✔ Infra Containers(Lenovo)

  • MySQL Database
  • Redis Queue(Bull Queue)

📌 C4 容器圖會長什麼樣?(簡易版)

我用「你的系統」畫給你(Mermaid 風格):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<pre class="mermaid">flowchart LR

%% 外部
USER(["LINE Users"])

%% Frontend
FE["Vue3 Frontend (SPA)\nVite Build"]

%% Backend
API["NestJS Backend API\nProducts, Orders, Webhook, Queue Client"]

%% Database
DB["MySQL Database\nline_order_db"]

%% Queue
RQ["Redis (Bull Queue)"]

%% Relationships
USER -->|Webhook| API
FE -->|HTTP API| API
API -->|SQL| DB
API -->|Publish/Consume Jobs| RQ</pre>

🧠 容器圖(C2)要表達的重點

1. 有哪些容器(邏輯運作單位)?

  • Vue 前端
  • NestJS 後端
  • MySQL
  • Redis
  • 外部系統(LINE)

2. 容器之間如何互動?

  • LINE → Webhook → NestJS
  • Vue → API → NestJS
  • NestJS → MySQL
  • NestJS → Redis Queue

3. 不用畫 UI、類別、技術細節

只畫:
✔ 容器
✔ 資料流
✔ 相依性


🎯 重點總結(超好懂)

  • C2 = 容器圖 = 整個系統的骨架
  • 用來溝通「有哪些服務、怎麼連、負責什麼」
  • 比你剛畫的 flowchart 更抽象、規則更標準、給架構師看的

🚀 想讓你的架構文件更專業?

我可以幫你接著產生:

✔ 同一套系統的 C1(Context)

✔ C2(Container,你已經開始了)

✔ C3(NestJS 分成 Products / Orders / Webhook / Queue 的 Component Diagram)

✔ C4(程式碼層級)

你要繼續畫 C1 還是進 C2 完整版?