InfoQ趨勢報告:架構和設計(2019年1月)

關鍵要點:

  • 我們看到了“演化式架構”設計需求的增長,這種架構建立在可替換性設計和關注“膠水”組件的基礎之上。演化式架構支持功能性和跨功能性需求和約束的未來變化。

  • “微服務”架構可能會進入晚期大衆階段,但與“正確設計分佈式系統”相關的主題以及反應式和容錯式設計將越來越靠近採用曲線。

  • 我們預測有些架構主題永遠不會轉移到早期大衆或晚期大衆階段,但它們當中有一些高效的針對特定用例的模式,如基於事件溯源/CQRS或基於Actor模型的系統。

  • 我們看到“架構師”這個角色越來越多地偏向於技術領導力、架構模式識別和框架意識以及橫切關注點設計。

  • 雖然我們認爲“serverless”這個術語有點含糊不清,但我們很欣賞serverless將重點放在設計事件驅動的系統以及自動消除某些平臺問題的可能性上。

InfoQ和QCon都關注處於“創新者、早期採用者和早期大衆”階段的主題。我們嘗試找出符合Geoffrey Moore所謂的早期市場的想法。早期市場“客戶羣由技術愛好者和有遠見的人組成,他們希望走在機遇前面,解決迫在眉睫的問題”。我們也在尋找可能會“跨越鴻溝”以便得到更廣泛採用的想法。值得一提的是,技術在採用曲線上的確切位置可能會有所不同。例如,灣區公司目前廣泛採用微服務架構,但在其他地方可能不是這種情況,而且對他們來說採用微服務也許不太合適。

本文概述了我們對當前“架構和設計”領域的看法,這個領域側重於基礎設施模式、技術框架模式的實現,以及軟件架構師必須掌握的設計流程和技能。

從上次評審這個主題以來發生的顯著變化是“微服務”已進入到後期大衆。同時,根據我們內部的討論,與“正確設計分佈式系統”相關的主題以及反應式和容錯式設計離採用曲線已經不遠了。在Gartner炒作週期中,微服務可能正在接近“幻滅低谷”的底部。

我們預測,有些架構主題永遠不會沿着採用曲線走向早期大衆或晚期大衆,但它們當中包含了幾種高效的架構模式——例如基於事件溯源/CQRS或基於Actor模型的系統——可以爲某些組織和業務問題提供高效的解決方案。

雖然我們認爲“serverless”這個術語有點含糊不清,但我們很欣賞serverless將重點放在設計模塊化、事件驅動的系統以及自動化一些底層操作平臺的可能性上。我們還看到了圍繞演化式架構的討論,演化式架構將爲需求和約束的未來變化提供支持。

除了技術技能(如架構模式識別和框架意識)和處理橫切關注點設計的能力,我們看到“架構師”這個角色正在變得更加專注於軟技能,例如技術領導力。

下圖是2018年下半年的趨勢圖,2019版位於文章的開頭。

以下是InfoQ的三位架構和設計(AD)主題編輯之間的內部聊天記錄(內容經過輕微的編輯),爲圖中的技術定位提供了更多相關信息。

Daniel Bryant,獨立技術顧問、Datawire產品架構師、InfoQ新聞經理:

我認爲HTTP2將進入早期採用者階段,而HTTP3則進入創新者階段。GraphQL(可能也包括gRPC)可能會進入早期採用者階段(或創新者?)。我認爲混沌工程應該加入DevOps的行列。微服務進入晚期大衆,BDD、DDD和TDD也是。

我很想看到“演化式架構”出現在某個地方——可能是早期採用者?那麼“架構師即技術領導者”(強調角色的非技術演變)呢?

我很想聽聽你們的想法,我們是否需要移動、添加或刪除某些主題?

Jan Stenberg,IT顧問,在.Net/C#和JVM/Java方面擁有超過25年的經驗:

我認爲AD在某種程度上與InfoQ報道的其他主題不同。

在AD方面,我們沒有新的或更新的架構常規基礎。相反,由於新的工具、框架或智能架構的出現,已有的想法會再次流行起來,並且可能被包裝和品牌化。

有一些領域可以被納入到兩個隊列中。從高層面來看,它們可以被納入到AD中,而技術性部分則應該被納入到另一個隊列。我認爲serverless就是這樣的一個例子,從高層面來看,它是AD的一個重要領域,而技術性部分則屬於雲隊列。微前端和類似的技術則是另外一個例子,它應該屬於AD還是HTML5和JavaScript?

我認爲有一些領域或架構永遠不會出現在早期大衆或晚期大衆階段,但它們當中卻有一些我最喜歡的架構,比如基於事件溯源/CQRS或基於Actor模型的系統。我認爲,在可預見的未來,它們將是少數人使用的利基架構。我不確定我們應該如何看待這些主題,或許當架構師和開發人員不再談論它們時,它們就會消失?

以下是我對AD未來的看法(或許我希望這樣):

serverless。去年我聽過這方面的演講,它們給我的印象是這一領域將越來越自動化,底層基礎設施的工作量將越來越少。

工作流平臺(如Camunda)。我認爲它們對於具有複雜業務邏輯的微服務或分佈式系統來說非常重要。

事件溯源/CQRS。我希望它會變得更加主流,可能會進入早期採用者或早期大衆階段。

事件驅動的架構,進入早期採用者或早期大衆階段。

Actor模型/反應式。去年我和Vaughn Vernon討論了這件事,他認爲有一天它們會成爲主流,但我對此持懷疑態度。

演化式架構很有趣,我認爲它進入早期採用者階段是對的。

混沌工程。是的,它應該屬於DevOps,從AD角度討論這個主題可能是一個例外。

GraphQL和類似的工具應該屬於創新者或早期採用者,它將取代REST。

架構師即技術領導者。我在家中與各種各樣的架構師會面,他們大部分人的主要工作是讓商業/政府領域專家瞭解他們自己的領域,所以架構師更應該被納入到敏捷隊列中?

微服務進入晚期大衆。我認爲微服務很快將成爲“今天的SOA”。很多人用對了,也有很多人將它實現成了分佈式單體。

DDD進入晚期大衆,但我希望它仍然會是InfoQ的一個有趣的主題。

BDD進入晚期大衆,或“晚期少數派”。

關於TDD,仍然或多或少會有一些討論。單元測試或黑盒測試或者其他,但至少會進入晚期大衆。

當我在日常生活中(不是在技術大會和類似的活動中)遇到架構師、開發人員和領域專家時,我意識到,我們在這裏討論的很多概念對於他們來說是未知或非常彌散的,這也使得他們很難看到InfoQ的好處。大約兩年前,我在開發者大會(應該是在加拿大)上聽過一個演講,Vaughn Vernon問有多少人對DDD有所瞭解,大約有一半的觀衆舉起了手。

當我開始成爲InfoQ編輯時,我寫了一些有關框架和庫的文章,我認爲這些框架和庫新增的功能可能會影響架構,但隨着時間的推移,我寫的東西越來越關注有趣的博文和演示文稿上,只有一小部分是關於與特定架構密切相關的框架,如Axon、Akka。

在QCon大會期間進行這種討論會很棒。

Charles Humble,InfoQ主編:

我和Vaughn Vernon都認爲Actor模型很可能會成爲主流——無論是直接地還是通過消息傳遞來實現。在JVM領域,Akka在這方面做得很好,而在金融領域,基於消息傳遞的系統長期以來一直是實現Actor模型的一種流行的方式。

Actor似乎很容易掌握和理解,也是處理大規模並行工作的一種很好的方法。我希望看到在Pony之上構建基於Actor模型的現代系統,併成爲一個榜樣,但我不得不說,我個人認爲這不太可能。

關於演化式架構,Martin Fowler去年在播客上談到了這個問題。我很期待Thoughtworks的這本書

Thomas Betts,IHS Markit首席工程師和InfoQ Architecture Queue負責人:

從高層面來看,我同意Daniel的大部分觀點。Jan是對的,一些架構模式順着圖中的趨勢自然演進,而其他一些則可能永遠不會超過早期採用者階段,因爲它們並不會被廣泛採用。

有時候,我會對AD與InfoQ其他主題之間的重疊部分感到困惑,尤其是文化與方法論(CM)。我想這與康威定律有關。架構的很多內容都歸結爲通信——進入和離開系統的外部通信點是什麼?內部服務是如何相互通信的?如何保存和訪問數據?

在很多方面,公司解決這些問題的方式以及他們可以選擇的選項將基於它們在AD和CM採用生命週期曲線上的位置。我認爲AD是這個等式的技術端,而CM是非技術端,但這樣的比喻似乎過於簡單化了。此外,技術實現可能應該屬於開發和/或語言隊列。AD處於兩者之間的軟弱處,處理橫切面關注點,爲如何實現系統提供指導。

我想添加一些具體的討論點。

serverless——雖然我個人不喜歡這個術語,因爲它似乎沒有任何特定的含義,它或許應該在早期採用者階段。

反應式——可能應該屬於早期採用者。我認爲反應式架構會變得更加普遍,因爲開發人員越來越熟悉反應式編程,特別是在使用JavaScript時。

DDD——雖然DDD本身可能會進入晚期大衆,但仍然會有很多與DDD密切相關的衍生想法,這些想法會在創新者或早期採用者中。例如,事件溯源可以進入早期採用者或早期大衆。但是,我不認爲很多子主題應該被包含在AD主題圖中。

微服務——與“serverless”一樣,它是一個容易被濫用或誤解的術語。我認爲隨着它被廣泛採用,將進入晚期大衆,但可能在分佈式架構方面處於早期採用者階段。

分佈式系統——我認爲把它放在主題圖中並不合適,因爲這個概念太寬泛了。但我希望我們在談論系統設計時可以考慮到分佈式。像反應式和容錯這樣的想法對於構建健壯的分佈式系統來說至關重要,而它們在單體系統中可能沒有那麼重要。這就是爲什麼要在AD主題圖中加入混沌工程。

我完全支持在QCon大會上討論這些話題!

關於作者

Thomas Betts是IHS Markit的首席軟件工程師,擁有20年的專業軟件開發經驗。他一直致力於提供令客戶滿意的軟件解決方案。他曾在多個行業工作,包括零售、金融、醫療、國防和旅遊。Thomas與妻子和兒子住在丹佛,他們喜歡徒步旅行,也喜歡探索美麗的科羅拉多州。

Daniel Bryant正在引領組織和技術變革。他目前的工作包括通過引入更好的需求收集和規劃技術來實現組織敏捷性,重點關注敏捷開發中的架構相關性,以及促進持續集成/交付。Daniel目前專注於“DevOps”工具、雲/容器平臺和微服務實現。他還是倫敦Java社區(LJC)的負責人,爲多個開源項目做出貢獻,爲InfoQ、DZone和Voxxed等知名技術網站撰寫文章,並定期出席QCon、JavaOne和Devoxx等國際性會議。

Charles Humble於2014年3月接任InfoQ.com的主編,指導我們的內容創作,包括新聞、文章、書籍、視頻演示和訪談。在擔任InfoQ的全職工作之前,Charles負責我們的Java報道,並擔任PRPi諮詢公司的首席技術官,PRPi諮詢公司是一家名譽研究公司,於2012年7月被普華永道收購。他全面負責PRPi公司內部使用的定製軟件的開發。他在企業軟件領域工作了大約20年,曾經是開發人員、架構師和開發經理。在業餘時間,他爲Twofish創作音樂,首張專輯於2014年2月發行,並儘可能多地與妻子和孩子在一起度過。

Jan Stenberg在瑞典北部的一名IT顧問,工作超過25年,在.Net/C#和JVM/Java方面有着豐富的經驗。他的經驗範圍從大型分佈式和基於服務的系統到基於Web和富客戶端應用程序,再到硬件相關的軟件。

查看英文原文https://www.infoq.com/articles/architecture-trends-2019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章