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