---
# System prepended metadata

title: 架構不是從技術開始：C4 Level 1 在做什麼？

---

# 系統架構，很多人其實是從錯的地方開始

很多團隊一開始談系統設計，就直接跳進技術。

討論 API 怎麼設計、資料庫怎麼切、要不要上 Kafka、要不要 microservice。

可是！
**如果大家對「我們到底在做什麼系統」沒有共識，技術討論其實很容易越講越歪。**

這也是為什麼我很喜歡 **C4 Model 的 Level 1（System Context Diagram）**。

它做的事情其實很簡單：
**先把大局講清楚。**

---

## Level 1 其實在回答一個很基本的問題

不是「系統怎麼做」，
而是：

> 這個系統，在整個世界裡面到底在哪裡？

換句話說：

* 它存在於什麼環境？
* 它負責哪一塊能力（Capability）？
* 它跟哪些人、哪些系統互動？

很多人會以為上下文是技術邊界，但其實不是。

上下文比較像是：
**組織怎麼理解自己的業務邊界。**

舉例來說，「電商系統」到底包含什麼？
訂單？會員？金流？物流？

如果團隊對這些事情的理解不一致，後面的架構圖通常會越畫越混亂。

---

## Level 1 的元素其實很少

一張 System Context Diagram 通常只有幾個東西：

**1️⃣ 核心系統**

放在中間，用黑盒（Black box）表示。
這一層不談內部怎麼做。

**2️⃣ 人（Persons）**

誰會用這個系統？
例如消費者、客服、營運人員等等。

**3️⃣ 外部系統**

像是金流服務、物流系統、CRM、或其他公司內部系統。

重點只有一個：

**誰跟誰互動。**

---

## 在這一層，我刻意不談技術

System Context Diagram 只關心兩件事：

* 什麼系統跟什麼系統在溝通
* 中間交換的是什麼資訊

至於 REST、MQ、Event、GraphQL 這些東西，其實都太早了。

當圖上開始出現一堆技術名詞，通常代表你其實已經在畫 Level 2 或 Level 3 了。

---

## 一些實務上我會注意的小地方

畫這類圖時，我會盡量讓它**一眼看懂**：

* 每張圖一定有清楚的標題
* 每個元素都有簡單描述
* 既有系統用灰色，新系統用藍色

我其實不太追求圖很漂亮。
我比較在意的是：

**一個沒參與專案的人，能不能 30 秒內看懂。**

---

## 如果邊界很難畫怎麼辦？

有時候會卡住。

像是你會開始想：

「這個算我們系統的一部分嗎？」
「還是其實是另外一個系統？」

這時候我通常會先畫 **Landscape Diagram**。

它比較像是一張「系統地圖」，
先把整個生態系畫出來，再慢慢決定邊界在哪裡。

---

## 為什麼我覺得 Level 1 很重要？

因為它其實在建立一件很關鍵的事情：

**Shared Mental Model（共同的理解）**

當技術人員、PM、甚至非技術主管
都能看著同一張圖說：「對，我們的系統就是這樣。」

後面的架構討論才會順。

不然很多時候其實只是
**大家腦袋裡有不同版本的系統，但以為自己在討論同一件事。**

---

如果你有在做系統設計，
其實很值得試試先畫一張 **C4 Level 1**。

很多模糊的地方，畫著畫著就會浮出來了。
