背景
雲計算的發展,在經歷了IaaS(Infrastructure as a Service-基礎設施即服務),PaaS(Platform as a Service-平臺即服務),SaaS(Software as a Service-軟件即服務)幾個階段後,Serverless(無服務器化)趨勢越發明顯。
無服務器計算(Serverless Computing)作爲雲原生計算模型的應用也日臻完善,相關產品也是各雲廠商競相角逐的戰場,本文對主要廠商AWS, Alibaba Cloud,Azure相關產品基本面進行對比
基本面比較
|
|||
比較版本 |
2019.2.26 線上 |
2019.2.26 線上 |
2019.2.26 線上 |
產品描述 |
AWS Lambda 是一項計算服務,可使您無需預配置或管理服務器即可運行代碼。AWS Lambda 只在需要時執行您的代碼並自動縮放,從每天幾個請求到每秒數千個請求。您只需按消耗的計算時間付費 – 代碼未運行時不產生費用。 |
函數計算是事件驅動的全託管計算服務。使用函數計算,您無需採購與管理服務器等基礎設施,只需編寫並上傳代碼。函數計算爲您準備好計算資源,彈性地可靠地運行任務,並提供日誌查詢、性能監控和報警等功能。藉助函數計算,您可以快速構建任何類型的應用和服務,並且只需爲任務實際消耗的資源付費。 |
Azure Functions 是用於在雲中輕鬆運行小段代碼或“函數”的一個解決方案。 用戶可以只編寫解決現有問題所需的代碼,而無需擔心要運行該代碼的整個應用程序或基礎結構。 Functions 可使開發更有效率,並可以使用自己所選的開發語言,例如 C#、F#、Node.js、Java 或 PHP。 只需爲代碼運行的時間付費,並可信任 Azure 會根據需要進行調整。 使用 Azure Functions,可在 Microsoft Azure 上開發無服務器應用程序。 |
相關概念 |
函數、層、觸發器、事件源 |
服務、函數、觸發器、事件源 |
函數、觸發器 |
基本使用流程 |
創建函數 => [配置觸發器] => 執行函數 |
創建服務 => 創建函數 => [配置觸發器] => 執行函數 |
創建函數應用=>創建函數 => [配置觸發器] => 執行函數 |
版本控制 |
支持 |
支持 |
支持 |
函數調用類型 |
同步、異步 |
同步、異步 |
同步、異步 |
函數執行方式 |
|
|
|
伸縮 |
自動 |
自動 |
|
函數編排 |
|
Azure Logic Apps + Durable functions |
|
事件源(觸發函數的集合) |
AWS服務
|
|
|
支持語言 |
|
|
|
測試 |
支持 |
支持 |
支持 |
開發工具 |
|
|
|
幫助資料 |
|
|
|
最佳實踐 |
|
使用限制
|
|||
函數存儲空間 |
75GB(層和代碼默認限制,可以提高) |
原始代碼大小250MB |
|
函數內存分配 |
128 MB 到3008 MB, 以64MB爲增量 |
最大3GB |
|
函數超時 |
900 秒(15 分鐘) |
600秒(10分鐘) |
600秒(10分鐘) |
函數環境變量 |
4 KB |
|
|
調用負載(請求和響應) |
6 MB(同步) 256 KB(異步) |
|
|
部署程序包大小 |
50 MB(已壓縮,可直接上傳) 250 MB(解壓縮,包括層) 3 MB(控制檯編輯器) |
50MB(.zip/.jar) |
|
/tmp目錄存儲 |
512MB |
512MB |
|
文件描述符 |
1024 |
1024 |
|
執行進程/線程 |
1024 |
1024 |
|
開發方式 |
|
|
|
函數個數限制 |
無限制 |
單個服務下最多創建50個函數 單個函數下最多創建10個觸發器 |
無限制 |
更多限制 |
|
監控及日誌
|
|||
監控 |
|
Region,Service,Function三個維度指標及聚合指標
|
|
日誌 |
|
|
|
總結
從工程角度看,在開發語言上都覆蓋了主流編程語言Java, Node.js, Python 並根據自身業務覆蓋區域有所側重,如:歐美市場對C#的支持,國內對PHP的支持;開發工具上,從可視化控制檯、web IDE,命令行工具上都支持,AWS同時對主流第三方工具的插件支持,這點相比其他兩種產品強些。
|
|||
開發語言支持 |
支持6種(Node.js, Python, Java, C#, PowerShell , Go, Ruby) 充分考慮到國際技術應用市場,尤其是C#的支持 |
支持4種(Node.js, Python, Java, PHP) 充分考慮到中國技術應用情況,而不是盲目的跟風,這點很贊,建議後面增加對C#的支持,完善覆蓋面 |
支持6種(C#, Node.js, F#, Java, Python, TypeScript(轉譯爲 JavaScript 後支持)) 覆蓋主流與自有技術 |
開發工具 |
|
|
|
幫助支持 |
|
|
|
在函數本身、約束、觸發器上看,AWS Lambda和Alibaba Cloud Function Compute相近,觸發器/事件源上都基本覆蓋了各自雲上產品,其中後者對HTTP觸發器的支持更好些,在函數編排上看,AWS Lambda和Azure 都提供了支持,Alibaba Cloud Function Compute該功能還未上線。
總體而言,個人覺得AWS Lambda實現、集成和測試相對簡潔,開發工具豐富,幫助文檔完善,有相對成熟的使用場景和應用生態圈,另外整個管理控制檯用戶體驗很棒。Alibaba Cloud Function Compute作爲後起之秀,在產品功能和易用性上都有極大的完善,相信後面隨着團隊的成熟,產品會越做越好。Azure Functions,用戶體驗有點差,官網控制檯像windows xp操作系統,付費應用體驗要額外singup,中文在線文檔邏輯性及可讀性差,產品未深入體驗,不多評述