雲計算

端應用研發進入雲原生時代

1.png

作者 | 阿里云云原生應用研發平臺 EMAS  楊鑌(泠茗)

導讀:隨著技術的發展和各種用戶端場景的湧現,業務前臺形式變得更加多樣,“面向多樣化的端場景提供無縫的、一致的數字用戶旅程”已經成為了新時代企業應用架構的關鍵目標,同時它也是當下大前端技術發展背後的核心業務牽引。基於阿里雲在過去幾年服務海量用戶的經驗沉澱,本文總結了新的基於雲原生技術的端應用研發範式,期望為廣大開發者、企業提供雲計算時代面向企業業務前臺的應用研發方法論。

多樣化用戶體驗(Multiexprience)與大前端

隨著雲計算、移動化、IoT、AI 等技術概念地落地和持續發展,社會的數字化進程在不斷加速。Gartner 近期發佈了新的企業應用架構方法論 MASA(Mesh Application and Service Architechture,網格應用和服務架構)[1],融合近 5 年流行的技術趨勢,為廣大企業信息化的供應商、開發者和企業用戶定義了更廣泛的企業數字化應用架構模型。

[1] Use MASA to Deliver an Agile Multiexperience Enterprise Application Architecture, Gartner, 2019

2.png

與阿里所定義的中臺不同,MASA 將企業應用拆解為上中下三層,在傳統的後端業務能力基礎之上,將企業前臺,以及用於前後臺鏈接的 API 網關層也涵蓋了進來,通過網格化的架構實現企業的業務流程、員工、服務、內容、設備間的動態連接,以構建匹配現有技術形態和未來技術趨勢的更敏捷、靈活、可擴展的應用架構。

伴隨 MASA,面向企業前臺的 Multiexperience( 多樣化用戶體驗 )被 Gartner 明確提出並定義為 2020 年的十大技術趨勢[2]。Multiexperience 期望利用多元化的前臺技術(移動應用、Web、小程序、可穿戴設備等)全面升級企業面向終端客戶的數字化觸點,以終端客戶為中心構建多元(體驗多元化)而一體(架構一體化)的用戶界面。Multiexperience 與國內所流行的大前端概念不同,但他們背後恰恰有著相通的故事主線。

[2] Top 10 Strategic Technology Trends for 2020: Multiexperience, Gartner, 2020

大前端在國內還沒有一個統一的定義,它更偏向一個相對純粹的技術概念,意指面向客戶側的端技術集合,它的出現始於客戶端 Native 與 Web 兩大技術棧的不斷融合,背後核心是跨平臺技術在移動、PC、小程序、Web 等場景下地不斷髮展和成熟。

大前端技術棧在 Multiexperience 這樣的業務需求背景下不斷磨礪,同時又反向支撐業務不斷擴展其面向終端客戶的數字化觸點的場景和範圍。技術拓展商業邊界,商業驅動技術變革。面向全端場景,提供無縫的、一致的數字用戶旅程是 Multiexperience 和大前端一脈相通的用戶理念。

如今,面向全新的業務架構範式,如何加速新時代下多元化的端應用研發,為業務提供更敏捷而高效地交付呢?雲原生技術是最佳選項。

一雲多端,雲原生技術如何驅動端應用研發

很多人有疑惑,雲原生與端測的研發有什麼關係,雲原生不是一個後端技術域的概念麼?其實不然。雲原生代表了一種應用構建的方法論:如何最大程度地利用雲計算服務模型的優勢低成本、敏捷地構建和管理一款彈性的應用。它的關鍵理念包括:

  • 所有的運行環境透明化,彈性伸縮
  • 所有的研發流程流水化,高效交付
  • 所有的基礎設施服務化,按量付費

雲原生的研發模型旨在降低業務的技術風險,讓開發者可以更單純地專注於自己的業務。面向端應用場景,雲原生技術理念同樣適用。

Gartner 在 2019 年定義了一條全新的技術賽道:Multiexperience Development Platform(MXDP)[3],用以描述那些通過敏捷、現代化的技術能力幫助企業高效地實現 Multiexperience 的研發平臺,其能力矩陣示意如下圖:

[3] Technology Insight for Multiexperience Development Platforms, Gartner, 2020

3.png

從 MXDP 的關鍵元素構成我們可以看到,除了傳統的研發工具類組件外,雲原生技術成為了 MXDP 最核心的技術元素,其中的典型技術包括以下幾個方面,我們將一一介紹。

1. DevOps,驅動端應用的高速迭代

端應用對比傳統後端有著典型的差異,以移動 App 為例,應用本身構建在異構的機型、OS 平臺之上,運行環境約束較多,依賴大量的後端服務支撐,應用本身的持續集成和交付過程也包含了許多移動場景特有的元素,比如編譯環境、兼容測試、內測分發、渠道打包、灰度發佈等,這些關鍵差異決定了端應用必須構建自己特有的 DevOps 體系。

4.png

1)研發域

面向端應用的 DevOps 平臺需要解決應用持續集成過程的組織協同和自動化。針對端應用的研發期,成熟的 DevOps 平臺需具備:

  • 面向多端的編譯構建環境並實現自動化的軟件更新;
  • 可靠,彈性伸縮的構建服務集群;
  • 代碼與證書託管;
  • 靜態代碼掃描;
  • 軟件定義的工作流。

2)測試域

端應用的測試較傳統後端應用複雜度大幅提升,除了基礎的功能、性能測試外,還需要有面向異構機型、終端、操作系統的兼容性測試,成熟的端應用測試平臺應具備:

  • 兼容性測試服務,覆蓋主流的機型、設備、操作系統;
  • 性能測試服務,支持各類應用崩潰、ANR、卡頓、IO、CPU、內存等關鍵性能指標監測和評估;
  • 自動化測試引擎,支持測試用例編寫、回放和管理;
  • 遠程真機能力,支持設備的雲端訪問;
  • 智能 Monkey 與 AITest 等智能化技術驅動的測試能力。

3)發佈域

端應用的目標發佈對象是海量的終端設備,生產發佈受應用市場審核限制,因此,可靠、精準、定向的應用分發能力是應用生產分發的關鍵技術要求,包括:

  • 企業內分發能力;
  • 支持軟件定義的灰度能力,支持面向不同的地域、網絡、機型、渠道及其他自定義標籤進行灰度分發;
  • 面向不同渠道的生產發佈能力;
  • 版本管理與歸檔。

4)運維域

面向端應用的運維體系應始終圍繞問題的感知,問題的定位,問題的修復展開,在傳統的 Metrics,Tracing,Logging 基礎之上,我們特別強調面向端的 Hotfix 的能力,這是區別於後端應用形態的特殊之處。成熟的端運維體系應包含:

  • 面向端應用的 APM 能力,支持包括啟動速度、頁面加載、崩潰、網絡性能、API 性能等在內的監控報警體系,並能與後端 APM 聯動進行基於事務的訪問追蹤;
  • 面向端應用的遠程日誌能力,支持實時的終端日誌記錄和管理,加速問題的遠程診斷;
  • 面向端應用的熱修復能力,支持針對不同設備平臺的代碼、資源熱更新。

5)運營域

端應用作為企業業務入口,是企業面向終端用戶的關鍵界面,必須時刻洞察用戶的行為、傾聽用戶的聲音,驅動業務的敏捷迭代。面向 App 的數據分析以及輿情反饋能力是 DevOps 的關鍵閉環之一。

數據分析應具備:

  • 面向全端的用戶行為數據採集能力,包括小程序,APP,H5,PC,WEB,IoT 等;
  • 易用的終端埋點工具:支持代碼埋點,自動埋點,可視化埋點等;
  • 開放的數據能力:支持以 API 方式同步數據,支持與雲廠商的計算平臺無縫對接。

輿情反饋應具備:

  • 面向全端的用戶反饋通道能力;
  • 智能化的應答機器人;
  • 輿情數據蒐集和分析。

DevOps 為 Multiexperience 的生產實踐帶來的關鍵價值包括:

  • 更短的業務迭代週期

覆蓋端應用全生命週期的工作流與自動化能力將帶來應用持續交付能力以及跨團隊協同效率地大幅提升,進而縮短業務的交付週期。作為企業面向終端用戶的入口,更短的業務迭代週期意味著面向市場更快速的反應,這是數字時代商業成功的基石。

  • 更合理的人力資源分配

雲原生的工具鏈與自動化流水線將幫助企業避免耗費大量工程技術人員來維護本地化的工具和系統,同時大幅削減應用持續交付過程的人工環節。企業能夠將寶貴的人力資源專注在自己核心業務的生產和研發上。

  • 更穩固的應用交付質量

自動化的終端測試體系以及全方位的監控診斷體系將為端應用提供完整而充分的質量保障,這些雲原生服務將為企業節省大量細分領域的專業人員投入,並通過專業且持續的工程技術演進以及智能技術的引進不斷優化應用質量保障體系。

  • 更優異的即時用戶體驗

圍繞端應用全方位的行為數據埋點和分析將幫助企業更好地把握產品功能與市場的匹配度,而即時的輿情反饋能力則幫助企業更好地進行用戶管理和關係維護。所有這些直接和間接來自客戶的聲音將直接驅動業務的快速迭代,通過雲原生 DevOps 實現敏捷開發的生產實踐。

2. Serverless & Backend as a Service(BaaS),端應用的運行引擎

Serverless 是當下開發者社區最火爆的話題之一,其核心理念即去服務器化:把底層雲計算的基礎能力進行高維抽象,以 API/SDK 的方式開放後端能力的訪問和獲取,無需開發人員配置和部署服務器資源即可獲得彈性伸縮、按量付費的後端服務支持。

Serverless 的技術理念其實在數年前就已出現:後端即服務(Backend as a Service,BaaS)是典型的遵循 Serverless 設計理念的服務形態,早在 2012 年 BaaS 便在開發者社區中傳播並因其便捷的使用模型而深受開發者喜愛。比較典型的 BaaS 服務包括消息推送、用戶認證、雲存儲、雲數據庫等。

5.png

由於 BaaS 服務大幅削減了企業在後端研發力量上的開銷,其在端應用場景得到了大範圍地應用。但 BaaS 核心解決的主要是垂直場景化的後端能力抽象,並沒法支撐業務本身的後端邏輯部分。Function as a Service(Faas)的出現彌補了這一空缺,並使得 Serverless 的架構範式能夠面向端應用場景提供更加完整的閉環。

FaaS 是一種軟件構建和部署的新方式,基於事件驅動模型,以函數粒度為開發者提供業務代碼的託管環境。這種架構模型在數據處理、Backend for Frontend、移動應用、IoT 應用和 Web 應用等場景有較常見的應用空間。

綜上我們可以看到,面向應用的 Serverless 架構包含了 BaaS 和 FaaS 兩種服務形態,為了完整地支撐端應用的場景需求,成熟的 Serverless 引擎應包括:

  • 消息推送

支持在服務器與客戶端間建立可靠、省電的長連接,面向 Android、iOS、Web、IoT 等端應用提供下行消息推送能力。

  • 登錄認證

為開發者提供多維度的安全可靠的端到端身份驗證能力,從而降低開發者在登錄和賬號體系上的開發成本和業務風險。身份驗證模式包括郵箱認證、短信認證、號碼認證以及主流互聯網平臺(淘寶、支付寶、QQ、微信、Google 等)提供的登錄認證能力。

  • 數據同步

提供一個穩定可靠、加密安全的數據同步系統,支持數據在客戶端的離線使用以及在線同步更新,以提供業務在移動應用、Web 應用以及 PC 應用間的一致化用戶體驗。

  • 遠程配置

遠程配置是面向端應用的持久配置管理服務,通過雲端管理配置內容,並實時推送更新到客戶端,靈活控制應用的功能、配置及 UI 實現。

  • 雲存儲

提供基於 API/SDK 的便捷的雲端存儲能力,支持包括文本、圖片、視頻以及其他由用戶生成的內容。

  • 雲數據庫

基於雲端的 NoSQL 數據庫,提供面向各種前端的便捷訪問接口,支持實時的數據操作、跨端數據同步和彈性伸縮。

  • 雲函數

允許開發者直接將程序託管到雲函數平臺上,以函數作為最小單元完成事件驅動的業務邏輯開發,通過 API 方式進行遠程訪問和調用。

  • AI 能力

應用智能化是端應用的關鍵技術趨勢,基礎AI能力將成為端應用 Serverless 架構的基礎組成,包括但不限於 OCR、人臉識別、語音識別等。

Serverless 架構及服務帶來的核心價值體現在三個方面:

  • 資源成本

傳統的應用架構模型需要預先購置一批服務器設備,並按照使用週期內的預估業務峰值來進行財務預算,不確定性因素較多,服務器資源的空置也會帶來非常巨大的成本浪費。而 Serverless 的架構模型則實現了按需擴展、按量付費的彈性模型,讓企業成本更可控。

  • 運維成本

開發者不必再關心底層計算資源的容量與日常運維問題,所有基礎設施維護將會由 Serverless 服務商負責解決並對開發者透明。削減的運維成本,彈性的資源使用和可擴展·能力都將幫助開發者更好地專注於業務本身的增長。

  • 研發效率

完整的 Serverless 引擎提供了面向端應用的絕大部分場景能力的支撐,使得應用的研發非常便捷並易於維護。而在傳統的研發模型下,代碼開發、環境搭建、容量壓測、集群擴容、應用部署等環節都會帶來巨大的時間成本。

3. 低代碼,應用研發形態的新變革

雲原生技術的出現使得傳統業務架構大規模地向雲架構轉型,軟件開發效率在這個階段也得到了明顯地提升。然而數字化時代,各種應用場景地湧現,業務對 IT 面向市場的響應即時性也提出了更高的要求。在跨時代的技術演進浪潮中,Low-code Development Platform(低代碼平臺)快速浮出水面,並伴隨多樣化的端應用場景開始加速普及。低代碼技術為軟件研發效率帶來的不僅僅是提升,更是變革。

6.png

對比傳統的基於手工編碼方式構建應用的模型,低代碼平臺提供給開發者基於 GUI 的軟件編輯環境,並結合雲原生基礎設施幫助開發者快速完成應用的搭建。同時,這樣的研發模型使得軟件研發對軟件開發者的技能要求門檻大幅降低,更多的具備一定 IT 基礎概念的人群可以參與到軟件開發中,而云原生架構則天然地幫助開發者解決了軟件本身的部署、運維等工作。

成熟的低代碼平臺將廣泛應用於企業的生產、營銷、BPM、工具應用等場景,其核心能力主要由兩部分組成:

  • 可視化應用編排引擎

    • 支持包括 Web、移動 App、小程序在內的多端應用場景
    • 支持包括 UI 可視化編排、業務流編排、邏輯編排、數據編排等能力
    • 支持組件、模塊、模板等模型,有開放化的物料系統和組件市場
    • 模型驅動,搭配元數據解析引擎(包括多端轉譯引擎/渲染引擎等)
  • 雲原生應用平臺

    • 行業化領域模型與元數據管理
    • 代碼生成引擎
    • 雲原生應用託管
    • CI/CD
    • 豐富的集成與擴展能力

我們可以從施耐德電氣與頂級低代碼平臺公司 Outsystems 的合作中看到低代碼帶來的價值:施耐德電氣在應用低代碼平臺後,在短短 20 個月的時間內快速上線了 60 款 App,其中絕大多數 App 在 10 周內完成開發和上線,第一年節省的人工成本達到 650 人天。低代碼技術大幅縮短了傳統企業數字化轉型的路徑。

至 2024 年,Gartner 預計所有應用程序開發活動當中的 65% 將通過低代碼的方式完成,似乎比想象的更快一些,但它確實在持續地發生。在全球市場,我們能夠看到 OutSystems、Mendix、PowerApps、App Maker 快速的成長腳步,未來結合 AI 與機器學習,我們可以預見真正的“App 工廠”的誕生。

求變應變,永不止步成就技術革新

作為國內移動互聯網、雲計算領域的行業巨擘,阿里巴巴在大前端、雲原生領域有著豐富的實戰經驗。我們從 2016 年開始逐步將集團內部成熟的應用中間件雲化輸出,並在 2018 年推出了移動研發平臺 EMAS,如今,EMAS 已經逐漸成長為橫跨多端(移動 App、H5 應用、小程序、Web 應用等)場景的雲原生應用研發平臺,基於廣泛的雲原生技術(Backend as a Service、Serverless、DevOps、低代碼等),為企業、開發者提供一站式的應用研發管理服務,涵蓋開發、測試、運維、運營等應用全生命週期。

7.png

截止到今天,伴隨雲計算的迅速普及和發展,我們已服務了 15 萬以上的企業與開發者。

在海量的生產實踐中,我們也看到了雲原生技術在端應用場景下所面臨的的關鍵挑戰:

  • 研發心智的改變

對於所有開發團隊而言,前後端團隊的定義根深蒂固,協同界面已成自然。然而隨著 Serverless 等雲原生技術地廣泛應用,在越來越多的端應用場景中,開發團隊僅需前端開發人員即可以閉環完成應用的研發和上線工作;在應用架構維度,Serverless FaaS 帶來的是基於事件驅動,無狀態,函數式邏輯片段的全新範式,與傳統的應用模型有著較大的區別。改變即成本,更關鍵的是改變背後不是純粹的技術,還有組織的變革,生產關係的變革。

  • 技術成熟度

無論是 Serverless FaaS 還是低代碼開發,都屬於商業導入期的技術,產品化完善度還有欠缺,所能覆蓋的場景也有一定的侷限性,對於主流的複雜應用場景,Serverless FaaS 還需結合傳統微服務等架構形成混合式的 Serverless 應用。在系統可觀測性,研發調試便捷性,函數啟動性能,函數執行時長等技術關鍵控制點上依然有較長的路要走。

  • 架構靈活度

雲原生能力代表了對雲基礎設施的高維封裝和抽象,抽象即意味著管控粒度變粗,系統的靈活性與定製擴展能力會天然地受到一定的削弱。

雖然挑戰巨大,但趨勢已現。EMAS BaaS 已經成為國內大量移動 App 的必備基礎設施,全球範圍內覆蓋超過 20 億的活躍設備終端,每天的 API 調用量超過百億規模;基於 EMAS Serverless,疫情期間我們看到大量開發者快速地實現了防疫抗疫工具應用的開發,從誕生想法到產品上線歷時僅需一週;在企業內部,越來越多的辦公應用和表單應用基於低代碼平臺快速構建,企業生產力得到了大幅提升。參照 Hype Cycle 的模型,雲原生的多項新興技術已經湧現大量生產實踐項目,技術成熟度已然進入了穩步爬坡期。

毫無疑問我們站在了又一個技術紀元的前夜,雲端一體,一雲多端正在成為前臺應用研發的事實標準,擁抱雲原生將成為開發者享受雲計算紅利的最短路徑。我們歡迎更多的有識之士加入我們(聯繫郵箱:[email protected]),變革生產力,改變世界。

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”

Leave a Reply

Your email address will not be published. Required fields are marked *