**
一、Serverless是什么?**
Serverless譯為“無服務(wù)器”,是指應(yīng)用程序的編碼人員和運(yùn)維人員無需關(guān)注“服務(wù)器”的信息,僅關(guān)注業(yè)務(wù)所涉及的代碼邏輯即可。而“服務(wù)器”相關(guān)工作由第三方(AWS、阿里云)來完成。
我們知道,如果要從0開始上線一個(gè)業(yè)務(wù)APP,大致需要做以下工作:
(1)購(gòu)買服務(wù)器;
(2)安裝操作系統(tǒng);
(3)搭建開發(fā)環(huán)境;
(4)構(gòu)建與部署APP;
(5)構(gòu)建高可用與彈性的運(yùn)行環(huán)境(如負(fù)載均衡和自動(dòng)伸縮);
(6)建立APP運(yùn)行的可觀測(cè)性(日志分析與可視監(jiān)控)。
無服務(wù)器架構(gòu)的用戶則只需負(fù)責(zé)(4)和(6);而其它項(xiàng)則由第三方來完成。
從應(yīng)用架構(gòu)的角度來看, 《高冷的云原生,原來可以這樣理解》 一文講解到了單體架構(gòu)、微服務(wù)等。如果進(jìn)一步將微服務(wù)進(jìn)行劃分,可形成“函數(shù)粒度”的服務(wù),這些服務(wù)由事件驅(qū)動(dòng)并由完全由第三方管理,稱為函數(shù)計(jì)算或者FAAS(Function as a Service)。開發(fā)人員只需要編寫函數(shù)就可以了,無需關(guān)注(第三方來完成)計(jì)算資源的高可用性、彈性等工作。
正如CNCF(Cloud Native Computing Foundation)對(duì)Serverless架構(gòu)的定義:
Serverless是指構(gòu)建和運(yùn)行不需要服務(wù)器管理的應(yīng)用程序概念。它描述了一種更細(xì)粒度的部署模型,其中將應(yīng)用程序打包為一個(gè)或多個(gè)功能,上傳到平臺(tái),然后執(zhí)行、擴(kuò)展和計(jì)費(fèi),以響應(yīng)當(dāng)時(shí)確切的需求。
函數(shù)計(jì)算是事件驅(qū)動(dòng)的無狀態(tài)應(yīng)用,需要事件源和管理狀態(tài)。能夠產(chǎn)生事件的源有很多:對(duì)象存儲(chǔ)、數(shù)據(jù)庫(kù)、日志服務(wù)、表格存儲(chǔ)等等,這些服務(wù)通常由公有云(AWS、阿里云)配套提供,稱為后端即服務(wù)BaaS(Backend as a Service)。
正如UC Berkeley在 Cloud Programming Simplified: A Berkeley View on Serverless Computing一文中提到的Serverless架構(gòu):Serverless = FaaS + BaaS。
從基礎(chǔ)設(shè)施的角度來看,先后經(jīng)過了物理服務(wù)器、虛擬機(jī)、容器,現(xiàn)在發(fā)展到了Serverless。相應(yīng)地,計(jì)算資源調(diào)度的粒度越來越細(xì),越來越有彈性。套用阿里云官網(wǎng)的函數(shù)計(jì)算應(yīng)用場(chǎng)景--視頻轉(zhuǎn)碼:
二、為什么會(huì)出現(xiàn)Serverless?
人們總是追求效率、成本。
圍繞著云計(jì)算,現(xiàn)在已經(jīng)從云計(jì)算、云原生發(fā)展到Serverless,演進(jìn)的背后原理已經(jīng)在 《高冷的云原生,原來可以這樣理解》 進(jìn)行了探討。
這里引用Ben kehoe的Serverless考量:
(1)我的業(yè)務(wù)是什么?
(2)做這件事情能不能讓我的業(yè)務(wù)出類拔萃?
(3)如果不能,我為什么要做這件事情而不是讓別人來解決這個(gè)問題?
(4)在解決業(yè)務(wù)問題之前沒有必要解決技術(shù)問題。
三、Serverless架構(gòu)是如何實(shí)踐的?
Serverless的本質(zhì)是讓開發(fā)人員最大限度地去關(guān)注業(yè)務(wù),進(jìn)行業(yè)務(wù)創(chuàng)新,而不要把精力花費(fèi)在底層運(yùn)行環(huán)境所需要的高可用、彈性、安全等因素上。
Serverless最為直接的實(shí)踐便是函數(shù)計(jì)算:
Amazon Lambda是一種事件驅(qū)動(dòng)的計(jì)算引擎,” 用戶無需預(yù)置或管理基礎(chǔ)設(shè)施即可運(yùn)行代碼。只需編寫代碼并將其作為 .zip 文件或容器鏡像上傳即可。 ”
阿里云有函數(shù)計(jì)算。
其基本流程為:
開發(fā)者進(jìn)行代碼上傳:以Java為例,上傳的是jar包,同時(shí)會(huì)指定入口函數(shù)、當(dāng)前版本、所需資源(內(nèi)存)等信息。
當(dāng)云產(chǎn)品事件源觸發(fā)事件時(shí),資源調(diào)度服務(wù)會(huì)依據(jù)函數(shù)計(jì)算的相關(guān)信息,進(jìn)行申請(qǐng)函數(shù)實(shí)例。申請(qǐng)方式與VM、Docker類似,都是分布式集群里面,采用某種算法進(jìn)行選擇。
函數(shù)實(shí)例運(yùn)行在VM中,同一個(gè)VM只運(yùn)行同一用戶的不同函數(shù),以實(shí)現(xiàn)安全隔離。
除此之外,阿里云也進(jìn)行了廣泛的探索,其路線圖為:
SAE(Serverless App Engine,Serverless應(yīng)用引擎)是面向應(yīng)用的Serverless PaaS平臺(tái),實(shí)現(xiàn)了Serverless的理念:幫助PaaS層用戶免運(yùn)維IaaS、按需使用、按量計(jì)費(fèi),做到低門檻微服務(wù)應(yīng)用上云。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
8982瀏覽量
85107 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3238瀏覽量
57556 -
serverless
+關(guān)注
關(guān)注
0文章
65瀏覽量
4490
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論