很多企業(yè)都在尋找能夠快速高效構(gòu)建軟件架構(gòu)的指導(dǎo)性思維,而Neal Ford在軟件架構(gòu)領(lǐng)域豐富的經(jīng)驗(yàn)和極具創(chuàng)新性的思維為眾多企業(yè)內(nèi)部的架構(gòu)師和開(kāi)發(fā)者帶來(lái)了全新的思路。作為一家全球性的企業(yè),ThoughtWorks在技術(shù)方面擁有獨(dú)特的全球化視角,而Neal Ford與另外兩位同事Rebecca Parsons和Patrick Kua也正是在全球項(xiàng)目經(jīng)驗(yàn)的積累過(guò)程中得到了演進(jìn)架構(gòu)的概念,于是就有了這本書(shū)。
演進(jìn)式架構(gòu)的出現(xiàn)
演進(jìn)式架構(gòu)的出現(xiàn)有多方面的原因。最主要的一方面在于,在數(shù)字化轉(zhuǎn)型的浪潮下,企業(yè)有推動(dòng)創(chuàng)新業(yè)務(wù)的需求,然而,傳統(tǒng)的企業(yè)軟件固化的業(yè)務(wù)流程在IT層面上是創(chuàng)新的阻礙。
Neal Ford在采訪(fǎng)中表示,ThoughtWorks從技術(shù)的角度出發(fā),認(rèn)為更應(yīng)該照顧企業(yè)真實(shí)的應(yīng)用場(chǎng)景,定制化地開(kāi)發(fā)軟件,或者說(shuō),從定制化的軟件平臺(tái)下開(kāi)發(fā)出獨(dú)特的業(yè)務(wù)模型。這本書(shū)中所說(shuō)演進(jìn)式架構(gòu)并不是要否定原有企業(yè)中常見(jiàn)的成體系的軟件系統(tǒng),而是要把原來(lái)的軟件比如SAP、DMS等應(yīng)用逐步演進(jìn)到微服務(wù)架構(gòu)上,這是演進(jìn)式架構(gòu)主要解決的問(wèn)題。
另一方面是技術(shù)的演進(jìn),主要是微服務(wù)技術(shù)的出現(xiàn)。Neal Ford在采訪(fǎng)中表示,微服務(wù)本身是一種架構(gòu)的模式,或者可以把微服務(wù)視為一種架構(gòu)風(fēng)格,而這種架構(gòu)風(fēng)格正好是在這本書(shū)里面所介紹的演示架構(gòu)的一些原則和實(shí)踐的最佳的體現(xiàn)。
演進(jìn)式架構(gòu)的特點(diǎn)
向?qū)绞荖eal Ford所說(shuō)的演進(jìn)式架構(gòu)的重要特征。向?qū)绞侵府?dāng)開(kāi)發(fā)者想提升系統(tǒng)某一方面的能力的時(shí)候,可以通過(guò)定義適應(yīng)函數(shù)來(lái)明確現(xiàn)在的演進(jìn)方向是不是能想要的,可以量化地展示給開(kāi)發(fā)者現(xiàn)在離目標(biāo)還有多遠(yuǎn)。向?qū)降闹敢@點(diǎn)對(duì)于許多企業(yè),尤其是大型企業(yè)有大規(guī)模架構(gòu)堆棧的時(shí)候尤為難得。
從這些基礎(chǔ)上我們也能看到,演進(jìn)式架構(gòu)相對(duì)于以前的架構(gòu)開(kāi)發(fā)模式以及開(kāi)發(fā)思想并不是跳躍性的突破,其實(shí)是有一定延續(xù)性的。據(jù)Neal Ford介紹,Netflix等大公司已經(jīng)有了演進(jìn)式架構(gòu)的實(shí)踐,在演進(jìn)式架構(gòu)的概念推出之前,更多地是將這些實(shí)踐定義為適應(yīng)性架構(gòu)。
但適應(yīng)性架構(gòu)跟現(xiàn)在的演進(jìn)式架構(gòu)還是有很大區(qū)別的。
Neal解釋說(shuō),適應(yīng)性架構(gòu)的特點(diǎn)是通過(guò)配置系統(tǒng)、或者配置文件來(lái)支撐整個(gè)系統(tǒng),當(dāng)業(yè)務(wù)改變的時(shí)候需要更改配置項(xiàng)即可讓系統(tǒng)適應(yīng)起新業(yè)務(wù)流程,這一時(shí)期的開(kāi)發(fā)和運(yùn)維是完全分開(kāi)的。演進(jìn)式架構(gòu)的設(shè)計(jì)本身就是支持由于新業(yè)務(wù)不斷出現(xiàn)所帶來(lái)的演進(jìn)式問(wèn)題,是建立在持續(xù)集成、持續(xù)交付、DevOps、基礎(chǔ)設(shè)施即代碼的基礎(chǔ)之上的,與原來(lái)的適應(yīng)性架構(gòu)的技術(shù)趨勢(shì)生態(tài)已有很大不同。
適應(yīng)性架構(gòu)要求軟件架構(gòu)本身非常大而全,通過(guò)配置項(xiàng)在已有的基礎(chǔ)上做配置,適應(yīng)性架構(gòu)的本身就很復(fù)雜,所以,構(gòu)建這樣一套系統(tǒng)的成本首先會(huì)很高。而演進(jìn)式架構(gòu)的做法更輕量級(jí),是在當(dāng)需求出現(xiàn)的時(shí)候通過(guò)適應(yīng)函數(shù)來(lái)把握架構(gòu)演進(jìn)的方向,演進(jìn)式架構(gòu)隨著系統(tǒng)和業(yè)務(wù)的增加而變化,而且能夠保證用戶(hù)得到想要的部分,追求性能的得到性能上的優(yōu)化,追求擴(kuò)展性的在擴(kuò)展性方面可以不斷提升。
再簡(jiǎn)單而言,適應(yīng)性架構(gòu)會(huì)做很多詳盡的規(guī)劃和設(shè)計(jì),以至于會(huì)做許多無(wú)用功,演進(jìn)式架構(gòu)更著眼于實(shí)際需求,會(huì)更多地依靠后期持續(xù)反饋來(lái)調(diào)整演進(jìn)方向。
演進(jìn)式架構(gòu)的應(yīng)用、適用與作用
Neal表示,當(dāng)企業(yè)認(rèn)識(shí)到演進(jìn)式架構(gòu)能讓他比競(jìng)爭(zhēng)對(duì)手跑得更快的時(shí)候,一定會(huì)選擇演進(jìn)式架構(gòu)。
如何開(kāi)啟演進(jìn)式架構(gòu)的第一步呢?Neal表示,簡(jiǎn)單的在企業(yè)部署一個(gè)適應(yīng)函數(shù)或者部署一個(gè)架構(gòu)檢查的過(guò)程中其實(shí)就已經(jīng)算是在采用演進(jìn)式架構(gòu)了,但這一技術(shù)層次的變革對(duì)于人和組織都沒(méi)有什么變化,想要充分發(fā)揮演進(jìn)式架構(gòu)的優(yōu)勢(shì),還需要整個(gè)團(tuán)隊(duì)組織架構(gòu)做出變化。組織結(jié)構(gòu)需要支撐敏捷轉(zhuǎn)型,團(tuán)隊(duì)成員需要相對(duì)穩(wěn)定,需要支持DevOps,漸漸發(fā)揮演進(jìn)式架構(gòu)的作用,但剛開(kāi)始的時(shí)候作用并不大,需要一個(gè)漫長(zhǎng)的過(guò)程。
雖然演進(jìn)式架構(gòu)的優(yōu)勢(shì)非常明顯,但Neal表示演進(jìn)式架構(gòu)并不適用于所有企業(yè)用戶(hù)。想要采用演進(jìn)式架構(gòu)的企業(yè)需要一些基礎(chǔ),比如需要有敏捷的開(kāi)發(fā)模型、敏捷的開(kāi)發(fā)方式、持續(xù)交付、DevOps的開(kāi)發(fā)基礎(chǔ)設(shè)施或者是持續(xù)的交付開(kāi)發(fā)實(shí)踐等等,如果沒(méi)有這些基礎(chǔ),那么企業(yè)將很難適應(yīng)演進(jìn)式架構(gòu)。
演進(jìn)式架構(gòu)讓IT架構(gòu)師的角色也發(fā)生了改變。演進(jìn)式架構(gòu)具有向?qū)?,?dāng)架構(gòu)師在思考軟件架構(gòu)設(shè)計(jì)的時(shí)候,由于有了演進(jìn)式架構(gòu)所特有的量化性指標(biāo),能夠更有的放矢。在這樣的情況下,IT架構(gòu)師面對(duì)不斷變化的業(yè)務(wù),主要的工作是去引導(dǎo)不同團(tuán)隊(duì)在做架構(gòu)設(shè)計(jì)中所要遵循的不同原則,而IT架構(gòu)師也在演進(jìn)式架構(gòu)的推動(dòng)下,從架構(gòu)的規(guī)劃管理者變成了教練員。
對(duì)企業(yè)來(lái)說(shuō),演進(jìn)式架構(gòu)能減少因人員變動(dòng)而對(duì)現(xiàn)有IT架構(gòu)持續(xù)演進(jìn)所帶來(lái)的負(fù)面影響??傊?,這種架構(gòu)可以減少企業(yè)對(duì)于特定架構(gòu)師的依賴(lài)。因?yàn)?,演進(jìn)式架構(gòu)把原來(lái)的架構(gòu)設(shè)計(jì)從文檔變成了適應(yīng)函數(shù),適應(yīng)函數(shù)能讓架構(gòu)師清晰地看到當(dāng)前架構(gòu)的特征,并指出演進(jìn)方向,能迅速讓新的架構(gòu)師接任原來(lái)的工作。
在數(shù)字化轉(zhuǎn)型后時(shí)代來(lái)臨的今天,越來(lái)越多的中國(guó)企業(yè)都希望建立自己的企業(yè)架構(gòu)模型。此次來(lái)華,Neal走訪(fǎng)了幾家大型機(jī)構(gòu),他表示,因?yàn)槠髽I(yè)架構(gòu)有復(fù)雜性,所以在選用演進(jìn)式架構(gòu)方面,很多中國(guó)企業(yè)由于缺少部分原始積累反而會(huì)有很大的優(yōu)勢(shì)。