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