瞻新資訊|網站設計、APP開發、UI/UX設計、LINE Bot開發

男子在辦公室指著筆電螢幕上的系統架構圖方塊與箭頭,向對面的男子解說;聽者手托下巴露出困惑但認真思考的表情,上方對話框寫著「這些方塊箭頭,到底在畫什麼?」

系統架構圖是什麼?常見類型、C4模型與看懂的方法

作者|瞻新資訊 張安邦執行長(台大醫工背景・十年以上IT服務公司創辦人)

拿到一份系統架構圖,卻看不懂上面那些方塊跟箭頭在講什麼——這是很多非技術背景的主管、老闆在跟開發團隊溝通時常遇到的狀況。系統架構圖不是畫給工程師自己爽的技術文件,而是讓不同角色(老闆、PM、工程師、維運)能站在同一個理解基礎上溝通系統長什麼樣子的工具。

這篇文章把系統架構圖講清楚:常見的類型有哪些、現代業界常用的C4模型怎麼分層、常見的架構模式(單體、分層、微服務)差在哪,以及怎麼看懂一份架構圖。

系統架構圖是什麼?為什麼不能省略這一步

系統架構圖是用視覺化的方式,呈現一個系統由哪些部分組成、這些部分之間怎麼互動與依賴的圖表。它的價值不在於畫得多精美,而在於能不能讓不同角色快速對齊理解:老闆看得懂系統大致的樣貌與邊界、PM看得懂各模組之間的關係好規劃時程、工程師看得懂實作細節、維運人員看得懂系統部署在哪裡、怎麼串接。

跳過架構圖直接動手開發,常見的後果是團隊各自對系統的理解不一致,等到開發到一半才發現彼此想的不是同一回事,這時候要修正的成本遠比一開始花時間對齊架構圖高得多。

系統架構圖的常見類型

「系統架構圖」其實是一個統稱,實務上依照要呈現的內容不同,會用到不同的圖表類型:

  • 系統架構圖/脈絡圖:呈現系統的整體樣貌、邊界,以及跟外部系統、使用者的互動關係,通常給較不熟悉技術細節的關係人看
  • UML圖:統一塑模語言,是一套標準化的塑模符號,涵蓋結構圖形(類別圖、元件圖、部署圖等)與行為圖形(使用案例圖、活動圖、狀態機圖等),較常用在工程團隊內部的技術溝通
  • 資料流程圖(Data Flow Diagram):專門描述資料在系統裡怎麼流動、怎麼進出系統、資料儲存在哪裡,適合釐清資料處理邏輯
  • 網路拓撲圖:呈現系統的實體或虛擬網路部署方式,例如主機、伺服器、防火牆之間怎麼連接,較常用在維運與資安情境

不同類型的圖表解決的問題不一樣,實務上一個系統開發專案常常會需要用到不只一種圖表,各自對應不同的溝通對象。

C4模型:現代系統架構圖的分層畫法

近年業界越來越常見的做法,是用「C4模型」來畫系統架構圖。這套方法由Simon Brown在2006到2011年間提出,設計初衷是取代UML這類相對笨重的建模方式,用更簡單、更有彈性的方式記錄系統架構。

C4模型的核心概念是像地圖一樣,分成四個由粗到細的層級:

  1. System Context(系統脈絡圖):最頂層的圖,畫出整個系統的邊界、有哪些使用者會用到這個系統、系統跟外部有哪些其他系統互動。這一層是給完全不懂技術細節的關係人看的,重點是「這個系統跟誰有關係」
  2. Container(容器圖):把系統脈絡圖放大,畫出系統內部的物理結構——每一個「容器」代表一個可以獨立執行或部署的單元,例如網站前端、後端API、資料庫。這一層開始有技術含量,適合PM與工程團隊溝通
  3. Component(元件圖):再放大,畫出某個容器內部由哪些元件組成,通常是工程團隊內部討論設計時使用
  4. Code(程式碼圖):最細的層級,畫出元件內部的程式碼結構,這一層通常由開發工具自動產生,很少需要手動維護

C4模型的一個特色是不強制使用特定的圖形符號或建模語言,方框加箭頭就能表達,門檻低、彈性高,這也是它近年在業界推廣度越來越高的原因之一。

左側畫大方框搭配小人形圖示圍繞標示系統脈絡圖;右側畫多個細小方框搭配密集連接線標示元件圖

常見的系統架構模式:單體、分層、微服務

畫架構圖時,系統本身採用的架構模式也會直接影響圖要怎麼畫。常見的架構模式有:

左側畫大方塊裡塞滿所有功能圖示標示單體式;右側畫多個獨立小方塊用虛線連接標示微服務
架構模式核心概念主要優點主要限制
單體式(Monolithic)介面、商業邏輯、資料存取全部開發成單一應用程式開發初期簡單、部署單純系統變大後難以維護,牽一髮動全身
分層式(Layered)依職責分層(展示層、商業邏輯層、資料層),上層只依賴下一層職責分工清楚,容易理解通常整體仍是單體部署,無法獨立部署單一功能
微服務(Microservices)拆解成多個獨立、可各自部署的服務擴展性好、故障隔離、團隊可各自開發架構複雜度高,需要額外的服務間溝通與維運機制

這裡有個常被搞混的地方:單體式vs微服務講的是「應用程式怎麼被拆分部署」,分層架構講的則是「應用程式內部怎麼分工」,這是兩個不同維度的架構決策,不是互斥的對立選項——一個單體式應用程式內部可以是分層架構,一個微服務裡的每個服務內部也可以各自採用分層架構。

左側畫三層堆疊色塊標示分層架構內部怎麼分工;右側畫多個並排獨立方塊標示單體微服務怎麼拆分部署

看懂架構圖的幾個關鍵符號

多數系統架構圖雖然沒有統一的畫法規範,但常見的視覺慣例大致相通:方框通常代表一個系統、服務或元件;箭頭代表資料流向或呼叫依賴關係,箭頭的方向通常表示「誰呼叫誰」或「資料往哪裡流動」;圓柱形通常用來表示資料庫;虛線框有時用來表示系統的邊界(例如公司內部網路跟外部網路的分界)。看架構圖時,先抓大方向——這張圖是給誰看的(決定它該是C4模型的哪一層)、箭頭在表達依賴還是資料流動,通常就能抓到七八成的重點,不需要每個符號都完全理解才能看懂圖要傳達的意思。

左側畫方框搭配箭頭指向另一個方框標示方框加箭頭;右側畫圓柱形資料庫圖示標示圓柱形代表資料庫

常見的架構圖繪製工具

實務上團隊常用專門的圖表協作工具畫架構圖,例如draw.io、Lucidchart這類工具,能用拖拉方框與箭頭的方式快速產出圖表,也方便團隊共同編輯與版本管理。工具本身的選擇不是重點,重要的是團隊能不能持續維護這份圖,讓它保持跟實際系統同步——一份過時的架構圖,有時候比沒有架構圖更容易誤導人。

系統架構圖什麼時候該畫?誰該看

架構圖不是只有開發階段才需要:專案提案階段,用C4模型的系統脈絡圖層級,能幫助客戶快速理解這個系統大致的樣貌與邊界,不需要陷入技術細節;進入開發階段後,容器圖與元件圖能幫助工程團隊對齊設計,避免各自理解不一致;系統上線之後,維運人員也需要參考架構圖(搭配網路拓撲圖)了解系統實際部署在哪裡、出問題時該往哪裡排查。同一份系統,在不同階段、給不同人看,適合呈現的細節層級並不一樣,這也是為什麼C4模型「由粗到細分層」的設計思路特別實用。

左側畫提案文件搭配簡化雲端與方框示意圖標示提案階段;右側畫工程師在電腦前查看詳細伺服器與網路圖示標示維運階段

動手畫系統架構圖之前,先想清楚這幾件事

要畫一份系統架構圖,建議先想清楚:這張圖主要是給誰看(決定該用哪一層級的細節)、系統本身打算採用什麼架構模式(單體、分層、微服務,或是混合)、以及圖表用途是溝通提案,還是要作為工程團隊長期維護的技術文件。想清楚這些,畫出來的架構圖才能真正發揮讓不同角色對齊理解的作用,而不是變成一份沒人看得懂、也沒人願意維護的過時文件。

系統架構圖看似只是一張圖,但背後反映的是整個系統的設計決策,也是團隊溝通、日後維運的重要基礎。如果還在評估該找哪個團隊協助規劃系統架構,可以參考系統整合商這篇文章。瞻新資訊在協助客戶做系統開發時,會依專案階段規劃合適層級的架構文件,有需要的話歡迎聊聊你的專案需求。

FAQ

系統架構圖是什麼?

系統架構圖是用視覺化方式呈現一個系統由哪些部分組成、彼此之間如何互動與依賴的圖表,目的是讓不同角色(老闆、PM、工程師、維運)能在同一個理解基礎上溝通系統的樣貌。

C4模型是什麼?

C4模型是由Simon Brown在2006到2011年間提出的系統架構圖畫法,分成系統脈絡圖、容器圖、元件圖、程式碼圖四個由粗到細的層級,目的是取代UML等較笨重的建模方式,用更簡單有彈性的方式記錄架構。

系統架構圖一定要用UML畫嗎?

不一定。UML是一套標準化的塑模語言,適合工程團隊內部的技術溝通,但近年C4模型等更簡單的畫法也很常見,不強制使用特定符號,方框加箭頭就能表達,門檻更低。

單體式架構跟微服務架構差在哪?

單體式架構把介面、商業邏輯、資料存取全部開發成單一應用程式;微服務架構則是拆解成多個獨立、可各自部署的服務。單體式部署簡單但難以維護擴展,微服務擴展性好但架構複雜度較高。

分層架構跟微服務是同一回事嗎?

不是。單體vs微服務講的是「應用程式怎麼被拆分部署」,分層架構講的是「應用程式內部怎麼分工」,兩者是不同維度的架構決策,可以同時存在——單體或微服務內部都可以採用分層架構組織程式碼。

什麼時候該畫系統架構圖?

架構圖在專案提案階段、開發階段、上線後維運階段都有各自的用途,只是適合呈現的細節層級不同:提案階段適合給非技術關係人看的高層級圖,開發階段需要更細節的容器圖與元件圖,維運階段則需要搭配網路拓撲圖了解實際部署狀況。

張安邦執行長的大頭照,戴細框眼鏡、穿深色西裝搭條紋領帶,手持麥克風在演講場合發言

關於作者|張安邦執行長

台灣大學醫學工程研究所背景,十年以上軟體開發經歷,領軍瞻新資訊有限公司(2010年成立),完成專案200+、涵蓋40~50+個產業。專長:網頁設計、APP開發、UI/UX設計、LINE Bot自動化、系統開發、資訊安全。