作者 | Tina、薛梁Lucien
采訪嘉賓 | Davide Taibi 博士
編輯 | Tina
我預計未來幾年架構分析将出現質的飛躍,這要歸功于新的 AI 技術。
市場上的新技術層出不窮,但有些新技術隻有在特定情境下才能帶來好處,在其他情況下可能會适得其反。微服務是其中之一。Davide Taibi 博士是芬蘭奧盧大學的教授,長期緻力于研究從單體架構到微服務架構的轉換,以及雲原生系統架構及其中的技術債務的發現與檢測。他深入研究了許多軟體工程案例。在 Davide Taibi 博士參加上海 ArchSummit 大會之際,InfoQ 采訪了他,了解他對目前技術熱點的看法。
InfoQ:從微服務得到明确定義發展到現在,差不多十年了。結合您的演講主題來看,您認為在微服務這個架構領域是否還有炒作行為?
Davide Taibi:微服務的大肆宣傳并未結束。但是,十年前一些企業受此宣傳和炒作的影響轉向微服務,很多情況也隻是盲從競争者的腳步。而如今,大多企業都已對微服務的優劣了如指掌。
在我們看來,這些轉向的企業的一個最大的問題是在開始階段對微服務帶來的好處的過高期待。企業相信微服務可以輕松降低開發成本和維護難度并提升速度和可擴充性。可過了一段時間卻發現微服務的開銷甚至還高于傳統單體架構,而且并不是預設自動規模化。支援高可擴充性也是需要手動采用擴充機制才行。
InfoQ:過去有很多企業選擇了從單體遷移到微服務,看起來是一個單向的發展過程。那麼在您看來,在這十幾年間,架構設計模式有着什麼樣的演進原則,有沒有哪些以前認為是“良好”的架構設計風格在演進中逐漸消失了的?
Davide Taibi:絕大部分的設計模式會逐漸被新的模式取代,就像之前流行的 MVC(模型、視圖和控制器)以及 SOA(面向服務的架構)。微服務可以被看做是一種恰當地實作的面向服務的架構,盡管還是有一些差別。
近些年,新的風口又轉向了無服務方法并引領企業轉向了“納米服務”。但是,試探之後很多企業又選擇退回到微服務,或使用無服務方法來建立微服務。
InfoQ:您有一篇論文,講到您們采訪過很多從單體遷移到微服務案例相關開發人員,雖然遷移前大家無法清楚判斷利弊,但多年後再次回顧這些案例的話,您認為這些遷移都是值得的嗎?
Davide Taibi:基于我們的經驗,向微服務的轉型需要很長時間,一般是幾年。我們了解的執行個體中有一些擁有大型代碼庫的公司花了八年來轉型。其中的優勢一般在于各團隊的高獨立性,而并不是簡單的低開銷低維護成本。在很多執行個體中,轉型都沒得到應有的回報,期待的好處也沒能實作。
InfoQ:您的論文“On the Definition of Microservice Bad Smells”涉及非常多的微服務不良做法,但如果要用幾個大類别來列舉危害性比較大的微服務反模式,您認為會是哪幾類?另外,您能再大概分析說明下造成這個幾個反模式的原因嗎?
Davide Taibi:就我個人而言,最坑的反模式存在于組織中,而非技術之罪。
技術上的反模式很容易修複(如,循環依賴),而解決組織上的問題沒那麼簡單。比如,錯誤的開發團隊分組将團隊按水準功能劃分而不是垂直劃分(分成資料庫團隊、前端團隊、背景團隊)。
另一種組織結構問題可被稱為“微服務貪心(Microservice Greedy)”,指的是開發者對于任何可能的功能都建立新的微服務。他們都沒有檢視是否能重用代碼,甚至确認這個功能是不是已經存在就開始實作了。結果就導緻微服務數量暴漲,結構迅速退化,維護的複雜度和成本也随之激增。
InfoQ:最近谷歌開源了Service Weaver,谷歌稱此架構為子產品化單體(modular monolith),稱其能兼顧單體應用的開發速度,以及微服務的可擴充性、安全性和容錯性。但有人認為這就是一種“分布式單體”。您能解析對比分布式單體與子產品化單體之間的異同嗎?
Davide Taibi:在我看來,“分布式單體”隻是對于“維護不了的分布式系統”的一種誤導性的稱呼。
我堅決同意一個設計優良具有子產品化功能的單體系統維護起來可以很簡單。但主要的問題不是軟體本身而在于組織結構。過大的組織結構将導緻團隊缺少獨立部署的能力。
InfoQ:您如何看待這種子產品化單體方法?它能解決單體和微服務架構的痛點嗎?子產品化單體會成為一種主流發展趨勢嗎?
Davide Taibi:我相信子產品化單體系統已存在有 20 多年了。我并不期待有革命性地變化。我覺得子產品化單體的目标系統要比那些受益于微服務的系統要小一些。
InfoQ:微軟的 Dapr 架構如今也已進入大廠實踐,許多架構師在更多地考慮 Dapr 級别的東西,這是否說明這條路是走得通的?它會影響到微服務技術的未來發展走向嗎?
Davide Taibi:這可能會影響.Net 應用的未來趨勢。不過我覺得現在做預測還是為時尚早。
InfoQ:微服務發展幾乎是伴随着雲服務的,像 Netflix 當年的改造,也是雲+微服務同時進行的,那麼在微服務的發展過程中,您認為微服務的複雜性主要來自哪裡?跟技術債務相關嗎?
Davide Taibi:雲服務其實也僅是一項支援軟體系統開發和運作的技術。不幸的是,其技術負債需要單獨處理。一個值得考量的重要方面是,隻要更多的“可以動”部件(moving parts)被應用到系統中,更高的技術負債将會累積。
InfoQ:雲原生架構也意味着“技術大爆炸”,涉及到了多個方面,開發人員認知負荷很重,如果我們希望自己成為架構師,那我們如何去學習這些知識?企業應該如何去傳承雲原生領域的架構知識和實踐經驗?
Davide Taibi:我認為企業之間應該共享他們的經驗,特别是開始在一些線上授課平台和維基百科收集經驗。
主要的問題是新的技術總會最終應用到市場,軟體架構師應該不停地擴充知識,與時俱進。
InfoQ:對架構的未來發展趨勢,您有怎麼樣的判斷?結合目前的 GPT 的熱點,“架構”是否是最難被 AI 改造的領域?
Davide Taibi:我相信邊緣計算和雲到邊系統會很快成為主流。同時,我期望看到服務網格很快成為焦點。
目前,架構或架構分解可能是最具挑戰性的任務。原因是,在我看來,要指定架構,我們需要用自然語言提出問題,正确解釋需求,并了解系統應該如何組成。
無論如何,我預計未來幾年架構分析将出現質的飛躍,這要歸功于新的 AI 技術,而不僅僅是 GPT。
InfoQ:對于目前并不确定是否要選擇雲原生架構的企業,您有哪些建議?
Davide Taibi:我給一些還不确定時候應用雲原生架構的企業的建議是,真實考量你的需求,你的組織結構,以及公司開發者的經驗。
如果有龐大數量的開發團隊緻力于不同的系統功能,你可以考慮微服務。如果有些功能你需要極限可擴充性,那麼你可以考慮無服務方法。其他的情形都需要準确地考量。
考慮到架構遷移的成本和影響,雇傭有經驗的咨詢顧問是很明智的。他們會提供一個“外來人”的視角在作出重要決定之前對企業和系統進行合理評估。
活動推薦:
上海站 ArchSummit 會議剛結束,我們就已經無縫銜接在準備 7 月 21-22 日在深圳舉辦的 ArchSummit 會議了,會議主題還是會圍繞數字化,架構思維,和架構師成長來展開。如果你想要分享演講話題,可以在這裡送出議題思路:https://jinshuju.net/f/7wUiwn
本文轉載來源:
https://www.infoq.cn/article/TBauHzvPIj4SP8Gg2qy7