如何畫架構圖之C4模型畫法
之前一直看別人畫架構圖,自己畫的很爛,最近看了一點點資料,整理了下,分享出來,希望對別人有幫助,如果有不對的地方歡迎指正。
C4架構圖要解答的問題:
1,爲哪些用戶提供什麼服務? 語境圖
2,完成這個系統使用了哪些服務?容器圖
3,每一個服務是由哪些組件實現的 組件圖
4,實現這個組件需要完成什麼?類圖
語境圖:
意圖:
我們構建的軟件系統是什麼?
誰在使用它
如何融入現有的it系統
結構:
中間畫一個簡單的框圖代表你的系統,周圍是和它相互作用的系統。不去關注細節。
動機:
使語境更明確
從更高的層次展示了正在向已有的IT環境中添加了什麼?
技術和非技術可以當做討論起點的一種更高層次圖標。
牽涉到理解系統間接口的問題時,爲你識別可能需要溝通的人提供一個起點。
舉例:
容器圖
意圖:
幫助解答以下問題:
軟件系統的整體形態
高層次的技術決策
職責在系統如何分佈
容器之間如何相互交流
爲了實現特性,作爲一個開發者,我需要在哪裏寫代碼
結構:
畫一個簡單的框圖展示你的關鍵技術選擇。
容器:
Web服務器
應用服務器
企業服務總線和業務流程編排引擎
sql數據庫
nosql數據庫
其他存儲系統
文件系統
windows服務
獨立/控制檯應用程序
web瀏覽器
cron或其他計劃工作容器
容器,指的是組成軟件系統的邏輯上的可執行文件或過程。每一個容器都可以指定以下 幾項:名稱(邏輯名稱,如web服務器,數據庫),技術選型,職責。
交互:
交互的目的
通信方法
通信方式
協議和端口號
系統邊界
需要有系統邊界
示例圖:
組件圖
意圖:
解釋以下問題:
系統由哪裏組件組成
高層次上,系統如何工作是否清晰
所有組件/服務是否在一個容器中?
結構:
當人們被要求繪製架構圖時,通常會繪製一張展示組成軟件系統的邏輯組件的圖。
除了我們一次只想看一個容器中駐留的組件。也就是說組件圖就是普遍意義上的架構圖。
組件:
一個金融系統風險的解決方案包含的組件:
貿易數據系統導入器
參考數據系統導入器
風險計算器
認證服務
系統驅動者,協調者
審計組件
通知組件
監測服務等
組件是系統的粗粒度結構單元,通過一個或者多個組件實現一個特性。每一個組件,都可以指定:名稱,技術,職責。
交互:
交互的目的
通信方式
示例圖:
基礎設施架構
提供軟件架構和基礎設置架構之間映射的信息。