西蒙布朗-C4模型
關於 C4 模型的一些解釋
C4 模型是來自 software architecture for developers 一書的定義,指的是 Context 上下文場景、Container 容器、Component 組件和 Classes 類(或者 Code 代碼),意思指一個軟件架構是由這些模型呈樹形結構組成。
關註代碼仍然是大多數軟件開發生命周期中關註的焦點,這是有一定道理,因為代碼是最終交付。但如果你不得不向別人解釋關於系統是如何工作的,你會從代碼開始解釋嗎?
確實代碼並不能講述系統的整個故事,在缺乏文檔的情況下,人們通常會開始在白板上或紙上用圖框和線條解釋系統的主要構建塊是什麽,它們是如何連接的。而使用 Microsoft Visio, Rational Software Architect 或 Sparx Enterprise Architect 等專業工具又比較復雜。
更好的辦法是在不同的抽象層次創建不同的圖 diagram,一個簡單的圖 diagram 比復雜的圖能夠更有效表達描述。下圖是 C4 模型的示意圖:
-
類 Class: 這是面向對象世界常用, 類是我們系統最小的構建模塊。
-
組件 Component: 一個組件可以認為是由一個或多個類組成的邏輯組,比如一個審計 audit 組件或授權服務能夠用於決定資源的訪問是否被允許,組件典型地由許多協同類組成微服務架構可以認為是一種組件。
-
容器 Container: 一個容器代表組件執行或駐留的地方,這可能是一個 Web 容器或應用服務器,也可以是富客戶端應用或數據庫,容器是做為系統一部分啟動的,容器之間通訊是通過遠程接口如 SOAP web service, RESTful interface, Java RMI, Microsoft WCF, messaging, 等進行, Docker 可以認為是一個這樣的容器。
-
Context/ 系統 System: 一個系統是一個高層次抽象和代表,一個系統由多個單獨的容器組成,比如財務系統,銀行系統或網站系統等。
西蒙布朗-C4模型