作為云計(jì)算產(chǎn)業(yè)公認(rèn)的下一個(gè)技術(shù)風(fēng)口,Serverless 對于應(yīng)用開發(fā)者來說已經(jīng)是耳熟能詳?shù)母拍盍恕8鶕?jù)第三方調(diào)研機(jī)構(gòu)分析預(yù)測,2020 年全球 Serverless 市場規(guī)模將達(dá)到 76 億美元,而到 2025 年則會(huì)猛增到 211 億美元,年均復(fù)合增長率高達(dá) 22.7%。如今,云計(jì)算商業(yè)用戶中有超過半數(shù)開發(fā)者在采用 Serverless 構(gòu)建技術(shù)架構(gòu),可以看到 Serverless 將成為應(yīng)用發(fā)展創(chuàng)新業(yè)務(wù)必備的技術(shù)之一。
那么,究竟什么才是 Serverless 的核心概念?Serverless 誕生以來走過了怎樣的路線?有哪些特征?在 2020 年 11 月 24 日舉辦的華為應(yīng)用市場 AppGallery Connect 研習(xí)社•沙龍西安站上,華為 Serverless 資深架構(gòu)師們?yōu)榇蠹規(guī)砹?Serverless 的業(yè)界洞察與發(fā)展趨勢展望。
一、Serverless 概況與歷史軌跡
1、Serverless 特征
· 低成本。開發(fā)者用函數(shù)編寫應(yīng)用后部署在云端,出現(xiàn)請求之后云端資源才會(huì)按需收費(fèi),顯著降低了開發(fā)者的交付成本與使用成本。
· 免運(yùn)維。在 Serverless 方案中,云端服務(wù)的部署、升級、在線縮擴(kuò)容等微服務(wù)時(shí)代的復(fù)雜操作都由后端服務(wù)來完成,大大減輕了開發(fā)者的運(yùn)維負(fù)擔(dān)。
· 上線快。Serverless 分為兩大部分,一是 FaaS,通過開發(fā) Function(函數(shù))的形式實(shí)現(xiàn)業(yè)務(wù)邏輯;二是 BaaS,也就是云存儲(chǔ)、云數(shù)據(jù)庫等后端服務(wù)。通過端側(cè)直接訪問后端服務(wù)、事件觸發(fā)、端云同步、函數(shù)粒度的服務(wù)上線等機(jī)制,可極大縮短應(yīng)用的迭代周期,提升業(yè)務(wù)的上線速度。
2、Serverless 發(fā)展歷史與驅(qū)動(dòng)要素
自單體服務(wù)架構(gòu)普遍轉(zhuǎn)向微服務(wù)架構(gòu)后,雖然傳統(tǒng)存在的一些問題,諸如代碼變更困難、維護(hù)成本高、上線周期長等障礙得到了解決,但由于微服務(wù)需要將架構(gòu)解耦成眾多獨(dú)立的小模塊,因此對這些模塊進(jìn)行部署、監(jiān)控、彈性伸縮等生命周期運(yùn)維工作就成為了一大挑戰(zhàn)。
基于這樣的背景,云服務(wù)廠商開始利用 Serverless 技術(shù)來幫助開發(fā)者解決微服務(wù)的運(yùn)維需求。Serverless 以云函數(shù)作為業(yè)務(wù)邏輯的基本計(jì)算單元,圍繞云函數(shù)還有對象存儲(chǔ)、數(shù)據(jù)庫等隊(duì)列實(shí)現(xiàn) BaaS 后端服務(wù),組成完整的 Serverless 應(yīng)用來幫助開發(fā)人員的應(yīng)用快速上線,并將開發(fā)者的精力從運(yùn)維工作中解放出來,歐洲服務(wù)器租用,更多投入業(yè)務(wù)創(chuàng)新層面。
隨著 Serverless 技術(shù)的發(fā)展,開源領(lǐng)域也有許多項(xiàng)目為開源 FaaS 貢獻(xiàn)力量,從而使整個(gè) Serverless 生態(tài)逐漸成長壯大。
3、從微服務(wù)到 Serverless 的演進(jìn)
當(dāng)下的微服務(wù)架構(gòu)中,首選的架構(gòu)設(shè)計(jì)方法就是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)方法在落地時(shí)需要相當(dāng)復(fù)雜的過程,拆分出來的時(shí)間、領(lǐng)域,所做的聚合都可能不夠理想。隨著架構(gòu)演進(jìn),前期服務(wù)的解耦再組合也會(huì)產(chǎn)生相應(yīng)的成本。相比之下,Serverless 最大的優(yōu)勢是可以根據(jù)業(yè)務(wù)快速創(chuàng)新函數(shù)。業(yè)務(wù)流程的每一個(gè)步驟都可以映射為一個(gè)函數(shù),從而實(shí)現(xiàn)一個(gè)業(yè)務(wù)邏輯來部署到云端,實(shí)現(xiàn)快速上線交付。現(xiàn)有微服務(wù)也可以將接口轉(zhuǎn)換為函數(shù),實(shí)現(xiàn)免運(yùn)維的成果。
在編碼測試層面,Serverless 可以提供比微服務(wù)更小、更細(xì)粒度的代碼實(shí)現(xiàn),對應(yīng)的測試單元體積也會(huì)更小,這些都能加快開發(fā)與測試的速度,縮短交付周期。
在交付和運(yùn)維層面,Serverless 架構(gòu)中函數(shù)的發(fā)布與治理由平臺(tái)負(fù)責(zé),進(jìn)一步加快了業(yè)務(wù)邏輯上線;運(yùn)維的部署、升級、彈性縮擴(kuò)容也是平臺(tái)完成,因而可以從傳統(tǒng)的 DevOps 演進(jìn)為 NoOps 的狀態(tài)。
二、AppGallery Connect Serverless 服務(wù)
AppGallery Connect,簡稱 AGC,是華為面向全球應(yīng)用開發(fā)者的一站式服務(wù)平臺(tái)。在沙龍上,華為團(tuán)隊(duì)為開發(fā)者們呈現(xiàn) AppGallery Connect Serverless 服務(wù)的技術(shù)愿景與特色。
1、AppGallery Connect Serverless 現(xiàn)狀與愿景
AppGallery Connect Serverless 的整體方案分為三大層面:
最上層對接行業(yè)解決方案,包括華為內(nèi)部的音樂、視頻等應(yīng)用,以及第三方的快應(yīng)用、快服務(wù)等。針對這些行業(yè)方案,華為 Serverless 生態(tài)會(huì)提供一些便捷的軟件開發(fā)包。
中間層是 AGC Serverless Framework,其中包括云函數(shù)、云存儲(chǔ)、云數(shù)據(jù)庫,形成 BaaS+FaaS 的綜合體,共同幫助開發(fā)人員快速實(shí)現(xiàn)業(yè)務(wù)邏輯,卸除運(yùn)維壓力。
底層依賴華為云自身的 IaaS 和 PaaS 能力,提供堅(jiān)實(shí)可靠的基礎(chǔ)設(shè)施支持。