重點摘要#
- 架構圖上方塊之間的箭頭(白色空間)往往比方塊本身更重要
- 一條簡單的箭頭背後可能隱藏了超過二十個步驟的複雜互動
- 架構師必須理解連接兩個程式之間的基礎設施層(網卡、防火牆、訊息佇列等)
- 必須明確定義靜態和動態的負載需求,而非只標註協議名稱
詳細內容#
系統由相互依賴的程式組成,我們將這些程式的安排及其關係稱為「架構」。在繪製架構圖時,我們通常用簡單的方塊代表程式或伺服器,並用箭頭連接它們。
箭頭背後的真相#
一條標記為「XML over HTTP」的小箭頭,看似是直接的聯繫,實際上卻不然。兩個方塊之間的白色空間充滿了硬體和軟體元件:
- 網路介面卡、交換器、防火牆
- IDS/IPS 系統
- 訊息佇列或 broker
- XML 轉換引擎、FTP 伺服器
- 海底電纜、幹線
程式 A 和程式 B 之間總會有四到五台電腦在執行封包交換、流量分析、路由和威脅分析等軟體。作為橋接這些程式的架構師,你必須考慮這層基礎設施。
需要回答的關鍵問題#
除了標註協議名稱,架構師還需要定義:
- 預期的請求頻率和回應時間(例如每秒 100 次請求,99.999% 在 250 毫秒內回應)
- 呼叫方過於頻繁時該如何處理?
- 回應超時時呼叫方該怎麼辦?是重試、等待,還是放棄?
- 協議版本不匹配時如何處理?
- 介面的一端暫時消失時怎麼辦?
回答這些問題就是「在白色空間中做工程」的本質。真正的架構挑戰不在方塊內,而在方塊之間。
— By Michael Nygard