軟件架構C4模型介紹

軟件架構C4模型介紹 「C4 模型」:html

表明上下文(Context)、容器(Container)、組件(Component)代碼(Code)——一系列分層的圖表,能夠用這些圖表來描述不一樣縮放級別的軟件架構,每種圖表都適用於不一樣的受衆。數據庫

c4-overview

爲代碼建立地圖,首先須要一組通用的抽象來建立一種無處不在的語言,用來描述軟件系統的靜態結構。C4 模型使用容器(應用程序、數據存儲、微服務等)、組件代碼來描述一個軟件系統的靜態結構。它還考慮到使用軟件系統的人。服務器

abstractions


示例

第1 層是系統上下文圖,它顯示了正在構建的軟件系統,以及系統與用戶及其餘軟件系統之間的關係。微信

image

第2層是一個容器圖,將軟件系統放大,顯示組成該軟件系統的容器(應用程序、數據存儲、微服務等)。技術決策也是該圖的關鍵部分。如下是互聯網銀行系統的容器圖示例。它顯示了互聯網銀行系統(虛線框)由五個容器組成:服務器端Web 應用程序、客戶端單頁面應用程序、移動應用程序、服務器端API 應用程序和數據庫。網絡

image

第 3 層是組件圖,將單個容器放大,以顯示其中的組件。這些組件映射到代碼庫中的真實抽象(例如一組代碼)。下面是一個虛擬的網上銀行系統的組件圖示例,顯示了 API 應用程序中的一些組件(而不是所有)。架構

image

兩個Spring MVC REST 控制器爲JSON/HTTPS API 提供訪問點運維

第4 層代碼
最後,能夠放大個別組件,以顯示該組件的實現方式。如下是一個虛擬的網上銀行系統的UML 類圖示例
微服務

image

C4 模型沒有預約義任何特定的符號,在這些示例圖中看到的是一個個簡單的符號,適用於白板、紙張、便籤、索引卡片和各類圖表工具。也可使用 UML 做爲符號,並適當使用包、組件和原型。工具

C4 模型是一種在不一樣抽象層次上交流軟件架構的簡單方法,能夠向不一樣的受衆講述不一樣的故事。這也是向軟件開發團隊介紹(一般是從新引入)嚴謹和輕量級建模的一種方式。性能


在JAVA中,有一個工具幫助咱們用代碼驅動測試架構ArchUnit in Java。

相關也有一本書推薦Coding an Architecture Style.



今天先到這兒,但願對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考做用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與我的目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網數據庫架構設計思路
IT基礎架構規劃方案一(網絡系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
Openshift與Kubernetes的區別

若有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注個人微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

做者:Petter Liu
出處:http://www.cnblogs.com/wintersun/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。 該文章也同時發佈在個人獨立博客中-Petter Liu Blog。

相關文章
相關標籤/搜索