最近看了一些架構方面的帖子,包括京東的、支付寶的,加上之前各種微服務,大平台,彈性化等各種架構詞匯,在大腦里相互沖撞,一時間感覺不知所雲,思維被各種概念牽引着,有點慌亂。當然這不是我想要的狀態,於是運用曾文正公的處世之道:“立足當下,化繁為簡”。回到架構的三個哲學問題:1.何為架構?2.它從哪里來?3.它要到哪里去?回答了這三個問題,就應該能抓住架構的本質,不至於人雲亦雲。當然,這只是一家之言,如果說錯了,希望能指正我。
- 何為架構:與我而言,所謂架構其實是事物與事物之間恰當的關系。這個概念比較大, 我們不妨縮小一點范圍就focus在IT架構領域。我們知道,TOGAF將架構分為業務架構、數據架構、應用架構、技術架構,這四個架構定義從不同的層面和維度解釋了要實現上層企業架構應該具備的架構能力,這里的業務架構是從業務的維度講業務流程、企業組織以及組織下的人員之間的關系;數據架構是從數據維度講企業的數據資產及信息間的結構關系;應用架構是從應用系統的維度講應用系統相互間如何協作以提供服務從而滿足業務流程的系統化(也是講系統間的關系);技術架構是從軟硬件基礎設施維度講它們之間如何組合以提供基本的運算、存儲、網絡能力。
- 當然,對於更一般的架構的認識,或許我們叫它系統架構或軟件架構,指的是定義系統結構、行為、視圖的概念模型的組織結構,包括系統分解的組成部分,它們的關聯性,交互,機制和指導原則。定義比較晦澀,說的直白一點,還是從不同維度看各種能力及其它們之間如何協作以實現該維度的目標。進一步解釋一下,我們通常說系統架構包括邏輯架構、物理架構、開發架構、運行架構、數據架構5個部分。所謂邏輯架構是功能模塊如何划分,功能模塊是啥,滿足功能的能力嘛,如何划分其實還是在將關系嘛。再看物理架構,講的就是物理服務器如何分配以及部署關系,其本質還是在講能力和能力間的協作關系。其他三個架構也是在各自維度講能力及關系。一般來說,系統需要的能力其實就是三種:1面向最終用戶的支撐能力、2面向外部系統的交互能力、3面向數據的處理能力。所以說,架構本質就是這三種能力以及提供提供能力的實體相互間的關系。
- 它從哪里來:從架構的本質可以看到,在不同的維度架構需要提供不同的能力和關系,那是不是可以試着從這個角度看架構的發展過程呢?順便也驗證一下我們對架構的本質是否認知准確。我們知道,系統架構過程大致可以分為三個階段:
- 第一階段是早期系統豎井式的架構,應用和數據交織在一起,無論是從邏輯上還是從物理部署上都是,因為這個時候各維度對能力的需要不是那么強烈,沒有明顯的能力短板,不需要明確區分相互間的關系。但隨着系統壯大復雜,來自硬件的能力以不足以支撐整個維度需要的能力,這就進入第二階段。
- 基於SOA的分布式架構,通過SOA把這種能力水平拆分,好處當然是使得能力可以靈活增減,壞處是這種拆分會給能力間的關系增加復雜度,舉例來說,原來通過內部調用即可滿足的關系由於SOA把能力拆分,現在需要通過網絡調用才能滿足。那么當這種關系復雜度給系統間帶來協作障礙時,我們就需要進入第三階段。
- 第三階段即微服務+大平台架構階段,通過構件大平台來控制這些復雜的關系,不要讓其暴露出去變成不可控的因素。此階段即把業務邏輯分散在微服務中,把所有業務處理中需要的技術能力統一歸置到平台進行管理,平台通過標注化的,約定熟成的協議及通訊方式為上層的微服務們提供固定的服務,並把所有與服務安全、可靠性、監控、服務治理等相關的工作作為平台基礎的能力提供出來。因此這種大平台其實就是通過設定標准和規范來降低關系的復雜度,是通過引入另外的能力和關系來達到的,比如大平台的引入本身就帶來了更為復雜的關系。就像馬路上的紅路燈,雖然通過紅燈停綠燈行等規范來解決交通擁堵的問題,但難道它們就不是造成更大擁堵的原因嗎?
- 它要到哪里去:回答這個問題其實就是回答架構的下一階段,我不是預言家,只是沿着我個人理解的架構發展路線來估測一下。從上面分析的架構路線來看,我們已經通過引入額外的標准規范一定程度上緩解了能力關系的復雜性,只不過這種引入帶來了一定程度上大平台自身的能力挑戰,因此我們可以預見,當需要大平台提供更加強的能力以滿足更復雜關系的管理時,是不是在某一時點上平台自身的能力關系也變得不可控呢?就像馬路上的紅綠燈,想象一下當紅綠燈出現故障時,路況是不是會更加崩潰呢?所以我們回過頭來,還是從IT系統的起源來看,系統是服務於業務的,這一點毋庸置疑,因此架構的發展趨勢一定也是讓業務實現更自由,這種自由其實就是要有載體來負責管理這些關系性,而上面的分析我們發現通過引入外部的能力並非長久之計,那么很自然我們會想到最終的服務器會是這些載體,即將所有與技術相關的成本如協議、調度、服務、通訊、監控、緩存、服務調度等關系都最終龜縮成服務器硬件的基本功能,就像CPU、網絡、存儲能力一樣,這種龜縮不一定完全有硬件服務器廠商來做,可以在驅動層、操作系統層、甚至在操作系統上再抽象出一層,通過這種內置的固化能力關系管理,使得各個維度上的能力真正做到可以按需使用,動態擴展。
也許,架構的未來是沒有架構!