- 華為Serverless核心技術與實踐
- 劉方明等
- 850字
- 2022-05-06 18:19:54
1.2.1 Serverless的定義
那么Serverless到底是什么呢?維基百科將Serverless定義為一種云計算執行模型。
? 云服務商按需分配計算機資源,開發者無須運維這些資源,不用關心容器、虛擬機或物理服務器的容量規劃、配置、管理、維護、操作和擴展。
? Serverless計算無狀態,可在短時間內完成計算,其結果保存在外部存儲中。
? 當不使用某個應用時,不向其分配計算資源。
? 計費基于應用消耗的實際資源來度量。
CNCF(Cloud Native Computing Foundation,云原生計算基金會)認為Serverless旨在構建和運行不需要服務器管理的應用程序,二者的不同之處在于它描述了一個更細粒度的部署模型,能夠以一個或多個函數的形式將應用打包并上傳到平臺執行,并且按需執行、自動擴展和計費。
Serverless并不意味著不需要服務器來托管和運行代碼,也不意味著不再需要運維工程師。Serverless是指開發者不再需要將時間和資源花費在服務器調配、維護、更新、擴展和容量規劃上,這些任務都由Serverless平臺處理,開發者只需要專注于編寫應用程序的業務邏輯,運維工程師能夠將精力放在業務運維上。綜合維基百科和CNCF的定義,可以認為Serverless是一種云計算執行、部署和計費模型,Serverless服務按請求為應用分配資源,按照使用計費,基礎設施全托管(無須關心維護、擴容等)。
目前,Serverless服務主要分為FaaS和BaaS。
? 函數即服務(Function as a Service,FaaS):開發者實現的服務器端應用邏輯(微服務甚至粒度更小的服務)以事件驅動的方式運行在無狀態的臨時容器中,這些容器和計算資源完全由云提供商管理。如圖1-7所示,從開發者角度來看,FaaS和IaaS/PaaS相比,其擴容的維度從應用級別降低到函數級別,開發者只需關心和維護業務層面的正常運行,其他部分如運行時、容器、操作系統、硬件等,都由云提供商來解決。

圖1-7 FaaS與IaaS、PaaS的區別
? 后端即服務(Backend as a Service,BaaS):基于API的三方服務,用來取代應用程序中功能的核心子集。由于這些API是作為自動擴展和透明運行的服務提供的,因此從開發者和運維工程師的角度來看似乎是無服務器的。非計算類的全托管服務,如消息隊列等中間件、NoSQL數據庫服務、身份驗證服務等,都可以認為是BaaS服務。
FaaS通常是承載業務邏輯代碼的服務,開發者會更為關心,它也是本書重點介紹的內容。