雲原生(Cloud Native)- 移動 App 研發新正規化

Mqc發表於2017-10-18

雲原生的話題近期異常火熱,對於它的概念,大家也有不同的解讀。從我個人的視角而言,雲原生代表了一種應用構建的方法論:如何最大程度地利用雲端計算服務模型的優勢低成本、快速地構建一款彈性的應用。本質上而言,雲原生的研發模型旨在降低業務的技術風險,讓開發者的形態更單純、專注 所有的執行環境透明化,按需擴充套件。

什麼是雲原生Cloud NativeApp

雲原生Cloud Native的話題近期異常火熱,對於它的概念,大家也有不同的解讀。從我個人的視角而言,雲原生代表了一種應用構建的方法論:如何最大程度地利用雲端計算服務模型的優勢低成本、快速地構建一款彈性的應用。本質上而言,雲原生的研發模型旨在降低業務的技術風險,讓開發者的形態更單純、專注:

  • 所有的執行環境透明化,按需擴充套件;
  • 所有的研發流程流水化,高效交付;
  • 所有的基礎設施服務化,按量付費;

雲原生應用

我們通常意義下的雲原生應用意指傳統的後端應用,Container、Microservice、DevOps構成了雲原生研發架構的鐵三角。對於移動 App 這類呈現重前端輕後端形態的產品而言,雲原生有另一種詮釋方式。移動 App 對比傳統的後端應用研發有著較大的形態差異,應用本身構建在異構的OS平臺之上,執行環境約束較多,依賴大量的後端服務支撐,應用本身的持續交付過程也包含了許多移動場景特有的元素,比如編譯環境(iOS)、相容測試、內測分發、渠道打包、灰度釋出等等。從基礎環境的支撐視角,雲端計算服務商面向移動 App 需要解決的幾個核心問題包括:

  • 跨平臺;
    移動 App 需要面對多個 OS 平臺,在研發資源和迭代週期上都會帶來巨大的挑戰。一站式跨平臺研發框架將有助於應用進入市場的節奏把控,遮蔽不同 OS 平臺對 App 的影響。

  • 鬆耦合;
    移動 App 本身同樣是一個非常龐大的體系工程,想象一下類似手機淘寶這樣的航母級 App 所承載的服務內容,數十個團隊併發協同一個版本的迭代是大型 App 的常態,所以一個鬆耦合結構的應用容器/腳手架是應用高速迭代的基礎底座。

  • 服務化元件;
    基礎元件的功能純粹,通過雲化的中介軟體和後端服務構建彈性的終端基礎能力是價效比最高的一種軟體構建方式。

  • 快速迭代;
    移動 App 特有的流程元素決定了開源的 CI/CD 服務不能完全滿足移動 App 快速迭代的場景訴求。另一方面持續交付流程與雲上的後端服務存在大量的互動,雲化的持續交付/研發支撐平臺將會是移動 App 生命週期管理的終極殺器。

  • 按需擴充套件;
    移動 App 的流量波動將更劇烈和頻繁,按需擴充套件、彈性伸縮的基礎服務支撐將有助於靈活的業務運營和成本的降低。

雲原生App架構

我們把基於上述雲端計算模型構建的移動 App 稱為雲原生 App。在大家比較熟悉的概念中,圍繞移動 App 衍生的一個很典型的雲端計算架構即 Serverless。

Serverless

Serverless 是當前軟體架構領域非常火熱的話題。從字面上看,大家或許會比較困惑,沒有伺服器,如何來託管服務實體?事實上 Serverless 是從使用者視角出發的一種應用架構正規化,即基於雲服務的計算模型實現對業務邏輯的抽象封裝、管理,而無需關心底層資源的運維管理和擴充套件。我們所熟知的 BaaS(Backend as a Service)以及 FaaS(Function as a Service)即是 Serverless 架構模型的實體化服務形態。比如,當你想建立一個天氣服務,方便自己的應用或第三方的應用能夠很方便的獲取即時的天氣資料時,你就可以基於 FaaS + API Gateway 快速構建一個獨立的天氣微服務,並對外開放,這就是一種非常典型的 Serverless 服務場景。

Serverless 架構模型的核心價值體現在三個方面:

  • 成本
    傳統的研發支出模型需要預先購置一批伺服器裝置,並按照使用週期內的預估業務峰值來量化預算的大小,不確定性因素較多,伺服器資源的空置也會帶來非常巨大的成本浪費。而 Serverless 的架構模型則實現了按需擴充套件、按量付費的彈性模型,讓企業成本更高效可控。由於 Serverless 服務粒度的進一步打細,基於高效的 bin-packing 演算法甚至可以獲得對比彈性伸縮的虛擬機器叢集更高的使用效率。

  • 運維
    開發者不必再關心底層計算資源的容量與日常運維問題,所有基礎設施維護將會由雲端計算服務商負責解決並對開發者透明。

  • 效率
    細粒度的 Serverless 計算模型非常適用運算密集型的場景,能夠低成本地實現瞬時高強度脈衝計算能力。而傳統架構為這樣的脈衝計算場景則需要付出高昂成本的準備工作,環境搭建、容量壓測、計算儲存擴容、應用上線部署等等,這些隱性的時間資源成本更佐證了 Serverless 的核心價值。

Serverless 意圖把服務執行時封裝在服務本身的交付體系中,面向開發者遮蔽與業務無關的基礎環境支撐細節,是你能想象到的對應用邏輯最高等級的抽象。

雲原生 App 對比傳統研發架構的收益

基於 Serverless 的介紹,我們應該已經能看到雲原生架構正規化帶來的不同,接下來我們一起系統化地對比一下雲原生App與傳統研發模型的核心差異點。

雲原生(Cloud Native)- 移動 App 研發新正規化

阿里雲對雲原生 App 的支援

目前國內真正能夠提供雲原生 App 完整技術棧支援的供應商並不多,絕大多數都是以 BaaS 形態進行服務的垂直廠商。由於缺少 App 研發支撐解決方案以及和 IaaS 層的聯動,這種型別的服務無法徹底利用移動 App 開發強內聚的場景特性,淪為單點的工具支撐,為開發者帶來的效率提升也是相對有限和獨立的。

阿里巴巴在移動網際網路領域有近 7 年的研發經驗積累,在移動技術不斷深化的同時,移動開發正規化也在快速演進,以支撐整個阿里巴巴體系內移動 App 的快速迭代和品質保障。下圖展示了阿里巴巴 Cloud Native App 的架構正規化。除了端+雲的硬能力棧支撐外,阿里巴巴也開放了包括 Android/iOS 平臺研發規約,移動研發 DevOps 規約在內的一系列軟能力棧。軟、硬能力棧背後蘊含的是對移動行業的深層認知與理解,絕非一朝之功。

 阿里巴巴Cloud Native App Paradigm

在阿里雲平臺上,我們很高興通過 ApsaraMobile(移動雲)為大家開放阿里巴巴 Cloud Native App 的完整能力棧。阿里雲 ApsaraMobile(移動雲)是阿里巴巴移動技術的開放平臺,沉澱了阿里巴巴多年移動網際網路系統架構積累,近期也和阿里百川進行了深度整合,是阿里生態移動技術與理念對外輸出的主視窗。ApsaraMobile 目前向開發者開放的能力如下圖所示,已基本覆蓋完整了雲原生 App 的核心中軸。

ApsaraMobile體系圖

跨平臺 UI 開發框架:基於 WEEX 的 MADP

WEEX 是阿里巴巴開源的跨平臺移動UI開發框架,並於 16 年底正式捐贈給 Apache 基金會進行孵化。WEEX 具備一次開發,三端(Android、iOS、H5)執行的能力,相對於 H5 來說,在使用相同的 web 化開發模式,保持較高的研發效率、較低的研發成本的同時,又具備接近 Native 的效能體驗,非常適合需要快速迭代又對效能體驗有一定要求的 APP 開發者。

移動 App 應用容器:Atlas

Atlas 是阿里巴巴開源的 Android 端應用容器,提供解耦的元件化/外掛化模組框架及動態化支援。幫助工程師解決在工程編碼期、APK 執行期以及運維修復期面臨的各種棘手問題。

  • 在工程期,實現工程獨立開發,除錯的功能,工程模組獨立。
  • 在執行期,實現完整的元件生命週期的對映,類隔離等機制。
  • 在運維期,提供快速增量的更新修復能力,快速升級。

目前,Atlas 在阿里巴巴體系內部的應用十分廣泛,手淘自身超過 60+ 業務元件、20 個協作團隊,以及百萬行級別程式碼都在 Atlas 上執行,其快速迭代能力讓應用的釋出週期從每月到每週再到隨時釋出,在過去半年裡就釋出了 446 次。另外 Atlas 本身非常輕量,只有 90 多個類,支援大小型 App 開發,從大型的手淘到相對小型的阿里健康等都在使用該框,其穩定性也接受了考驗,相容 Android 4.x 以上系統版本。整體手淘的 Crash 率一直維持在萬分之五左右,因為容器導致的 crash 佔比小於百分之一。

研發支撐平臺:MobileHub

對於企業而言,單純的購買虛機替代傳統的物理機僅僅實現了基礎資源的雲化,這是雲端計算最初階的使用模式。企業網際網路+的真正標誌應該是研發體系的網際網路化,如何通過敏捷、DevOps、容器、分散式、Serverless 等網際網路形態的思維和架構來真正影響企業內部的產品體系結構和研發的日常運轉形態,這才是雲端計算更高階的價值傳遞。

MobileHub 是阿里巴巴多年移動網際網路行業沉澱、打磨的移動App研發支撐平臺,支撐了阿里巴巴數個億級App的完整生命週期全流程管理,從專案管理、持續整合、持續構建到自動化測試、版本管理、灰度釋出、監控運維、使用者運營等環節,整個工作流融入了阿里巴巴在移動網際網路領域的深層認知與理解,是移動App研發體系中軟能力棧的幾個關鍵元素(機制、流程、方法論)的重要載體。

移動中介軟體與 BaaS 服務矩陣

移動中介軟體與 BaaS 服務負責了移動 App 基礎設施能力的支撐,與 App 業務解耦,適合以雲服務的形態幫助業務快速完成從 0 至 1 的基礎建設。雲化的移動中介軟體與 BaaS 服務本質上即是移動 App Serverless 架構的具象化實現。ApsaraMobile 按照元件職能範疇把移動中介軟體劃分為 5 個具體的職能域,如下圖所示。

ApsaraMobile移動中介軟體服務矩陣

對於絕大多數企業而言,中介軟體的建設並非位於業務的核心發展路徑上,缺少持續深耕的源生動力。而云服務則可以通過規模化的服務來平攤基礎技術研發的成本,在人才聚斂、資源投入、產品穩定性與效能等方面都具備絕對的優勢,是整個移動生態分工細化和生產效率提升的重要表現。阿里巴巴在行動網路、移動高可用、訊息、移動資料等領域積累了大量的場景能力,可以有效地幫助企業規避重複的能力建設和繁重的維護、演進成本。

結語

移動超越 PC 成為第一大流量入口,業務移動化已經成為幾乎所有企業的核心戰略之一,如何抓住時間視窗,以最快速度把產品推向市場,往往成為決定產品最終命運的關鍵元素。雲端計算帶來的研發模式變化是巨大的,對於快速成長期的團隊和企業而言,雲原生的研發正規化將帶來較低的試錯創新成本,真正助力創業進入“快消時代”。在整個移動開發生態的自然進化選擇中,雲原生勢必將成為一種主流形態。

相關文章