什么是云原生(Cloud Native)App
云原生的話題近期異常火熱,對于它的概念,大家也有不同的解讀。從我個人的視角而言,云原生代表了一種應(yīng)用構(gòu)建的方法論:如何最大程度地利用云計算服務(wù)模型的優(yōu)勢低成本、快速地構(gòu)建一款彈性的應(yīng)用。本質(zhì)上而言,云原生的研發(fā)模型旨在降低業(yè)務(wù)的技術(shù)風(fēng)險,讓開發(fā)者的形態(tài)更單純、專注:
所有的運行環(huán)境透明化,按需擴(kuò)展;所有的研發(fā)流程流水化,高效交付;所有的基礎(chǔ)設(shè)施服務(wù)化,按量付費;我們通常意義下的云原生應(yīng)用意指傳統(tǒng)的后端應(yīng)用,Container、Microservice、DevOps構(gòu)成了云原生研發(fā)架構(gòu)的鐵三角。對于移動App這類呈現(xiàn)重前端輕后端形態(tài)的產(chǎn)品而言,云原生有另一種詮釋方式。移動App對比傳統(tǒng)的后端應(yīng)用研發(fā)有著較大的形態(tài)差異,應(yīng)用本身構(gòu)建在異構(gòu)的OS平臺之上,運行環(huán)境約束較多,依賴大量的后端服務(wù)支撐,應(yīng)用本身的持續(xù)交付過程也包含了許多移動場景特有的元素,比如編譯環(huán)境(iOS)、兼容測試、內(nèi)測分發(fā)、渠道打包、灰度發(fā)布等等。從基礎(chǔ)環(huán)境的支撐視角,云計算服務(wù)商面向移動App需要解決的幾個核心問題包括:
跨平臺:移動App需要面對多個OS平臺,在研發(fā)資源和迭代周期上都會帶來巨大的挑戰(zhàn)。一站式跨平臺研發(fā)框架將有助于應(yīng)用進(jìn)入市場的節(jié)奏把控,屏蔽不同OS平臺對App的影響。
松耦合:移動App本身同樣是一個非常龐大的體系工程,想象一下類似手機(jī)淘寶這樣的航母級App所承載的服務(wù)內(nèi)容,數(shù)十個團(tuán)隊并發(fā)協(xié)同一個版本的迭代是大型App的常態(tài),所以一個松耦合結(jié)構(gòu)的應(yīng)用容器/腳手架是應(yīng)用高速迭代的基礎(chǔ)底座。
服務(wù)化組件:基礎(chǔ)組件的功能純粹,通過云化的中間件和后端服務(wù)構(gòu)建彈性的終端基礎(chǔ)能力是性價比最高的一種軟件構(gòu)建方式。
快速迭代:移動App特有的流程元素決定了開源的CI/CD服務(wù)不能完全滿足移動App快速迭代的場景訴求。另一方面持續(xù)交付流程與云上的后端服務(wù)存在大量的交互,云化的持續(xù)交付/研發(fā)支撐平臺將會是移動App生命周期管理的終極殺器。
按需擴(kuò)展:移動App的流量波動將更劇烈和頻繁,按需擴(kuò)展、彈性伸縮的基礎(chǔ)服務(wù)支撐將有助于靈活的業(yè)務(wù)運營和成本的降低。
我們把基于上述云計算模型構(gòu)建的移動App稱為云原生App。在大家比較熟悉的概念中,圍繞移動App衍生的一個很典型的云計算架構(gòu)即Serverless。
Serverless
Serverless是當(dāng)前軟件架構(gòu)領(lǐng)域非常火熱的話題。從字面上看,大家或許會比較困惑,沒有服務(wù)器,如何來托管服務(wù)實體?事實上Serverless是從用戶視角出發(fā)的一種應(yīng)用架構(gòu)范式,即基于云服務(wù)的計算模型實現(xiàn)對業(yè)務(wù)邏輯的抽象封裝、管理,而無需關(guān)心底層資源的運維管理和擴(kuò)展。我們所熟知的BaaS(Backend as a Service)以及FaaS(Function as a Service)即是Serverless架構(gòu)模型的實體化服務(wù)形態(tài)。比如,當(dāng)你想創(chuàng)建一個天氣服務(wù),方便自己的應(yīng)用或第三方的應(yīng)用能夠很方便的獲取即時的天氣數(shù)據(jù)時,你就可以基于FaaS + API Gateway 快速構(gòu)建一個獨立的天氣微服務(wù),并對外開放,這就是一種非常典型的Serverless服務(wù)場景。
Serverless架構(gòu)模型的核心價值體現(xiàn)在三個方面:
成本:傳統(tǒng)的研發(fā)支出模型需要預(yù)先購置一批服務(wù)器設(shè)備,并按照使用周期內(nèi)的預(yù)估業(yè)務(wù)峰值來量化預(yù)算的大小,不確定性因素較多,服務(wù)器資源的空置也會帶來非常巨大的成本浪費。而Serverless的架構(gòu)模型則實現(xiàn)了按需擴(kuò)展、按量付費的彈性模型,讓企業(yè)成本更高效可控。由于Serverless服務(wù)粒度的進(jìn)一步打細(xì),基于高效的bin-packing算法甚至可以獲得對比彈性伸縮的虛擬機(jī)集群更高的使用效率。
運維:開發(fā)者不必再關(guān)心底層計算資源的容量與日常運維問題,所有基礎(chǔ)設(shè)施維護(hù)將會由云計算服務(wù)商負(fù)責(zé)解決并對開發(fā)者透明。
效率:細(xì)粒度的Serverless計算模型非常適用運算密集型的場景,能夠低成本地實現(xiàn)瞬時高強度脈沖計算能力。而傳統(tǒng)架構(gòu)為這樣的脈沖計算場景則需要付出高昂成本的準(zhǔn)備工作,環(huán)境搭建、容量壓測、計算存儲擴(kuò)容、應(yīng)用上線部署等等,這些隱性的時間資源成本更佐證了Serverless的核心價值。
Serverless意圖把服務(wù)運行時封裝在服務(wù)本身的交付體系中,面向開發(fā)者屏蔽與業(yè)務(wù)無關(guān)的基礎(chǔ)環(huán)境支撐細(xì)節(jié),是你能想象到的對應(yīng)用邏輯最高等級的抽象。
云原生App對比傳統(tǒng)研發(fā)架構(gòu)的收益基于Serverless的介紹,我們應(yīng)該已經(jīng)能看到云原生架構(gòu)范式帶來的不同,接下來我們一起系統(tǒng)化地對比一下云原生App與傳統(tǒng)研發(fā)模型的核心差異點。
阿里云對云原生App的支持
目前國內(nèi)真正能夠提供云原生App完整技術(shù)棧支持的供應(yīng)商并不多,絕大多數(shù)都是以BaaS形態(tài)進(jìn)行服務(wù)的垂直廠商。由于缺少App研發(fā)支撐解決方案以及和IaaS層的聯(lián)動,這種類型的服務(wù)無法徹底利用移動App開發(fā)強內(nèi)聚的場景特性,淪為單點的工具支撐,為開發(fā)者帶來的效率提升也是相對有限和獨立的。
阿里巴巴在移動互聯(lián)網(wǎng)領(lǐng)域有近7年的研發(fā)經(jīng)驗積累,在移動技術(shù)不斷深化的同時,移動開發(fā)范式也在快速演進(jìn),以支撐整個阿里巴巴體系內(nèi)移動App的快速迭代和品質(zhì)保障。下圖展示了阿里巴巴Cloud Native App的架構(gòu)范式。除了端+云的硬能力棧支撐外,阿里巴巴也開放了包括Android/iOS平臺研發(fā)規(guī)約,移動研發(fā)DevOps規(guī)約在內(nèi)的一系列軟能力棧。軟、硬能力棧背后蘊含的是對移動行業(yè)的深層認(rèn)知與理解,絕非一朝之功。
阿里云平臺上,我們很高興通過ApsaraMobile(移動云)為大家開放阿里巴巴Cloud Native App的完整能力棧。阿里云ApsaraMobile(移動云)是阿里巴巴移動技術(shù)的開放平臺,沉淀了阿里巴巴多年移動互聯(lián)網(wǎng)系統(tǒng)架構(gòu)積累,近期也和阿里百川進(jìn)行了深度整合,是阿里生態(tài)移動技術(shù)與理念對外輸出的主窗口。ApsaraMobile目前向開發(fā)者開放的能力如下圖所示,已基本覆蓋完整了云原生App的核心中軸。
跨平臺UI開發(fā)框架:WEEX-based MADP(Mobile App Development Platform)
WEEX是阿里巴巴開源的跨平臺移動UI開發(fā)框架,并于16年底正式捐贈給Apache基金會進(jìn)行孵化。WEEX具備一次開發(fā),三端(Android,iOS,H5)運行的能力,相對于H5來說,在使用相同的web化開發(fā)模式,保持較高的研發(fā)效率、較低的研發(fā)成本的同時,又具備接近Native的性能體驗,非常適合需要快速迭代又對性能體驗有一定要求的APP開發(fā)者。
移動App應(yīng)用容器:Atlas
Atlas是阿里巴巴開源的Android端應(yīng)用容器,提供解耦的組件化/插件化模塊框架及動態(tài)化支持。幫助工程師解決在工程編碼期、Apk運行期以及運維修復(fù)期面臨的各種棘手問題。
在工程期,實現(xiàn)工程獨立開發(fā),調(diào)試的功能,工程模塊獨立。
在運行期,實現(xiàn)完整的組件生命周期的映射,類隔離等機(jī)制。
在運維期,提供快速增量的更新修復(fù)能力,快速升級。
目前,Atlas在阿里巴巴體系內(nèi)部的應(yīng)用十分廣泛,手淘自身超過60+業(yè)務(wù)組件、20個協(xié)作團(tuán)隊,以及百萬行級別代碼都在Atlas上運行,其快速迭代能力讓應(yīng)用的發(fā)布周期從每月到每周再到隨時發(fā)布,在過去半年里就發(fā)布了446次。另外Atlas本身非常輕量,只有90多個類,支持大小型App開發(fā),從大型的手淘到相對小型的阿里健康等都在使用該框,其穩(wěn)定性也接受了考驗,兼容Android 4.x以上系統(tǒng)版本。整體手淘的Crash率一直維持在萬分之五左右,因為容器導(dǎo)致的crash占比小于百分之一。
研發(fā)支撐平臺:MobileHub
對于企業(yè)而言,單純的購買虛機(jī)替代傳統(tǒng)的物理機(jī)僅僅實現(xiàn)了基礎(chǔ)資源的云化,這是云計算最初階的使用模式。企業(yè)互聯(lián)網(wǎng)+的真正標(biāo)志應(yīng)該是研發(fā)體系的互聯(lián)網(wǎng)化,如何通過敏捷、DevOps、容器、分布式、Serverless等互聯(lián)網(wǎng)形態(tài)的思維和架構(gòu)來真正影響企業(yè)內(nèi)部的產(chǎn)品體系結(jié)構(gòu)和研發(fā)的日常運轉(zhuǎn)形態(tài),這才是云計算更高階的價值傳遞。
MobileHub是阿里巴巴多年移動互聯(lián)網(wǎng)行業(yè)沉淀、打磨的移動App研發(fā)支撐平臺,支撐了阿里巴巴數(shù)個億級App的完整生命周期全流程管理,從項目管理、持續(xù)集成、持續(xù)構(gòu)建到自動化測試、版本管理、灰度發(fā)布、監(jiān)控運維、用戶運營等環(huán)節(jié),整個工作流融入了阿里巴巴在移動互聯(lián)網(wǎng)領(lǐng)域的深層認(rèn)知與理解,是移動App研發(fā)體系中軟能力棧的幾個關(guān)鍵元素(機(jī)制、流程、方法論)的重要載體。
移動中間件與BaaS服務(wù)矩陣
移動中間件與BaaS服務(wù)負(fù)責(zé)了移動App基礎(chǔ)設(shè)施能力的支撐,與App業(yè)務(wù)解耦,適合以云服務(wù)的形態(tài)幫助業(yè)務(wù)快速完成從0至1的基礎(chǔ)建設(shè)。云化的移動中間件與BaaS服務(wù)本質(zhì)上即是移動App Serverless架構(gòu)的具象化實現(xiàn)。ApsaraMobile按照組件職能范疇把移動中間件劃分為5個具體的職能域,如下圖所示。
對于絕大多數(shù)企業(yè)而言,中間件的建設(shè)并非位于業(yè)務(wù)的核心發(fā)展路徑上,缺少持續(xù)深耕的源生動力。而云服務(wù)則可以通過規(guī)模化的服務(wù)來平攤基礎(chǔ)技術(shù)研發(fā)的成本,在人才聚斂、資源投入、產(chǎn)品穩(wěn)定性與性能等方面都具備絕對的優(yōu)勢,是整個移動生態(tài)分工細(xì)化和生產(chǎn)效率提升的重要表現(xiàn)。阿里巴巴在移動網(wǎng)絡(luò)、移動高可用、消息、移動數(shù)據(jù)等領(lǐng)域積累了大量的場景能力,可以有效地幫助企業(yè)規(guī)避重復(fù)的能力建設(shè)和繁重的維護(hù)、演進(jìn)成本。
結(jié)語
移動超越PC成為第一大流量入口,業(yè)務(wù)移動化已經(jīng)成為幾乎所有企業(yè)的核心戰(zhàn)略之一,如何抓住時間窗口,以最快速度把產(chǎn)品推向市場,往往成為決定產(chǎn)品最終命運的關(guān)鍵元素。云計算帶來的研發(fā)模式變化是巨大的,對于快速成長期的團(tuán)隊和企業(yè)而言,云原生的研發(fā)范式將帶來較低的試錯創(chuàng)新成本,真正助力創(chuàng)業(yè)進(jìn)入“快消時代”。在整個移動開發(fā)生態(tài)的自然進(jìn)化選擇中,云原生勢必將成為一種主流形態(tài)。