Serverless Computing:AWS Lambda, Alibaba Cloud Function Compute, Azure Functions基本面比較

背景

        雲計算的發展,在經歷了IaaS(Infrastructure as a Service-基礎設施即服務),PaaS(Platform as a Service-平臺即服務),SaaS(Software as a Service-軟件即服務)幾個階段後,Serverless(無服務器化)趨勢越發明顯。

        無服務器計算(Serverless Computing)作爲雲原生計算模型的應用也日臻完善,相關產品也是各雲廠商競相角逐的戰場,本文對主要廠商AWS, Alibaba Cloud,Azure相關產品基本面進行對比

 

基本面比較

 

AWS Lambda

Alibaba Cloud Function Compute

Azure Functions

比較版本

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 上開發無服務器應用程序。

相關概念

函數、、觸發器、事件源

服務、函數、觸發器、事件源

函數、觸發器

基本使用流程

創建函數 => [配置觸發器] => 執行函數

創建服務 => 創建函數 => [配置觸發器] => 執行函數

創建函數應用=>創建函數 => [配置觸發器] => 執行函數

版本控制

支持

支持

支持

函數調用類型

同步、異步

同步、異步

同步、異步

函數執行方式

  1. 直接執行
  2. 觸發器觸發
  1. 直接執行
  2. 觸發器觸發
  1. 直接執行
  2. 觸發器觸發

伸縮

自動

自動

 

函數編排

AWS Step Functions

 

Azure Logic Apps + Durable functions

事件源(觸發函數的集合

AWS服務

  • Amazon Kinesis
  • Amazon DynamoDB
  • Amazon Simple Queue Service
  • Amazon Simple Notification Service
  • Amazon Simple Email Service
  • Amazon S3
  • Amazon Cognito
  • AWS CloudFormation
  • Amazon CloudWatch Logs
  • Amazon CloudWatch Events
  • AWS CodeCommit
  • Scheduled Events (powered by Amazon CloudWatch Events)
  • AWS Config
  • Amazon Alexa
  • Amazon Lex
  • Amazon API Gateway
  • AWS IoT Button
  • Amazon CloudFront
  • Amazon Kinesis Data Firehose
  • build your own custom event sources

 

 

支持語言

  • Node.js(8.10, 6.10), Python(3.7,  3.6,  2.7),
  • Java(Java 8 compatible),
  • C#(.NET Core 2.1, 2.0, 1.0),
  • PowerShell (6.0)
  • Go(1.x)
  • Ruby(2.5)
  • Node.js(8.9.0, 6.10)
  • Python(3.6, 2.7)
  • Java(OpenJDK 1.8.0)
  • Php (7.2.7)

運行時決定語言及版本,目前兩個版本(1.x, 2.x)

  • C#(.NET Framework 4.7, .Net Core 2)
  • JavaScript(Node 10, Node 8, Node 6)
  • F#(.NET Framework 4.7, .Net Core 2)
  • Java8
  • Python(3.6)
  • TypeScript(轉譯爲 JavaScript 後支持)

 

測試

支持

支持

支持

開發工具

幫助資料

  • 在線文檔
  • PDF文檔
  • 在線文檔
  • 在線文檔

最佳實踐

 

 

使用限制

 

AWS Lambda

Alibaba Cloud Function Compute

Azure Functions

函數存儲空間

75GB(層和代碼默認限制,可以提高)

原始代碼大小250MB

 

函數內存分配

128 MB 到3008 MB, 以64MB爲增量

最大3GB

 

函數超時

900 秒(15 分鐘)

600秒(10分鐘)

600秒(10分鐘)

函數環境變量

4 KB

 

 

調用負載(請求和響應)

6 MB(同步)

256 KB(異步)

6MB(同步)

128KB(異步)

 

部署程序包大小

50 MB(已壓縮,可直接上傳)

250 MB(解壓縮,包括層)

3 MB(控制檯編輯器)

50MB(.zip/.jar)

 

/tmp目錄存儲

512MB

512MB

 

文件描述符

1024

1024

 

執行進程/線程

1024

1024

 

開發方式

  • 在線編輯(只支持node.js, ruby, python)
  • .zip包
  • S3連接
  • 在線編輯(node.js, python, php)
  • OSS上傳
  • 代碼包上傳
  • 文件夾上傳
  • git
  • dropbox
  • visual studio
  • Kudu console
  • One Drive
  • .zip

函數個數限制

無限制

單個服務下最多創建50個函數

單個函數下最多創建10個觸發器

無限制

更多限制

詳細

詳細

 

 

監控及日誌

 

AWS Lambda

Alibaba Cloud Function Compute

Azure Functions

監控

基於CoudWatch報告的各項指標

  • Invocations
  • Errors
  • DeadLetterErrors
  • Duration
  • Throttles
  • IteratorAge
  • ConcurrentExecutions
  • UnreservedConcurrentExecutions

 

RegionServiceFunction三個維度指標及聚合指標

  • TotalInvocations
  • BillableInvocations
  • Throttles
  • ClientErrors
  • ServerErrors
  • BillableInvocations佔比
  • Throttles佔比
  • ClientErrors佔比
  • ServerErrors佔比
  • 平均Duration
  • 最大內存使用

 

日誌

  • Cloudwatch Logs 
  • X-Ray
  • SLS

 

 
 

總結

        從工程角度看,在開發語言上都覆蓋了主流編程語言Java, Node.js, Python 並根據自身業務覆蓋區域有所側重,如:歐美市場對C#的支持,國內對PHP的支持;開發工具上,從可視化控制檯、web IDE,命令行工具上都支持,AWS同時對主流第三方工具的插件支持,這點相比其他兩種產品強些。

 

AWS Lambda

Alibaba Cloud Function Compute

Azure Functions

開發語言支持

支持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 後支持))

覆蓋主流與自有技術

開發工具

 

幫助支持

  • 在線文檔
  • 離線pdf文檔
  • 在線文檔
  • 在線文檔

 

        在函數本身、約束、觸發器上看,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,中文在線文檔邏輯性及可讀性差,產品未深入體驗,不多評述

 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章