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