01 什麼是演進式架構?
外文技術書翻譯後通常很難了解,此書也不例外,首先,書中對演進式架構的定義就很晦澀 —— 演進式架構是支援跨多個次元進行引導性增量變更的架構。
第一,先多讀幾遍,念順了;
第二,通過拆解關鍵詞,來了解定義。
定義中的關鍵字一:多個次元。
所謂多個次元,指的是架構師不要隻關注技術次元對架構演進的影響,也要關注資料、安全、運維等緯度的變化影響。除此之外,康威也提醒架構師,還應關注團隊之間的協同緯度的變化影響。在現實情況下,一次組織架構的調整,将很大程度影響着架構演進的路徑。
定義中的關鍵字二:增量和引導。
“增量和引導”是演進式架構包含的兩個關鍵特征,其中“增量”表達了架構随時間不斷變化的概念,而“引導”的含義反映了我們期望的架構演進方向。
回到生物學的隐喻,演進是這樣一個過程:建立一個适用的并能在其所處的不斷變化的環境中持續運作的系統。
了解了引導的含義,那麼“引導”引導的是什麼?引導的原則又是什麼?
我們知道,安全性、吞吐量、低延遲、故障恢複能力都可以定義為系統的架構特征,由于這些特征有的是互相沖突的,比如安全性與性能。是以,對架構師而言,在架構演進過程中需要評估和權衡這些不同的特征,而所謂引導就是評估這些不同架構特征,讓架構演進中不随着時間而磨損掉這些特征。簡單說,引導就是架構師期望架構具備那些特征。
關于引導的原則,本書引入了進化計算中的概念 —— 适應度函數,讓架構師可以通過适應度函數來解釋什麼方案更好,并用它衡量何時能達到目标,但筆者通讀之後,沒有了解,故不過多闡述。
之後,本書又重點介紹了增量變更、架構耦合對演進式架構的影響,内容圍繞持續傳遞、領域驅動設計、架構演進等方面,内容并不新鮮,故也不做羅列。
02 如何建構可演進的架構
如何建構?本書的邏輯是這樣的。
架構耦合很大程式決定了技術架構的演進能力,清晰解耦的架構易于演進,反之則會妨礙演進。回答如何建構演進式架構,我了解的是從微服務架構開始,後面的内容基本也都是在圍繞着微服務和領域驅動設計再說,有興趣的讀者可以去讀一下本書。