軟件架構C4模型介紹 “C4 模型”:
代表上下文(Context)、容器(Container)、組件(Component)和代碼(Code)——一系列分層的圖表,可以用這些圖表來描述不同縮放級別的軟件架構,每種圖表都適用於不同的受眾。
為代碼創建地圖,首先需要一組通用的抽象來創建一種無處不在的語言,用來描述軟件系統的靜態結構。C4 模型使用容器(應用程序、數據存儲、微服務等)、組件和代碼來描述一個軟件系統的靜態結構。它還考慮到使用軟件系統的人。
示例
第1 層是系統上下文圖,它顯示了正在構建的軟件系統,以及系統與用戶及其他軟件系統之間的關系。
第2層是一個容器圖,將軟件系統放大,顯示組成該軟件系統的容器(應用程序、數據存儲、微服務等)。技術決策也是該圖的關鍵部分。以下是互聯網銀行系統的容器圖示例。它顯示了互聯網銀行系統(虛線框)由五個容器組成:服務器端Web 應用程序、客戶端單頁面應用程序、移動應用程序、服務器端API 應用程序和數據庫。
第 3 層是組件圖,將單個容器放大,以顯示其中的組件。這些組件映射到代碼庫中的真實抽象(例如一組代碼)。下面是一個虛擬的網上銀行系統的組件圖示例,顯示了 API 應用程序中的一些組件(而不是全部)。
兩個Spring MVC REST 控制器為JSON/HTTPS API 提供訪問點
第4 層代碼
最后,可以放大個別組件,以顯示該組件的實現方式。以下是一個虛擬的網上銀行系統的UML 類圖示例
C4 模型沒有預定義任何特定的符號,在這些示例圖中看到的是一個個簡單的符號,適用於白板、紙張、便簽、索引卡片和各種圖表工具。也可以使用 UML 作為符號,並適當使用包、組件和原型。
C4 模型是一種在不同抽象層次上交流軟件架構的簡單方法,可以向不同的受眾講述不同的故事。這也是向軟件開發團隊介紹(通常是重新引入)嚴謹和輕量級建模的一種方式。
在JAVA中,有一個工具幫助我們用代碼驅動測試架構ArchUnit in Java。
相關也有一本書推薦Coding an Architecture Style.
今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管理,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平台的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計划
構建高效的研發與自動化運維
某大型電商雲平台實踐
互聯網數據庫架構設計思路
IT基礎架構規划方案一(網絡系統規划)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之采購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
Openshift與Kubernetes的區別
如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發布在我的獨立博客中-Petter Liu Blog。