Categories
程式開發

解讀2019之架構領域全年盤點


2019 年,整個IT 領域發生了許多深刻而又復雜的變化,InfoQ 策劃了“解讀2019”年終技術盤點系列文章,希望能夠給讀者清晰地梳理出IT 領域技術這一年的發展變化,回顧過去,繼續前行。本文是架構篇年終盤點。

背景

在過去的十年時間裡,軟件開發的各個領域裡發生了巨大的變化。雲計算從虛擬機到容器再到雲原生;數據庫從關係型到NoSQL 再到NewSQL;運維從手工運維到DevOps、AIOps……而在相對穩定的架構領域,也經歷了從單體應用到SOA 再到微服務的演化過程。

在固有印象裡,軟件開發領域更新換代最快的當屬前端領域,“別更新了,學不動了”、“前端領域十八個月難度翻一番”,這是前端開發們的自嘲。但在過去的一年中,相對穩定的架構領域同樣發生了巨大的變更,所謂中台、雲原生帶來的雲時代架構,這些對企業技術架構帶來了深切的影響。

過去幾年間,上云成了互聯網企業的主旋律,而到今年,該上雲的互聯網企業基本都已經完成了上雲步驟,傳統企業也在評估著單云多雲混合雲的部署方案。全面雲計算時代已經來臨,與之相匹配的雲時代的架構又該是怎樣的呢?本文試圖梳理過去一年時間裡,架構領域發生的種種變化,為讀者揭示一個軟件架構過去與未來的全貌。

中台

2019 年可以稱得上是中台元年,這一年如雨後春筍般湧現的中台名詞不勝枚舉,業務中台、數據中台、技術中台、算法中台、AI 中台等等讓人目不暇接。一般而言,互聯網企業的“中台”戰略由阿里巴巴首先提出,但中台的思想其實在銀行業、矽谷等都有落地經驗。

阿里的中台是個累積的過程,從 2009 年建立共享事業部開始,幾經曲折,但是一直在積累,直到 2015 年正式發展成中台戰略。阿里目前的中台大約有十幾個共享業務單元,包括用戶中心、商品中心、交易中心等。淘寶、天貓、聚划算等 25 個大型業務應用都是由中台的共享業務單元支持的,共享業務單元則由阿里雲平台支持。

解讀2019之架構領域全年盤點 1

謝純良《阿里巴巴中台技術架構實踐與思考》

無獨有偶,矽谷雖然沒有“中台”一詞,但類似的中台建設實踐早已有之。此前亞馬遜 CTO Werner Vogels 在總結亞馬遜過去多年的軟件開發經驗時曾提到:

為了支持這種新型架構,我們分解了功能層級結構,並將企業組織重新編排為小型自治團隊——小到每次點餐只需要兩份披薩。我們將這些“雙披薩團隊”委派到不同的特定產品、服務或者功能集上,賦予他們對應用程序內特定部分的更多操作權限。這使得我們的開發人員成為產品所有者,並能夠根據自己的決策迅速對個別產品產生影響。

互聯網一直以來的特點就是贏家通吃,只要成功企業推出的前沿概念,盲目追隨者的數量不在少數。阿里巴巴在業務和技術上的成功讓“中台”一詞被業界奉為圭臬,好似軟件開發領域的又一顆銀彈。但軟件開發的歷史規律告訴我們,軟件開發沒有銀彈,有的只是與時俱進、不斷迭代的 IT 架構。

中台出現的歷史背景有很多,但對企業級 IT 而言,解決業務架構的痛點永遠會是其中一個重要原因。

業務架構

業務架構是一個存在二十多年的概念,很多工程師認為業務架構與技術架構相比,缺乏技術含量,對於工程師的能力增長沒有多少幫助。但對於大型科技公司而言,業務架構卻非常重要。它是連接企業戰略和技術實現的橋樑,是連接業務人員與技術人員的橋樑。基礎架構有很多可以復用的通用能力,但業務架構卻是千變萬化需要針對企業自身業務去設計、生長的。

2011 年,Gartner 發布的報告中不無擔心地提到:只有 9% 的企業架構活動是在組織內業務方面的合作下完成的。雖然合作項目的比例有望在 2016 年提高到 30%,有人認為企業架構小組參與度這樣低還是讓人警覺,也使他們處於被業務團隊拋開而獨自做出技術決策的風險之中。

9 年過去了,新的觀點認為,未來每家公司都是科技公司。傳統行業,更多開始將自身業務與新興科技相結合,而在零售、餐飲、出租車等領域,運用的技術直接造就了各大電商、美團、滴滴等科技公司。

在當前的雲時代下,業務架構將變得更加純粹專注、聚焦在業務上。雲時代以前,業務架構要大包大攬,什麼都自己做,但在雲時代下很多基礎的事情可以交給雲來做。除了雲計算給業務架構帶來的改變,中台概念的出現也對業務架構的設計產生了很大影響。一般來說多個業務能夠復用的技術能力,應該放在中台來建設,業務架構直接復用就行,不用重複造輪子。

微服務成了連接業務架構和中台的一個橋樑。

微服務

這些年裡,軟件架構逐漸從 SOA 進化到微服務,很多人認為微服務是一種細粒度的 SOA,在去掉了 SOA 中的 ESB 之後,微服務變得更加靈活、性能更強。 Martin Fowler 曾經總結過微服務實施的前提包括:計算資源的快速分配、基本的監控、快速部署。這基本就是Kubernetes 所起到的主要作用,隨著雲原生計算基金會的壯大,基於Kubernetes 的微服務在社區中的熱度越來越高,也開始有很多公司開始利用這一套技術棧來構建微服務。

伴隨著微服務轉型的浪潮,一個名叫 Service Mesh 的技術走上了微服務的舞台。 2016 年,由開發了 Linkerd 的 Buoyant 公司提出。 Service Mesh 的出現,極大地補充了 Kubernetes 生態的微服務選型,再加上 CNCF 的一些開源項目,基於 k8s 的微服務技術棧基本就完善了。 2018 年 Istio 1.0 發布,更是為這股浪潮加了一把火,未來的微服務將是 Kubernetes 和 Service Mesh 的天下。

憑藉著 Kubernetes 和 Service Mesh 的雙劍合併,微服務逐漸走向了巔峰,但此時它的挑戰者 Serverless 已經出現。

Serverless 或者說FaaS 最開始只是AWS 推出的一個功能,但現在業界已經有人將其看作微服務的進化,因為其內含的Function 可以視為更小的、原子化的服務,天然地契合微服務的一些理念。

解讀2019之架構領域全年盤點 2

(許曉斌 《從微服務到 FaaS》)

但目前而言,Serverless 即便在阿里、騰訊等大公司,也仍舊是一個摸索狀態,如何將其融入現有架構業界尚沒有成熟的經驗,也沒有太多落地案例,其自身也存在一些問題需要解決。但毫無疑問,這將是業界關注的重點。就像雲原生一樣,開發者端的關注度還不夠,但在企業端已經是一個流行熱詞。

雲原生

在策劃 12 月 6 日 Archsummit 全球架構師峰會的時候,也和業界技術專家溝通過,如果我們要傳遞未來 3 年能引領技術人關注點的未來架構技術專題的時候,應該如何設置這個專題?專家們一致認為,雲原生是真正的未來架構演化方向。容器 Kubernetes 和雲原生新架構慢慢成為下一代軟件架構新標準,重構整個軟件生命週期,對整個 IT 產業基礎設施帶來改變,成為釋放雲價值和雲能力的最短路徑。而 5G、邊緣計算、IoT 萬物互聯都是具體場景,有垂直化領域內的價值和空間,可以基於雲原生技術體系去構建和支撐。

毫不誇張地講,雲原生會是一個改變軟件應用開發模式的技術,一是節省了基礎設施的部署,二是節省了開發人員的時間和精力,更專注於解決業務層面的問題,雲原生開發也被視為技術人的福音。

以往的單體系統可以在雲端不斷擴展規模,但當某一個功能成為瓶頸時,只能不斷複製整個單體系統從而達到對單一功能擴展的效果,這就浪費了大量的計算資源。從雲單體系統向雲原生架構改造需要採用微服務、Serverless 計算等多種雲原生技術。

記得 Mobvista Tech VP 蔡超分享過,在構建雲原生架構的時候,引入了面向容錯、面向故障恢復的架構和混沌工程,從而構建一個高可用的微服務架構。這些使得系統架構更加具有彈性,從而可以更好利用雲端的高彈性資源,而高彈性計算資源往往具有更好的價格優勢。

反應式架構

國內最早探索這一架構模式的是淘寶網,因為他們遇到了“同步等待造成資源浪費、無法實現純業務依賴並發、響應時間累積導致連鎖反應”等問題。經過調研,淘寶架構團隊認為使用反應式架構是當前可行的一個方案。原因包括,Java 8 已經逐漸普及,且包含對Lambda 的支持;同時Reactive 相關的業務框架在業界已有成熟的實現,RxJava 已經廣泛在大小公司中應用;最後,包括Java 9(引入Reactive Sreams 規範API)、Spring 5(引入Reactor/WebFlux)、Spring Boot 2 都開始擁抱Reactive,說明反應式編程的確是趨勢。

整個方案對業務架構的升級主要包括編程框架、中間件,以及業務方的升級。中間件的升級,包括服務框架(RPC)、網關、緩存、消息(MQ)、DB(JDBC)、限流組件、分佈式跟踪系統、移動端 Rx 框架。改造後的架構如圖:

解讀2019之架構領域全年盤點 3

落地反應式架構,需要做哪些準備呢?之前工程師主要使用同步式的思維寫程序,突然要換成以流的方式編寫,所以說,實施反應式架構的難點主要在於工程師的思維轉換。另外,要做到全面異步化,組織必須從上到下全力支持。同時,要讓業務方有動力去做異步化的改造,需要讓他們認識到這麼做的好處。

前端

2019 年,發展比較成熟的前端領域技術包括小程序、Serverless、Native、RN、前端中台、容器化等。移動開發方面,各大廠商不斷追求通過各種方式改進研發效率。一方面,使用跨平台、動態化的技術,可以有效的減少研發成本,快速在線試錯;另一方面,通過工程化的手段,通過優化架構,實現業務隔離,減少團隊間的影響。

由於跨平台、動態化的開發技術帶來價值越來越突出,已經佔據了常規開發的大部分空間。對於更加細分的場景(高性能、強體驗),以及新交互(AR、VR、移動 AI)的落地應用,Native 開發仍然扮演著統治者的角色。

今年另一個技術趨勢是將”小程序”技術引入自家App,可以實現業務的跨App 復用,從而實現1 次開發,2(iOS + Android) * N (N 個App ) + 1(微信)次復用的效果。 7 月在深圳 ArchSummit 會議上,阿里專家彭偉春分享瞭如何跨越生態實現監控小程序,去哪兒網的技術專家司徒正美分享了跨端小程序開發內容。

工程化的發展,一方面依賴於對前端架構的系統性規劃和建設,另一方也有新技術來推進發展。比如 Serverless 新技術同樣也能帶來工程效率的大幅提升,它可以有效降低發布和運維的複雜度,通過自動化的管理方式平衡資源與成本。

AI、模式識別等技術為提升研發、運維效率帶來了新的思路,類似UI to code 的產品現階段已經取得了不錯的進展,未來某一天,一些基本的開發工作可能會被越來越智能化的工具所取代。

在未來3 年,前端領域交互方式上可能會出現革命性的進化:新型硬件設備、更智能的如語音交互方式、全新的操作界面(腦機接口等);其次是跨平台技術廣泛應用:伴隨新系統的發展(例,Fuchsia、鴻蒙),跨平台技術(語言、開發框架、開發工具)大幅降低多平台開發的成本。

而那對於中小型互聯網企業,在前端技術選型上要優先考慮動態化、跨平台技術:可以有效降低研發成本,縮短研發週期,使業務訴求能夠得到快速驗證。

寫在最後

Gartner 每年都會發布一份技術炒作週期的研究報告,提出他們認為未來值得關注的技術趨勢。許多人認為技術炒作週期的中文譯名不太妥當,筆者卻認為恰到好處。在當下的中文 IT 圈,關於中台、Service Mesh、雲原生的炒作力度不可謂不大。

但回顧過去二十年Gartner 的技術炒作週期報告,你會發現:人們的預測能力非常差,預測即打臉;曇花一現的技術非常多;許多技術都死掉了……但同樣的,仍舊有一些技術一直在成熟的過程中,許多成熟技術在持續取得進步,今天回看過去十年、二十年的技術發展,你才會深刻地認識到,原來技術從真正意義上地改變了世界。

而對於技術而言,IT 架構是支撐其高速發展的根本,單個技術的力量是有限的,只有組合在一起,才能產生沛然莫之能禦的力量。軟件的顛覆式創新,一定是在硬件支持的基礎上,隨著現有的軟件架構對現有硬件能力的挖掘,再發生顛覆的可能性已經較小了。但對於身處技術變革洪流中的開發者本身而言,仍舊不可輕視,了解架構發展的現在與未來,才能更好地在諸般變化中找到本源,處變不驚。


今年底最後一場面向架構師、CTO 級別的Archsummit 全球架構師峰會(北京站),來自 Google、Netflix、阿里、美團、滴滴的技術專家們將分享分享推薦系統研究、AI、算法、數據中台、微服務架構、金融技術、雲原生、業務架構等技術內容。點擊官網了解會議日程。參會聯繫票務經理灰灰 15600537884(同微信)