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 | <pre class="mermaid">flowchart LR |
🧠 容器圖(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 完整版?