架構實戰體會,結合《蔡學镛:架構的5個觀察角度》
架構是結構化的表征,結構重在看 ,會看才能發現其中的别有洞天之美。研究實體結構常常說:“橫看成嶺側成峰,遠近高低各不同”,通過不同的視角,會有不同的表征,如俯視圖、正視圖、側視圖,我們會有抽象思維能力(刻意練習),快速形成空間抽象圖像。
軟體架構也是同樣的思考方式,需要能夠通過多視角觀察,才能體會其門道,才能體會架構之美。在我日常的實戰中,更多的是關注業務架構(需求)——>産品架構(功能、結構、行為)——>技術架構——>組織架構。重點說一下組織架構,基于架構師的職責應該是技能完成好設計,又能靈活利用資源完成架構的落地,是以我在做産品、技術架構的同時,比較喜歡近一步考慮人員結構,如何讓人員的能力與軟體架構的工作形成較好的比對,來順利的完成架構的實作。以上是軟體建設過程的組織架構。随着軟體的建設,軟體與業務相結合,從康威定律的了解,軟體結構會影響組織架構,運作态的軟體一定是與維護組織結構有良好的映射,如果不能建立很好的映射,就會面臨架構的落地困難問題。
在閱讀本文後,對于資料架構、網絡架構我接觸較少,可能是跟項目屬性偏業務更多有所關系,或者我更願意将資料架構和網絡架構放在技術架構中考慮,當然這才建設期資料和網絡是技術的重要組成部分,但是站在業務或者運作态的視角考慮,資料架構一定很重要,站在運維視角考慮,網絡與部署架構則更加重要。由此可得出一個結論,架構有衆多視角,但是更重要的關注什麼視角,取決于你的角色,根據角色(業務、技術、運維……)而選擇觀察關注的側重點。
文章對于架構觀察視角的分類有:鳥瞰架構、剖面架構兩個次元,剖面有可以有橫剖、側剖,鳥瞰相對更加宏觀,更加能表達藍圖,剖面展現内部結構,展現細節,我對微服務架構的了解其實也是類似的思考,微服務=微服務節點+微服務關系,微服務是一個宏觀架構-鳥瞰,節點+關系便是一種圖結構的剖面關系,微服務節點有其功能特性也有其内部剖面結構。同樣對于微服務,其實可以近一步談資料架構、領域設計架構、安全架構、網絡架構等,這些也是微服務在不同視角下的剖面架構。
文章關于應用系統的分層也有所啟發,文章分為:UI、應用、架構、服務、核心、驅動、資料,感覺這個可能是過去架構的最佳實踐,首先按應用層和核心層可以分為應用層包含UI、應用、架構、服務;核心層包含核心、驅動、資料,對于核心業務和資料之間架設的驅動層,可以将業務與資料解耦,而讓驅動層變為可拔插的架構,資料庫這麼多年便是這樣幹的。核心層與應用層的區分可以參看作業系統,核心态和應用态,通過内部接口進行銜接。服務指圍繞一些核心業務的功能封裝,屬于中台性質,一般服務之上是應用,應用是面向業務場景的特性化封裝,但是我們可以在之間架設架構層,可以近一步抽象變化,提升服務适應業務場景的開發效率。相對簡單指頁面層。
以上是結合文章與日常架構工作的一些思考了解,架構談來談去,還是從不同的視角了解結構,以形成準确清晰的結構抽象。
參考文章:蔡學镛:架構的5個觀察角度
https://mp.weixin.qq.com/s/Co-5ZafexBhd1aYSnfEWDw