容器和Serverless要怎么結合,AWS/Azure/GCP都給出了方案

要Serverless應用還是要容器化應用?
大家在用AWS Lambda的時候 , 通常只需要上傳代碼就行 , 無需關注服務器配置 , 但是當用戶還想用容器技術的時候 , 就發現它跟Lambda還是很不一樣 。
AWS上個月介紹了一項關于Lambda的更新 , 允許用戶將Lambda函數打包成容器鏡像 , 最大鏡像能達到10GB 。此次更新意味著用戶可以創建和部署有許多依賴包的大型工作負載 , 比如機器學習這類負載 。
與把函數打包成ZIP包一樣 , 把函數打包成容器鏡像同樣能享受到Lambda一樣的體驗 , 包括簡便的操作性、自動伸縮性、高可用性等優勢 。
Serverles能使用戶在瞬間運行業務代碼 , 它擺脫了設置復雜基礎設施的麻煩 , 并且能輕松在生產環境中提供可伸縮性能力 。
但是Serverless也有其局限性 , 比如 , 有些編程語言是不支持的 , 有些庫是不支持的 。AWS Lambda通過允許用戶自己添加庫和外部代碼 , 這一特性叫做“Lambda layers” 。
類似地 , Azure提供了綁定擴展(Binding Extensions)特性 , 用于構建新類型的綁定 , 這些綁定可以引入到Azure Functions里 。
把Serverless和容器的能力進行結合的做法并不新鮮 , Serverless優勢雖然非常明顯 , 它提供的計算范式非常有吸引力 , 但正因為如此 , 隨著用戶增多 , 其靈活性和使用限制方面的問題也越來越突出 。
云廠商為了解決用戶既想要Serverless , 也想用容器化的需求 , 推出了一系列方案:
比如 , AWS有EC2容器實例 , AWS Lambda , AWS Fargate , EKS , ECS , ECR , 還有剛發布的AWS Lambda layers等 。
Azure和谷歌云GCP也提供了類似的服務 , 比如Azure Container Registry(ACR) , Azure Container Instance(ACI) , Azure Bingding Extesions特性 , 谷歌云GCP的GKE和Google Cloud Run等等 。
云計算廠商提供多種計算服務 , 除了Serverless上的改良方案 , 云廠商也在推行CaaS容器即服務方案 , 我們看看幾家云巨頭提供的CaaS服務 。
介于IaaS和FaaS之間的計算范式:CaaS云計算的優勢在于極大降低了管理硬件的繁重工作 , 隨著云計算的發展 , 用戶需要操作的部分越來越少 , 更多工作將由云服務商來完成 , IaaS是基礎階段 , CaaS是高級階段 , 而FaaS所代表的功能(函數)即服務則是終極階段 。

容器和Serverless要怎么結合,AWS/Azure/GCP都給出了方案


從發展演化的路線來看 , FaaS的追隨者將越來越多 , 不過 , 隨著云廠商管理的抽象層的增多 , 用戶雖然承擔的管理負擔越來越少 , 但是會犧牲靈活性 , 會受到越來越多的操作限制 。
例如 , AWS的EC 2實例是典型的IaaS , 用戶可以選擇各種配置 , 配置網絡防火墻規則和監視內容等 , 看起來挺麻煩 。
又比如 , 在容器編排方面 , 最主要的問題還在于自動伸縮 , 在容器級別定義伸縮規則其實非常困難 , 這部分如果用戶來操作其實也非常麻煩 。
雖然麻煩 , 但能換來極大的靈活性 。
這些操作意味著可以以任何方式進行配置 , 可以選擇任何你喜歡的運行環境 , 還可以自己定義最適合業務需要自動伸縮規則 。

推薦閱讀