1. 程式人生 > >如何實現一次編碼,到處執行?新一代雲端一體化探索

如何實現一次編碼,到處執行?新一代雲端一體化探索

阿里妹導讀:當前移動網際網路業務研發運維模式,雲與多端互相割裂,有些全棧的探索缺乏成功案例,行業對雲端一體化研發這塊仍是空白,我們要思考:如何能實現 1 個研發支撐雲 + android + iOS 三端的業務快速落地?是否有新的研發運維模式,讓程式設計師迴歸程式?“一次編碼、到處執行”是我們的答案。我們在閒魚專案驗證,原本 60 天的專案時間減少了 20 天,提效 33% 。希望阿里高階技術專家孫棋的分析能夠給大家帶來收穫。

業務研發模式的演進

效率是業務研發運維模式演進核心驅動力

PC 網際網路時代,單體應用包含前後端是最初的研發模式(淘寶經歷開發人員寫 velocity 模板,以及更早的 jsp、asp 頁面)其實質是中心化搭火車的研發模型。

隨著業務發展複雜性快速增加,趕火車的交付模式,極大的限制了業務發展,因此誕生了服務化的拆分,淘寶在 09 年的五彩石專案即基於這樣的背景,微服務是一種軟體架構,這背後更是一種研發模式的變革,從中心化研發模式到分散式的研發模式升級。

在業務分散式研發模式升級的同時,前後端分離研發模式也在同步的演進,從 ajax 到專業前端獨立完成業務閉環,職業分工細化提效。但對前端同學而言,服務端的運維始終是其痛苦的技術門檻,以及在阿里以 Java 語言為基礎的中介軟體生態內,一直沒有很好解決。

進入移動網際網路時代,客戶端同樣也經歷同樣的演進,阿里集團以 atlas 實現了端分散式研發模式。但對比 pc 時代的前後端分離,移動時代又回到了 ajax 模式,端的同學只負責了端,沒有實現業務自閉環。同時移動網際網路帶來了新的挑戰,即跨 android 和 iOS 平臺的問題, React Native、weex 等產品即在這個環境下誕生。

雲端一體輕量級研發模式的核心挑戰

如何讓客戶端同學更往後一步,實現業務落地的閉環能力,同時規避 BFF 層對客戶端同學的在研發、運維以及跨語言面臨集團 Java 技術中介軟體生態,關鍵是:

  • 對業務研發遮蔽程式碼執行環境
  • 跨雲、端多平臺能力

Java 語言最初的成功,“一次編譯,到處執行”是關鍵,在 JVM 層面遮蔽了部分的執行環境;如何向研發提供語言無關的透明化程式碼執行環境是核心挑戰,除了業務程式碼以外的事情全部讓技術平臺託管。

移動網際網路這麼多年雲和端仍是割裂的各自為戰的研發模式,業界也有全棧的探索,但沒有很成功的案例,問題是技術門檻太高,對開發人員即要還要的太多,業務落地的複雜性而言沒有本質的變化,原來 3 個人做的事情,簡單的讓一個人做而已,缺乏一個有效跨平臺能力,尤其是跨雲+端的平臺能力。

研發模式演進的本質:降低技術門檻、跨平臺能力。

“一次編碼,到處執行”

讓開發人員只關注業務邏輯編碼,是研發模式的全新的下一個階段,也是研發模式演進的本質體現。這個階段雲原生代表的技術給了我們很多的輸入,通過容器化技術解耦基礎設施,容器化編排降低了運維複雜性;通過服務網格實現了應用與中介軟體體系的解耦合;不可變基礎設施,支援更高的一致性和可靠性,降低了複雜性;serverless 的理念,技術的演進為研發模式升級提供了新的契機。

GAIA 業務輕量級研發運維模式探索實踐

基於這樣的背景, GAIA 應孕而生,與閒魚、 aplatform 淘系互動平臺兩大業務緊密合作,通過 GAIA 雲端 FaaS 技術能力,重新定義了研發的職責和邊界,讓程式設計師迴歸最初的程式,結合端上的跨平臺實現雲端一體的輕量級業務研發運維模式。
閒魚全新的研發模式如下圖:

進展結果:

  • 閒魚業務落地例項,通過雲端一體化研發模式,使原本 60 天的專案時間,減少了 20 天,提效 33% 。

    • 88 VIP 互動 aplatform ,幾十萬 QPS 業務流量平穩可靠執行,輕量級複合多容器設計模式的集團首次規模化驗證。

GAIA設計理念

通過容器化設計模式,把基礎設施下沉與業務解耦,程式碼執行環境對業務透明化。

輕量級複合多容器設計模式

我們的應用目前都仍是富容器模式,重要的問題是容器職責不單一,造成隔離性以及業務與基礎設施緊密耦合的問題。

容器做為 GAIA 的關鍵,其設計模式進行了革命性的升級,也是集團首次大規模的嘗試。

  • 基於 K8s 的 pod 輕量級複合多容器能力,重新定義了業務與基礎設施的邊界,通過 sidecar 承載基礎設施;
  • 通過容器化的編排排程,實現資源、流量與容器生命週期統一,為按需使用奠定基礎架構;
  • 基於 configmap ,實現配置與環境解耦,實現容器映象的不可變性,日常、預發、生產映象的統一,降低複雜性;
  • 基於 Init Container 技術,實現 function 業務與基礎設施徹底解耦,通過容器生命週期初始化機制組合 function+ 基礎設施構建執行態,為業務 function 與基礎設施各自獨立運維提供支撐;
  • API 服務註冊發現等基礎設施能力下沉到 K8s 技術體系。

通過這些容器的設計能力,業務研發只需要編寫業務邏輯程式碼即可,同時通過宣告式的 API 透出,快速完成了雲端業務的落地能力在移動端,小程式等容器也封裝隔離業務的執行環境, flutter 亦是如此,研發人員進入面向容器程式設計,通過容器來隔離基礎設施,遮蔽執行環境平臺的差異性。

GAIA 是開放性的平臺,按其容器設計規範,閒魚對dart語言按規範應實現了function容器, aplatform 的引擎與 GAIA 的 Java 容器對接的成功,解決了平臺型應用以及任何應用基於 GAIA 實現 serverless 化的解決路徑(集團存量萬+級別的應用)。

總結展望

目前 GAIA 和閒魚以及 aplatform 淘系互動進行的實踐是一次意義重大的定義探索, “一次編碼,到處執行” ,讓程式設計師迴歸程式,當前雲端技術上是初步的結合,未來還待深度的體系挖掘建設未來的展望:

  • 業務輕量級研發運維模式是不可阻擋的未來

天下大事,分久必合合久必分,5G 萬物互聯即將到來,多種終端裝置,需要輕量級研發運維模式的支援,從驅動研發模式演進的“降低技術門檻、跨平臺能力”本質出發,高效的業務落地能力是王道,當前分雲 +iOS+android 的多端多人協作模式必將逐步淘汰。

  • 面向容器化、統一 API 服務程式設計

雲和端執行環境容器化,是業務與基礎設施解耦的必經之路,通過容器化封裝隔離執行環境,通過容器提供的統一的 API 服務介面互動;雲與端容器技術會趨同,兩端容器會緊密的互動,雲端在技術體系上更深度的結合,實現雲端技術體系閉環。

  • 工程體系歸一,客戶端、服務端統一版本化釋出升級

目前割裂的研發模式,典型的表現是多端各自程式碼分支;業務雲端一體化輕量級研發模式,業務的工程體系將會雲端歸一,在一個工程專案裡面,定義服務介面,在雲端容器實現服務透出,在客戶端容器實現服務呼叫;同時雲和端會統一化的版本化釋出運維體系,這裡需要對整個研發模式體系的再定義。

  • 技術部門組織架構的變革

人的要求變化,支援業務的組織生產關係將升級。

我們的使命

“革新研發模式、重構研發生態。”

“一次編碼、到處執行”,業務雲端一體化輕量級研發運維模式,等待我們一起建設。


原文連結
本文為雲棲社群原創內容,未經