透過Diagrams as Code來驅動資訊架構圖標準

繪製硬體或軟體架構圖在組織中,最難的點就是要如何讓大家風格及語言一致。

也許透過繪製標準等,可以達到一定的成效。

但,不能就這樣滿足了。

傳統的系統或是軟體架構,可以透過一些架構圖繪製工具來達到效益,但當微服務時代時,應用這些UI 工具就會發現整個圖表重重交錯且牽一髮動全身,當要異動時發現太難就很容易停在該版本而變成蚊子館。

Diagrams as Code (DaC) 方案就是在於可以透過程式碼(YAML、DSL等都有)的方式來進行架構圖的繪製,並也因為as code 的原因,可透過Git等版控方式來進行歷程記錄演進,避免資料不同步而衍生的溝通障礙。

另外可以參考 IcePanel 大神的文章:

Top 7 diagrams as code tools for software architecture | by IcePanel | Medium

常用的架構圖標準推動進程

  1. 建立架構圖繪製標準,初期還是透過人工繪製為主
    • 定義使用者關聯場域(例如:資料中心、外部顧客環境、內部辦公環境等,建議以建築物或區域為標準)
    • 定義使用者類型(例如:外部顧客、IT維護人員、業務操作人員等)
    • 於場域區塊中放入設備資訊(例如:Web、AP、DB Server等)
    • 各設備資訊間的串接協定(例如:HTTPS、SMB、SSH等)
    • 各設備資訊的節點數量(例如:Web Server 放了5台做NLB等)
    • 定義各設備資訊間的傳遞內容(選用,但如呈現可讓架構資訊更為透明)
    • 標示各設備存放的網路區域(選用,如企業有做網段Zone區隔才會用到)
  2. 資訊人員透過Diagrams as Code (DaC)的方式,讓產出的架構圖產出物能風格且標準一致
  3. 讓使用者透過頁面進行業務情境編輯,產出初級架構圖後供資訊人員做微調修改
    • 情境如:業務分析人員於表單中選擇情境 “A系統提供外部顧客服務”、”預計TPS 10000″等
    • 備註:這邊應該會有一段時間的磨合時期
  4. 進展到成熟的架構圖後,就可以在搭配IaC 等進行資源建置,甚至連動Threat Modeling 或是Loading Test 等來驗證架構。

Diagrams 是一個我很愛的一個工具(圖表 ·圖表即代碼 (mingrammer.com)

( 以下為官方範例,包含對於icon 等標準,都可一併定義完成且去呼叫應用)

from diagrams import Cluster, Diagram
from diagrams.k8s.compute import Pod, StatefulSet
from diagrams.k8s.network import Service
from diagrams.k8s.storage import PV, PVC, StorageClass

with Diagram("Stateful Architecture", show=False):
    with Cluster("Apps"):
        svc = Service("svc")
        sts = StatefulSet("sts")

        apps = []
        for _ in range(3):
            pod = Pod("pod")
            pvc = PVC("pvc")
            pod - sts - pvc
            apps.append(svc >> pod >> pvc)

    apps << PV("pv") << StorageClass("sc")

歸根究底,資訊架構的透明化,才能有助於前期規劃及分析討論。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *