
隨著時間的推移,Serverless 架構(gòu)變得越來越火熱,憑借著極致彈性、按量付費(fèi)、低成本運(yùn)維等特性,在很多領(lǐng)域發(fā)揮著越來越重要的作用;機(jī)器學(xué)習(xí)領(lǐng)域在近些年也非常火熱,并在越來越多的行業(yè)中得到應(yīng)用。
實(shí)際上,機(jī)器學(xué)習(xí)項(xiàng)目中一直存在兩大難題:
而 Serverless 具有極致彈性、按量付費(fèi)、低成本運(yùn)維等特性,若將 Serverless 架構(gòu)應(yīng)用在機(jī)器學(xué)習(xí)項(xiàng)目中,在保證機(jī)器學(xué)習(xí)項(xiàng)目性能的同時,降低成本,又能提高資源利用率,是非常值得研究和探索的課題。
基于此,由阿里云官方出品,來自阿里云、螞蟻集團(tuán)的 4 位專家劉宇、田初東、盧萌凱、王仁達(dá)(排名不分先后)系統(tǒng)梳理阿里在 Serverless 架構(gòu)下的 AI 經(jīng)驗(yàn),聯(lián)袂推出新書??《Serverless 架構(gòu)下的 AI 應(yīng)用開發(fā):入門、實(shí)戰(zhàn)與性能優(yōu)化》 。

新書將在免費(fèi)在 Serverless 公眾號連載,歡迎大家訂閱關(guān)注
了解Serverless最新動態(tài),獲取更多技術(shù)干貨!
本書是一本關(guān)于 Serverless 架構(gòu)下機(jī)器學(xué)習(xí)實(shí)戰(zhàn)的技術(shù)書,通過對 Serverless 架構(gòu)的基礎(chǔ)介紹、項(xiàng)目開發(fā)經(jīng)驗(yàn)總結(jié),以及常見的機(jī)器學(xué)習(xí)算法、模型、框架的學(xué)習(xí),對將機(jī)器學(xué)習(xí)項(xiàng)目應(yīng)用到 Serverless 架構(gòu)、不同機(jī)器學(xué)習(xí)項(xiàng)目與 Serverless 架構(gòu)結(jié)合以及基于 Serverless 架構(gòu)進(jìn)行機(jī)器學(xué)習(xí)應(yīng)用開發(fā)等內(nèi)容進(jìn)行了探索。
我們希望通過簡單明了的語言、真實(shí)的案例,以及開放的源代碼,為讀者介紹 Serverless 架構(gòu)與機(jī)器學(xué)習(xí)相關(guān)的基礎(chǔ)知識。希望讀者可以通過本書真正理解 Serverless 架構(gòu)與機(jī)器學(xué)習(xí)結(jié)合的重要價值,并能順利在 Serverless 架構(gòu)下開發(fā)、上線機(jī)器學(xué)習(xí)項(xiàng)目,從而更加直接地獲得云計算帶來的技術(shù)紅利。
本書不僅有基礎(chǔ)理論知識,還有大量的經(jīng)驗(yàn)分享,以及對最新技術(shù)點(diǎn)的實(shí)踐應(yīng)用,包括但不限于 Serverless 架構(gòu)下 GPU 實(shí)例的上手、多維度的冷啟動優(yōu)化方案、Serverless 架構(gòu)多模調(diào)試能力等。我們希望讀者通過對本書的學(xué)習(xí),可以對 Serverless 架構(gòu)有一個更加全面、直觀的了解,對 Serverless 架構(gòu)下的機(jī)器學(xué)習(xí)有更加深入的認(rèn)識。同時,希望通過本書的拋磚引玉,幫助讀者將機(jī)器學(xué)習(xí)項(xiàng)目在 Serverless 架構(gòu)下落地,獲得云計算發(fā)展的技術(shù)紅利。本書共 8 章內(nèi)容,可上拉下滑查看目錄 ↓
1.2 Serverless架構(gòu)的特點(diǎn)1.3 Serverless架構(gòu)的應(yīng)用場景第2章 Serverless架構(gòu)下的應(yīng)用開發(fā)2.1 Serverless架構(gòu)下的應(yīng)用開發(fā)流程2.2 與ServerFul應(yīng)用開發(fā)流程對比2.4 Serverless應(yīng)用的開發(fā)和部署2.4.1 如何開發(fā)、部署Serverless應(yīng)用2.4.2 如何對Serverless應(yīng)用進(jìn)行調(diào)試2.4.3 通過開發(fā)者工具進(jìn)行依賴安裝和項(xiàng)目構(gòu)建2.4.4 Serverless架構(gòu)與CI/CD工具的結(jié)合2.5 Serverless應(yīng)用的可觀測性3.1.1 人工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)3.2 常用的機(jī)器學(xué)習(xí)算法3.2.1 常見的監(jiān)督學(xué)習(xí)算法3.2.2 常見的無監(jiān)督學(xué)習(xí)算法3.2.3 其他常見的深度學(xué)習(xí)模型第4章 主流機(jī)器學(xué)習(xí)框架與Serverless架構(gòu)結(jié)合4.1 scikit-learn與Serverless架構(gòu)結(jié)合4.1.2 scikit-learn實(shí)踐:鳶尾花數(shù)據(jù)分類4.1.3 與Serverless架構(gòu)結(jié)合:文本分類4.2 TensorFlow與Serverless架構(gòu)結(jié)合4.2.2 TensorFlow實(shí)踐:基于人工智能的衣物區(qū)分4.2.3 與Serverless架構(gòu)結(jié)合:目標(biāo)檢測系統(tǒng)4.3 PyTorch與Serverless架構(gòu)結(jié)合4.3.2 PyTorch實(shí)踐:圖像分類系統(tǒng)4.3.3 與Serverless架構(gòu)結(jié)合:對姓氏進(jìn)行分類4.4 PaddlePaddle與Serverless架構(gòu)結(jié)合1434.4.2 PaddlePaddle實(shí)踐:手寫數(shù)字識別任務(wù)4.4.3 與Serverless架構(gòu)結(jié)合:Paddle-OCR項(xiàng)目開發(fā)與部署第5章 Serverless架構(gòu)下的AI項(xiàng)目實(shí)戰(zhàn)5.1 Serverless架構(gòu)下的AI應(yīng)用5.1.1 項(xiàng)目的開發(fā)與部署5.1.3 訓(xùn)練與推理性能優(yōu)化5.2 模型升級在Serverless架構(gòu)下的實(shí)現(xiàn)與應(yīng)用5.2.2 貓狗識別項(xiàng)目訓(xùn)練5.2.3 將模型部署到Serverless架構(gòu)5.3 人臉識別在Serverless架構(gòu)下的應(yīng)用5.3.4 項(xiàng)目Serverless化5.4 文本情感分析在Serverless架構(gòu)下的應(yīng)用5.4.3 部署到Serverless架構(gòu)5.4.4 項(xiàng)目Serverless化第6章 基于Serverless架構(gòu)的智能問答系統(tǒng)6.2.1 數(shù)據(jù)庫設(shè)計6.3.2 數(shù)據(jù)庫與表的建設(shè)第7章 基于Serverless架構(gòu)的人工智能相冊小程序7.2.1 數(shù)據(jù)庫設(shè)計7.5.2 如何進(jìn)行本地調(diào)試第8章 Serverless應(yīng)用的優(yōu)化與注意事項(xiàng)8.1.1 函數(shù)并不是“函數(shù)”8.2.1 云廠商側(cè)的冷啟動優(yōu)化方案8.2.2 開發(fā)者側(cè)降低冷啟動影響的方案8.3 應(yīng)用開發(fā)注意事項(xiàng)8.3.4 應(yīng)用組成結(jié)構(gòu)注意事項(xiàng)8.3.5 如何實(shí)現(xiàn)WebSocket第 1 章:介紹 Serverless 架構(gòu)基礎(chǔ),包括 Serverless 架構(gòu)的發(fā)展、優(yōu)勢、面臨的挑戰(zhàn)等;第 2 章:從 Serverless 架構(gòu)的開發(fā)流程、與 ServerFul 開發(fā)流程的對比、傳統(tǒng)框架遷移等多個方面,對 Serverless 架構(gòu)下的應(yīng)用開發(fā)進(jìn)行相關(guān)介紹;第 3 章:介紹機(jī)器學(xué)習(xí)相關(guān)的探索,包括對支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)等算法和模型的學(xué)習(xí)與研究;第 4 章:介紹常見的機(jī)器學(xué)習(xí)框架以及在實(shí)戰(zhàn)項(xiàng)目中的應(yīng)用,便于讀者了解常見的機(jī)器學(xué)習(xí)框架,以及部署到 Serverless 架構(gòu)的方案等;第 5 章:介紹幾個機(jī)器學(xué)習(xí)應(yīng)用較為廣泛的領(lǐng)域的項(xiàng)目實(shí)戰(zhàn),包括圖像識別領(lǐng)域、情感分析領(lǐng)域以及對模型升級迭代相關(guān)領(lǐng)域的探索,涉及容器鏡像、預(yù)留實(shí)例、GPU 實(shí)例等諸多 Serverless 架構(gòu)的新功能和特性;第 6 章和第 7 章:介紹兩個完整的 Serverless 架構(gòu)與 AI 結(jié)合的案例,從項(xiàng)目背景開始到相關(guān)模塊的設(shè)計、項(xiàng)目的開發(fā)與部署,通過完整的流程講解 Serverless 架構(gòu)下機(jī)器學(xué)習(xí)項(xiàng)目的上手、開發(fā)、維護(hù)全過程;第 8 章:針對 Serverless 架構(gòu)進(jìn)行相關(guān)開發(fā)經(jīng)驗(yàn)的分享以及 Serverless 應(yīng)用調(diào)優(yōu)方法的總結(jié),包括 Serverless 架構(gòu)下的冷啟動優(yōu)化方案、開發(fā)注意事項(xiàng)等內(nèi)容。
本章通過對 Serverless 架構(gòu)概念的探索,對 Serverless 架構(gòu)的優(yōu)勢與價值、挑戰(zhàn)與困境進(jìn)行分析,以及 Serverless 架構(gòu)應(yīng)用場景的分享,為讀者介紹 Serverless 架構(gòu)的基礎(chǔ)內(nèi)容。通過本章的學(xué)習(xí),讀者將對 Serverless 架構(gòu)的理論基礎(chǔ)有一定的了解和認(rèn)識。Serverless 架構(gòu)的概念
隨著云服務(wù)的發(fā)展,計算資源被高度抽象化,從物理機(jī)到云服務(wù)器,再到容器服務(wù),計算資源逐漸細(xì)膩化。2012 年,Iron.io 的副總裁 Ken Form 在 “Why The Future of Software and Apps is Serverless” 一文中首次提出了無服務(wù)器的概念,并指出 “即使云計算已經(jīng)逐漸興起,但是大家仍然在圍繞著服務(wù)器轉(zhuǎn)。不過,這不會持續(xù)太久,云應(yīng)用正在朝著無服務(wù)器方向發(fā)展,這將對應(yīng)用程序的創(chuàng)建和分發(fā)產(chǎn)生重大影響”。2019 年,UC Berkeley 發(fā)表論文 “Cloud Programming Simplified: A Berkeley View on Serverless Computing”。在文章中,作者犀利斷言 “新的 BaaS 存儲服務(wù)會被發(fā)明,以擴(kuò)展在 Serverless 計算上能夠運(yùn)行更加適配的應(yīng)用程序類型。這樣的存儲能夠與本地塊存儲的性能相匹配,而且具有臨時和持久可供選擇特性。基于 Serverless 計算的價格將低于 ServerFul 計算,至少不會高于 ServerFul 計算。Serverless 計算一旦取得技術(shù)上的突破,將會導(dǎo)致 ServerFul 服務(wù)的下滑。Serverless 將會成為云時代默認(rèn)的計算范式,將會取代 ServerFul 計算,這也意味著服務(wù)器—客戶端模式的終結(jié)”。Serverless 架構(gòu)從 2012 年首次走進(jìn)大眾視野到 2019 年成為 UC Berkeley 對云計算領(lǐng)域犀利斷言的主角,完成了從一個 “新的觀點(diǎn)” 向 “萬眾矚目的架構(gòu)” 轉(zhuǎn)身。在這 7 年時間里,Serverless 架構(gòu)從鮮為人知到被商業(yè)化應(yīng)用,再到頭部云廠商紛紛布局 Serverless 架構(gòu)作為云計算戰(zhàn)略,逐漸成為人盡皆知的新技術(shù)范式。當(dāng)然,在這 7 年間,Serverless 不僅僅在技術(shù)架構(gòu)方面逐漸升級和完善,概念也越來越明確,發(fā)展方向也逐漸清晰、明朗。關(guān)于 Serverless 的定義,Martin Fowler 在 “Serverless Architectures” 一文中指出 Serverless 實(shí)際上是 BaaS 與 FaaS 的組合。這個簡單明了的定義為 Serverless 架構(gòu)組成結(jié)構(gòu)奠定了基礎(chǔ)。如圖 1-1 所示,Martin Fowler 認(rèn)為,在 Serverless 架構(gòu)中,應(yīng)用的一部分服務(wù)器端邏輯依然由開發(fā)者完成,但是和傳統(tǒng)架構(gòu)不同,它運(yùn)行在一個無狀態(tài)的計算容器中,由事件驅(qū)動、生命周期很短(甚至只有一次調(diào)用)、完全由第三方管理,這種情況被稱為 Functions as a Service(FaaS)。除此之外,Serverless 架構(gòu)還要有部分依賴第三方(云端)應(yīng)用或服務(wù)來管理服務(wù)器端邏輯和狀態(tài)的應(yīng)用,這些應(yīng)用通常是富客戶端應(yīng)用(單頁應(yīng)用或者移動端 App),建立在云服務(wù)生態(tài)之上,包括數(shù)據(jù)庫(Parse、Firebase)、賬號系統(tǒng)(Auth0、AWS Cognito)等,而這些服務(wù)最早被稱為 Backend as a Service(BaaS)。
1-1 Serverless 架構(gòu)組成結(jié)構(gòu)
同樣認(rèn)為 Serverless 是 FaaS 與 BaaS 結(jié)合而成的 CNCF 在 CNCF WG-Serverless Whitepaper v1.0 中對 Serverless 架構(gòu)的定義進(jìn)行了進(jìn)一步完善:Serverless 是指構(gòu)建和運(yùn)行不需要服務(wù)器管理的應(yīng)用程序概念;它描述了一種更細(xì)粒度的部署模型,其中將應(yīng)用程序打包為一個或多個功能模塊,上傳到平臺,然后被執(zhí)行、擴(kuò)展和計費(fèi),以響應(yīng)當(dāng)時確切的需求。與此同時,2019 年 UC Berkeley 的文章 “Cloud Programming Simplified: A Berkeley View on Serverless Computing” 中同樣從 Serverless 架構(gòu)特性角度,對什么是 Serverless 進(jìn)行了補(bǔ)充描述和定義:簡單地說,Serverless = FaaS + BaaS,必須具備彈性伸縮和按量付費(fèi)的特點(diǎn)。在中國信息通信研究院(以下簡稱“信通院”)云原生產(chǎn)業(yè)聯(lián)盟所發(fā)布的《云原生發(fā)展白皮書(2020 年)》中對 Serverless 的概念也有相關(guān)的描述:無服務(wù)器(即 Serverless)是一種架構(gòu)理念,其核心思想是將提供服務(wù)資源的基礎(chǔ)設(shè)施抽象成各種服務(wù),以 API 接口的方式供給用戶按需調(diào)用,真正做到按需伸縮、按使用收費(fèi)。這種架構(gòu)體系消除了對傳統(tǒng)的海量持續(xù)在線服務(wù)器組件的需求,降低了開發(fā)和運(yùn)維的復(fù)雜度,降低運(yùn)營成本并縮短了業(yè)務(wù)系統(tǒng)的交付周期,使得用戶能夠?qū)W⒃趦r值密度更高的業(yè)務(wù)邏輯開發(fā)上。至此,Serverless 架構(gòu)從結(jié)構(gòu)、行為以及特性方面的定義可以總結(jié)為圖 1-2。
1-2 從不同角度對 Serverless 架構(gòu)進(jìn)行定義
Serverless 架構(gòu)的特點(diǎn)
眾所周知,事物具有兩面性。時至今日,云計算的發(fā)展已經(jīng)取得了巨大的進(jìn)步,但是作為云計算最新產(chǎn)物的 Serverless 架構(gòu),在巨大的優(yōu)勢背后,仍然面臨著不可忽略的挑戰(zhàn)。亞馬遜 AWS 首席云計算技術(shù)顧問費(fèi)良宏曾說:今天大多數(shù)公司在開發(fā)應(yīng)用程序并將其部署在服務(wù)器時,無論選擇公有云還是私有的數(shù)據(jù)中心,都需要提前了解究竟需要多少臺服務(wù)器、多大容量的存儲和數(shù)據(jù)庫的功能等,并需要部署、運(yùn)行應(yīng)用程序和依賴的軟件到基礎(chǔ)設(shè)施之上。假設(shè)不想在這些細(xì)節(jié)上花費(fèi)精力,是否有一種簡單的架構(gòu)能夠滿足這種需求?時至今日,伴隨 Serverless 架構(gòu)逐漸 “走進(jìn)尋常百姓家”,答案已經(jīng)很明顯了。在項(xiàng)目上線過程中,我們一般需要申請主機(jī)資源,這時候需花很多時間和精力去評估峰值最大開銷,即使給某些服務(wù)按照最大消耗申請資源,也要有專人在不同時間段進(jìn)行資源的擴(kuò)容或縮容,以達(dá)到保障業(yè)務(wù)穩(wěn)定與節(jié)約成本的平衡。對于一些服務(wù)來說,有時候申請的資源還需要在最大開銷基礎(chǔ)上評估,即使可能出現(xiàn)很多流量波谷,并產(chǎn)生大量的資源浪費(fèi),也不得不這樣做,比如數(shù)據(jù)庫這種很難擴(kuò)展的應(yīng)用就是 “盡管浪費(fèi)資源也比峰值到來時應(yīng)用程序因?yàn)橘Y源不足而無法服務(wù)好”。正如費(fèi)良宏所說,在 Serverless 架構(gòu)下,這個問題得到了比較好的解決,不用計劃到底需要使用多少資源,而是根據(jù)實(shí)際需要來請求資源,根據(jù)使用時間來付費(fèi),根據(jù)每次申請的計算資源來付費(fèi),且讓計費(fèi)的粒度更小,更有利于降低資源的開銷。Serverless 架構(gòu)具有 6 個潛在優(yōu)勢。- 根據(jù)需要在短期內(nèi)支付使用計算資源的能力。
- 通過復(fù)用來自不同組織的工作負(fù)載來提高硬件利用率。
相對于傳統(tǒng)架構(gòu),Serverless 架構(gòu)確實(shí)具備業(yè)務(wù)聚焦、彈性伸縮、按量付費(fèi)等優(yōu)勢。這些優(yōu)勢往往是開發(fā)者在技術(shù)選型時的重要參考。所謂的業(yè)務(wù)聚焦,指的是讓開發(fā)者將更多精力放在自身的業(yè)務(wù)邏輯之上,而不需要再花費(fèi)更多精力關(guān)注底層資源。眾所周知,單體架構(gòu)時代應(yīng)用比較簡單,物理服務(wù)器的資源足以支撐業(yè)務(wù)的部署。隨著業(yè)務(wù)的復(fù)雜程度飆升,功能模塊復(fù)雜且龐大,單體架構(gòu)嚴(yán)重阻塞了開發(fā)部署的效率。于是,業(yè)務(wù)功能解耦,可并行開發(fā)和部署單獨(dú)模塊的微服務(wù)架構(gòu)逐漸流行開來。業(yè)務(wù)的精細(xì)化管理不可避免地推動著基礎(chǔ)資源利用率的提升。如圖 1-3 所示,虛擬化技術(shù)不斷被完善和廣泛運(yùn)用之后,打通了物理資源隔閡,減輕了用戶管理基礎(chǔ)架構(gòu)的負(fù)擔(dān)。容器和 PaaS 平臺則進(jìn)一步抽象,提供了應(yīng)用的依賴服務(wù)、運(yùn)行環(huán)境和底層所需的計算資源。這使得應(yīng)用的開發(fā)、部署和運(yùn)維的整體效率再度提升。Serverless 架構(gòu)則將計算抽象得更加徹底,將應(yīng)用架構(gòu)堆棧中的各類資源的管理全部委托給平臺,免去基礎(chǔ)設(shè)施的運(yùn)維,使用戶能夠聚焦高價值的業(yè)務(wù)領(lǐng)域。
1-3 虛擬機(jī)、容器、Serverless 架構(gòu)演進(jìn)簡圖
所謂的彈性伸縮,指的是可以根據(jù)業(yè)務(wù)流量波動,自動進(jìn)行資源的分配和銷毀,以最大限度地實(shí)現(xiàn)平衡穩(wěn)定、高性能以及提高資源利用率。眾所周知,從 IaaS 到 PaaS 再到 SaaS 的過程中,去服務(wù)器化越來越明顯。到了Serverless架構(gòu),去服務(wù)器化已經(jīng)上升到一個新的高度。相對于 ServerFul 而言,Serverless 對業(yè)務(wù)用戶強(qiáng)調(diào)的是 Noserve r的心智。所謂的 Noserver,不是說脫離了服務(wù)器或者說不需要服務(wù)器,而是去除有關(guān)對服務(wù)器運(yùn)行狀態(tài)的關(guān)心和擔(dān)心,這也就意味著原先需要對服務(wù)器進(jìn)行擴(kuò)容和縮容的操作也都不再需要業(yè)務(wù)人員關(guān)注了,都交給云商場進(jìn)行管理。如圖 1-4所 示,折線為一個網(wǎng)站在某天的流量走勢。
1-4 傳統(tǒng)云主機(jī)架構(gòu)與Serverless架構(gòu)彈性模式下流量與負(fù)載對比示意圖- 技術(shù)人員需要對網(wǎng)站資源用量進(jìn)行評估,評估結(jié)果是這個網(wǎng)站最大的流量峰值為800PV/小時,所以購買了對應(yīng)的云服務(wù)器。
- 但是在當(dāng)天的10時,運(yùn)維人員發(fā)現(xiàn)網(wǎng)站流量突然增加,逐漸臨近800PV/小時。此時,運(yùn)維人員在線上購買了一臺新的云主機(jī)并進(jìn)行了環(huán)境的配置,最后在Master機(jī)器上添加了對應(yīng)的策略,度過了10~15時的流量峰值。
- 過了15時,運(yùn)維人員發(fā)現(xiàn)流量恢復(fù)正常,對后加入策略的云主機(jī)進(jìn)行停止,并將額外的資源釋放。
- 到了18時,再次發(fā)現(xiàn)過載流量的到來……
從圖 1-4b 可以清晰地看到,負(fù)載能力始終和流量是匹配的(當(dāng)然,這個圖本身存在一定問題,即真實(shí)的負(fù)載能力在一定程度上可能略高于當(dāng)前流量),即并不需要像傳統(tǒng)云主機(jī)架構(gòu)那樣在技術(shù)人員的干預(yù)下應(yīng)對流量的波峰和波谷,其彈性能力(包括擴(kuò)容和縮容)均由云廠商提供。通過對圖 1-4 的分析不難看出,Serverless 架構(gòu)所具備的彈性能力在一定程度上來源于廠商的運(yùn)維技術(shù)支持。Serverless 架構(gòu)所主張的 “把更專業(yè)的事情交給更專業(yè)的人,讓開發(fā)者更加專注自身的業(yè)務(wù)邏輯即可”,在彈性模式上也是一個非常直觀的體現(xiàn)。所謂的按量付費(fèi),指的是 Serverless 架構(gòu)支持用戶按照實(shí)際的資源使用量進(jìn)行付費(fèi),可以最大限度提高用戶側(cè)資源使用效率,降低成本。在傳統(tǒng)云主機(jī)架構(gòu)下,服務(wù)器一旦被購買和運(yùn)行,就在持續(xù)消耗資源,并且持續(xù)產(chǎn)生費(fèi)用。盡管每臺服務(wù)器的可用資源是有限的,通常也是固定的,但是服務(wù)器每時每刻的負(fù)載是不同的,資源使用率也是不同的,這就導(dǎo)致傳統(tǒng)云主機(jī)架構(gòu)下,會比較明顯地產(chǎn)生一定的資源浪費(fèi)。一般情況下,白天資源利用率相對較高,資源浪費(fèi)少一些;夜間資源利用率較低,資源浪費(fèi)會相對高一些。按照《福布斯》雜志的統(tǒng)計,商業(yè)和企業(yè)數(shù)據(jù)中心的典型服務(wù)器僅提供 5%~15% 平均最大處理能力的輸出,這無疑證明了剛剛對傳統(tǒng)云主機(jī)架構(gòu)的資源使用率和浪費(fèi)程度分析的正確性。Serverless 架構(gòu)則可以讓用戶委托服務(wù)提供商管理服務(wù)器、數(shù)據(jù)庫和應(yīng)用程序,甚至邏輯。這種做法一方面減少了用戶自己維護(hù)的麻煩,另一方面用戶可以根據(jù)自己實(shí)際使用的粒度進(jìn)行成本的支付。對于服務(wù)商而言,它們可以將更多的閑置資源進(jìn)行處理。這從成本、“綠色” 計算角度來說,都是非常不錯的。
1-5 傳統(tǒng)云主機(jī)架構(gòu)與 Serverless 架構(gòu)彈性模式下流量與費(fèi)用支出對比示意圖如圖 1-5 所示,折線為一個網(wǎng)站在某天的流量走勢圖。圖 1-5a 是傳統(tǒng)云主機(jī)架構(gòu)下流量與費(fèi)用支出示意圖。通常,業(yè)務(wù)在上線之前是需要進(jìn)行資源使用量評估的。工作人員在對該網(wǎng)站的資源使用量評估之后,購買了一臺可以承受每小時最大 1300PV 的服務(wù)器。在一整天內(nèi),這臺服務(wù)器所提供的算力總量為陰影面積,所需要支出的費(fèi)用也是陰影面積對應(yīng)算力的費(fèi)用。但是很明顯可以看出,真正有效的資源使用與費(fèi)用支出僅僅是流量曲線下的面積,而流量曲線上方的陰影部分則為資源損耗與額外的支出部分。圖 1-5b 是 Serverless 架構(gòu)彈性模式下費(fèi)用支出示意圖。可以清晰地看到,費(fèi)用支出和流量基本是正比關(guān)系,即當(dāng)流量處于一個較低數(shù)值時,對應(yīng)的資源使用量是相對較少的,對應(yīng)的費(fèi)用支出也是相對較少的;當(dāng)流量處于一個較高數(shù)值時,資源使用量和費(fèi)用支出為正相關(guān)增長。在整個過程中,可以清晰地看出 Serverless 架構(gòu)并未像傳統(tǒng)云主機(jī)架構(gòu)樣產(chǎn)生明顯的資源浪費(fèi)與額外的成本支出。通過對圖 1-5 的分析,不難看出 Serverless 架構(gòu)所具備的彈性伸縮能力與按量付費(fèi)模型進(jìn)行有機(jī)結(jié)合,可以最大限度地避免資源浪費(fèi)、降低業(yè)務(wù)成本。除前面所說的業(yè)務(wù)聚焦、彈性伸縮、按量付費(fèi)等優(yōu)勢,Serverless 架構(gòu)還具備其他優(yōu)勢。- 縮短業(yè)務(wù)創(chuàng)新周期:由于 Serverless 架構(gòu)在一定程度上是 “云廠商努力做更多,讓開發(fā)者更關(guān)注自身的業(yè)務(wù)” 的模式,因此我們可以認(rèn)為開發(fā)者將會付出更少的時間、精力在 ServerFul 架構(gòu)所需要關(guān)注的 OS 層面、云主機(jī)層面、系統(tǒng)環(huán)境層面,更專注自身的業(yè)務(wù)邏輯,這帶來的直接效果就是提高項(xiàng)目的上線效率、降低業(yè)務(wù)的創(chuàng)新周期、提高研發(fā)交付速度。
- 系統(tǒng)安全性更高:雖然 Serverless 架構(gòu)在一定程度上有一種 “黑盒” 即視感,但正因?yàn)槿绱耍琒erverless 架構(gòu)往往不會提供登錄實(shí)例的功能,也不會對外暴露系統(tǒng)的細(xì)節(jié)。同時,操作系統(tǒng)等層面的維護(hù)也都交給云廠商,這意味著在一定程度上 Serverless 架構(gòu)是更加安全的:一方面表現(xiàn)在 Serverless 架構(gòu)只對外暴露預(yù)定的,且需要暴露的服務(wù)和接口,相對云主機(jī)在一定程度上免去了被暴力破解的風(fēng)險;另一方面表現(xiàn)在云廠商有 更加專業(yè)的安全團(tuán)隊(duì)和服務(wù)器運(yùn)維團(tuán)隊(duì)來幫助開發(fā)者保障整體的業(yè)務(wù)安全與服務(wù)穩(wěn)定。
- 更平穩(wěn)的業(yè)務(wù)變更:Serverless 架構(gòu)是由云服務(wù)商提供的一種天然分布式架構(gòu),同時又因?yàn)?Noserver 的特性免除了開發(fā)者對服務(wù)器運(yùn)行狀態(tài)的關(guān)心和擔(dān)心,所以在 Serverless 架構(gòu)下,開發(fā)者對業(yè)務(wù)代碼、配置的變更操作非常簡單,只需要通過云廠商所提供的工具進(jìn)行更改即可,待新的業(yè)務(wù)邏輯平穩(wěn)生效后則不再需要開發(fā)者關(guān)注。所以,Serverless 架構(gòu)在業(yè)務(wù)的平滑升級、變更、敏捷開發(fā)、功能迭代、灰度發(fā)布等多個層面有著極大的優(yōu)勢。
當(dāng)然,即使上面已經(jīng)舉例說明了很多 Serverless 架構(gòu)的優(yōu)勢,我們?nèi)匀粵]辦法枚舉出其全部的優(yōu)勢和價值。但不可否認(rèn)的是,Serverless 架構(gòu)正在被更多人關(guān)注,也正在被更多團(tuán)隊(duì)和個人所接受和應(yīng)用,其價值已快速突顯出來。??提前解鎖書籍全部內(nèi)容:
https://item.m.jd.com/product/13247975.html
點(diǎn)擊閱讀原文,直達(dá)阿里云函數(shù)計算 FC!