Serverless

Serverless,即無服務器架構,將大家從服務器中解放了出來,只需要關注業務邏輯本身。用戶只需要關注數據和業務邏輯,無需維護服務器,也不需要關心繫統的容量和擴容。Serverless 本質上是一種更簡單易用的 PaaS,包含兩種含義:

僅依賴雲端服務來管理業務邏輯和狀態的應用或服務,一般稱爲 BaaS (Backend as a Service) 事件驅動且短時執行應用或服務,其主要邏輯由開發者完成,但由第三方管理(比如 AWS Lambda),一般稱爲 FaaS (Function as a Service)。目前大火的 Serverless 一般是指 FaaS。

引入 serverless 可以給應用開發者帶來明顯的好處

  • 用戶無需配置和管理服務器

  • 用戶服務不需要基於特定框架或軟件庫

  • 部署簡單,只需要將代碼上傳到 serverless 平臺即可

  • 完全自動化的橫向擴展

  • 事件觸發,比如 http 請求觸發、文件更新觸發、時間觸發、消息觸發等

  • 低成本,比如 AWS Lambda 按執行時間和觸發次數收費,在代碼未運行時無需付費

當然,serverless 也並非銀彈,也有其特有的侷限性

  • 無狀態,服務的任何進程內或主機狀態均無法被後續調用所使用,需要藉助外部數據庫或網絡存儲管理狀態

  • 每次函數調用的時間一般都有限制,比如 AWS Lambda 限制每個函數最長只能運行 5 分鐘

  • 啓動延遲,特別是應用不活躍或者突發流量的情況下延遲尤爲明顯

  • 平臺依賴,比如服務發現、監控、調試、API Gateway 等都依賴於 serverless 平臺提供的功能

開源框架

商業產品

很多商業產品也可以與 Kubernetes 進行無縫集成,即通過 Virtual Kubelet 將商業 Serverless 產品(如 ACI 和 Fargate等)作爲 Kubernetes 集群的一個無限 Node 使用,這樣就無需考慮 Node 數量的問題。

參考文檔

Last updated