阿里妹導讀:當前移動互聯網業務研發運維模式,雲與多端互相割裂,有些全棧的探索缺少成功案例,行業對雲端一體化研發這塊還是空白,咱們要思考:如何能實現 1 個研發支撐雲 + android + iOS 三端的業務快速落地?是否有新的研發運維模式,讓程序員迴歸程序?「一次編碼、處處運行」是咱們的答案。咱們在閒魚項目驗證,本來 60 天的項目時間減小了 20 天,提效 33% 。但願阿里高級技術專家孫棋的分析可以給你們帶來收穫。前端
效率是業務研發運維模式演進核心驅動力android
PC 互聯網時代,單體應用包含先後端是最初的研發模式(淘寶經歷開發人員寫 velocity 模板,以及更早的 jsp、asp 頁面)其實質是中心化搭火車的研發模型。程序員
隨着業務發展複雜性快速增長,趕火車的交付模式,極大的限制了業務發展,所以誕生了服務化的拆分,淘寶在 09 年的五彩石項目即基於這樣的背景,微服務是一種軟件架構,這背後更是一種研發模式的變革,從中心化研發模式到分佈式的研發模式升級。ajax
在業務分佈式研發模式升級的同時,先後端分離研發模式也在同步的演進,從 ajax 到專業前端獨立完成業務閉環,職業分工細化提效。但對前端同窗而言,服務端的運維始終是其痛苦的技術門檻,以及在阿里以 Java 語言爲基礎的中間件生態內,一直沒有很好解決。編程
進入移動互聯網時代,客戶端一樣也經歷一樣的演進,阿里集團以 atlas 實現了端分佈式研發模式。但對比 pc 時代的先後端分離,移動時代又回到了 ajax 模式,端的同窗只負責了端,沒有實現業務自閉環。同時移動互聯網帶來了新的挑戰,即跨 android 和 iOS 平臺的問題, React Native、weex 等產品即在這個環境下誕生。小程序
如何讓客戶端同窗更日後一步,實現業務落地的閉環能力,同時規避 BFF 層對客戶端同窗的在研發、運維以及跨語言面臨集團 Java 技術中間件生態,關鍵是:後端
Java 語言最初的成功,「一次編譯,處處運行」是關鍵,在 JVM 層面屏蔽了部分的運行環境;如何向研發提供語言無關的透明化代碼運行環境是核心挑戰,除了業務代碼之外的事情所有讓技術平臺託管。設計模式
移動互聯網這麼多年雲和端還是割裂的各自爲戰的研發模式,業界也有全棧的探索,但沒有很成功的案例,問題是技術門檻過高,對開發人員即要還要的太多,業務落地的複雜性而言沒有本質的變化,原來 3 我的作的事情,簡單的讓一我的作而已,缺少一個有效跨平臺能力,尤爲是跨雲+端的平臺能力。weex
研發模式演進的本質:下降技術門檻、跨平臺能力。架構
「一次編碼,處處運行」
讓開發人員只關注業務邏輯編碼,是研發模式的全新的下一個階段,也是研發模式演進的本質體現。這個階段雲原生表明的技術給了咱們不少的輸入,經過容器化技術解耦基礎設施,容器化編排下降了運維複雜性;經過服務網格實現了應用與中間件體系的解耦合;不可變基礎設施,支持更高的一致性和可靠性,下降了複雜性;serverless 的理念,技術的演進爲研發模式升級提供了新的契機。
基於這樣的背景, GAIA 應孕而生,與閒魚、 aplatform 淘系互動平臺兩大業務緊密合做,經過 GAIA 雲端 FaaS 技術能力,從新定義了研發的職責和邊界,讓程序員迴歸最初的程序,結合端上的跨平臺實現雲端一體的輕量級業務研發運維模式。
閒魚全新的研發模式以下圖:
進展結果:
閒魚業務落地實例,經過雲端一體化研發模式,使本來 60 天的項目時間,減小了 20 天,提效 33% 。
經過容器化設計模式,把基礎設施下沉與業務解耦,代碼運行環境對業務透明化。
輕量級複合多容器設計模式
咱們的應用目前都還是富容器模式,重要的問題是容器職責不單一,形成隔離性以及業務與基礎設施緊密耦合的問題。
容器作爲 GAIA 的關鍵,其設計模式進行了革命性的升級,也是集團首次大規模的嘗試。
經過這些容器的設計能力,業務研發只須要編寫業務邏輯代碼便可,同時經過聲明式的 API 透出,快速完成了雲端業務的落地能力在移動端,小程序等容器也封裝隔離業務的運行環境, flutter 亦是如此,研發人員進入面向容器編程,經過容器來隔離基礎設施,屏蔽運行環境平臺的差別性。
GAIA 是開放性的平臺,按其容器設計規範,閒魚對dart語言按規範應實現了function容器, aplatform 的引擎與 GAIA 的 Java 容器對接的成功,解決了平臺型應用以及任何應用基於 GAIA 實現 serverless 化的解決路徑(集團存量萬+級別的應用)。
目前 GAIA 和閒魚以及 aplatform 淘系互動進行的實踐是一次意義重大的定義探索, 「一次編碼,處處運行」 ,讓程序員迴歸程序,當前雲端技術上是初步的結合,將來還待深度的體系挖掘建設將來的展望:
天下大事,分久必合合久必分,5G 萬物互聯即將到來,多種終端設備,須要輕量級研發運維模式的支持,從驅動研發模式演進的「下降技術門檻、跨平臺能力」本質出發,高效的業務落地能力是王道,當前分雲 +iOS+android 的多端多人協做模式必將逐步淘汰。
雲和端運行環境容器化,是業務與基礎設施解耦的必經之路,經過容器化封裝隔離運行環境,經過容器提供的統一的 API 服務接口交互;雲與端容器技術會趨同,兩端容器會緊密的互動,雲端在技術體系上更深度的結合,實現雲端技術體系閉環。
目前割裂的研發模式,典型的表現是多端各自代碼分支;業務雲端一體化輕量級研發模式,業務的工程體系將會雲端歸一,在一個工程項目裏面,定義服務接口,在雲端容器實現服務透出,在客戶端容器實現服務調用;同時雲和端會統一化的版本化發佈運維體系,這裏須要對整個研發模式體系的再定義。
人的要求變化,支持業務的組織生產關係將升級。
「革新研發模式、重構研發生態。」
「一次編碼、處處運行」,業務雲端一體化輕量級研發運維模式,等待咱們一塊兒建設。
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。