優秀架構師必須掌握的架構思維

2021-09-07 19:38:08 字數 1848 閱讀 8039

如果說架構的本質是管理複雜性,那麼抽象、分層、分治和演化思維是我們工程師/架構師應對和管理複雜性的四種最基本**。

1、抽象思維

抽象其實是這樣定義的:

對某種事物進行簡化表示或描述的過程,抽象讓我們關注要素,隱藏額外細節。

在系統架構和設計中,抽象幫助我們從大處著眼(get our mind about big picture),隱藏細節(temporarily hide details)。抽象能力的強弱,直接決定我們所能解決問題的複雜性和規模大小。

軟體系統架構設計和小朋友搭積木無本質差異,只是解決的問題域和規模不同罷了。架構師先要在大腦中形成抽象概念,然後是子模組分解,然後是依次實現子模組,最後將子模組拼裝組合起來,形成最後系統。所以我常說程式設計和架構設計就是搭積木,優秀的架構師受職業習慣影響,眼睛裡看到的世界都是模組化拼裝組合式的。

2、分層思維

除了抽象,分層也是我們應對和管理複雜性的基本思維**,如下圖,為了構建一套複雜系統,我們把整個系統劃分成若干個層次,每一層專注解決某個領域的問題,並向上提供服務。有些層次是縱向的,它貫穿所有其它層次,稱為共享層。分層也可以認為是抽象的一種方式,將系統抽象分解成若干層次化的模組。

3、分治思維

分而治之(divide and combine或者split and merge)也是應對和管理複雜性的一般性方法,下圖展示乙個分治的思維流程:

對於乙個無法一次解決的大問題,我們會先把大問題分解成若干個子問題,如果子問題還無法直接解決,則繼續分解成子子問題,直到可以直接解決的程度,這個是分解(divide)的過程;然後將子子問題的解組合拼裝成子問題的解,再將子問題的解組合拼裝成原問題的解,這個是組合(combine)的過程。

4、演化思維

社群裡頭經常有人在討論:架構是設計出來的?還是演化出來的?我個人基於十多年的經驗認為,架構既是設計出來的,同時也是演化出來的,對於網際網路系統,基本上可以說是三分設計,七分演化,而且是在設計中演化,在演化中設計,乙個不斷迭代的過程。

在網際網路軟體系統的整個生命週期過程中,前期的設計和開發大致只佔三分,在後面的七分時間裡,架構師需要根據使用者的反饋對架構進行不斷的調整。我認為架構師除了要利用自身的架構設計能力,同時也要學會借助使用者反饋和進化的力量,推動架構的持續演進,這個就是演化式架構思維。

當然一開始的架構設計非常重要,架構定系統基本就成型了,不容馬虎。同時,優秀的架構師深知,能夠不斷應對環境變化的系統,才是有生命力的系統,架構的好壞,很大部分取決於它應對變化的靈活性。所以具有演化式思維的架構師,能夠在一開始設計時就考慮到後續架構的演化特性,並且將靈活應對變化的能力作為架構設計的主要考量。

當前,社群正在興起一種新的架構方法學~演化式架構,微服務架構就是一種典型的演化式架構,它能夠快速響應市場使用者需求的變化,而單塊架構就缺乏這種靈活性。

結論架構的本質是管理複雜性,抽象、分層、分治和演化思維是架構師征服複雜性的四種根本性**。

掌握了抽象、分層、分治和演化這四種基本的**,你可以設計小到乙個類,乙個模組,乙個子系統,或者乙個中型的系統,也可以大到乙個公司的基礎平台架構,微服務架構,技術體系架構,甚至是組織架構,業務架構等等。

架構設計不是靜態的,而是動態演化的。只有能夠不斷應對環境變化的系統,才是有生命力的系統。所以即使你掌握了抽象、分層和分治這三種基本思維,仍然需要演化式思維,在設計的同時,借助反饋和進化的力量推動架構的持續演進。

架構師在關注技術,開發應用的同時,需要定期梳理自己的架構設計思維,積累時間長了,你看待世界事物的方式會發生根本性變化,你會發現我們生活其中的世界,其實也是在抽象、分層、分治和演化的基礎上構建起來的。另外架構設計思維的形成,會對你的系統架構設計能力產生重大影響。可以說對抽象、分層、分治和演化掌握的深度和靈活應用的水平,直接決定架構師所能解決問題域的複雜性和規模大小,是區分普通應用型架構師和平台型/系統型架構師的乙個分水嶺。

架構思維提公升,掌握架構本質

開篇先回到2018年,當時在和乙個大型客戶做中颱 微服務的交流中提到 微服務是一種架構模式,微服務和雲,中颱都不是強耦合的 客戶一位負責人還確認性問了句,也就是說微服務可以不用上雲 當時我給了肯定的回答。時至今日,通過不斷的學習和實踐,對很多東西有了更更深的認識。另外這兩年雲原生開始火起來,那麼是不...

架構師思維

引言 架構師應該關注的點,持續更新中 模組結構 大多數的工程都分為服務端和控制端,這樣的好處顯而易見,比如更新了控制端,服務端不收影響,更新了服務端,控制端不受影響 功能抽象 將專門的功能抽象出來,比如將消耗mq訊息的工程抽象出來,這樣有什麼好處呢,當訊息處理不過來了,可以簡單增加消費mq的模組,不...

架構師之路 架構師思維的培養

公司的cms 綜合賦碼管理系統 是winform的cs架構。這套系統的架構師換了3屆,到現在已經幾年沒有架構師了。本來入職時,崗位目標就是這個 自動化架構師 後來和領導達成共識先爭取成為儲備架構師,因為架構首先是為業務服務的,而工控行業有許多特別的地方,不是普通的軟體技術堆疊就能做出優秀的工控軟體的...