FaaSについてAWSとAzureとGCPを比較してみました。
(2018.08.05修正)
1. FaaS比較表
AWS | Azure | GCP | |
---|---|---|---|
Lambda | Functions | Cloud Functions | |
言語 | Python, node.js, java, C#(.NET Core), go |
ランタイムバージョン1.X C#, JavaScript, F#, Python1, PHP1, TypeScript1, バッチ (.cmd、.bat)1, Bash1, PowerShell1 ランタイムバージョン2.X C#2, JavaScript2, F#2, Java2 |
Python, node.js |
最大実行時間 | 5分 | 10分 (従量課金プラン) 無制限 (App Serviceプラン) |
9分 |
直接HTTPアクセスを受け付けるか | 受け付けない(API Gatewayと連携必要) | 受け付ける | 受け付ける |
2. 対応言語の比較
言語の種類は試験段階とプレビューを含めればAzureが一番多いのですが、正式リリースされたものに限定すればAWSの方が種類が多いです。
一方GCPのCloud Functionsが正式リリースされました。これから対応言語も増えていくでしょうか。
AzureはBashにも対応しているのが特徴です。運用系のシェルスクリプトをFaaS化すれば、スクリプト用のサーバが不要になりますね。
3. 最大実行時間
最大実行時間はAzureの10分(要host.jsonのfunctionTimeoutプロパティ変更)、GCPの9分に対しAWS Lamdbaは5分と約半分です。実際にAWS Lambdaを利用していると5分の壁を結構感じます。この点は他クラウドが羨ましいですね。
2017年のRe:InventでAWSはFargateというコンテナのサービスをリリースしましたが、このサービスがlambdaが5分以上実行できないことに対するAWSからの回答のように感じます。
4. 直接HTTPアクセスを受け付けるか
AWS lambdaだけ直接HTTPアクセスを受け付けることができません。HTTPアクセスを受け付けるには、API Gatewayと連携する必要がありますが、多機能な分やや設定が面倒な印象です。(但しAPI経由でLambdaを起動することは可能)
まとめ
AWS Lambdaのリリース後、Azure・GCP・Bluemix(現IBM Cloud)は超特急で追従しました。AWS LambdaがIT業界に与えたインパクトはとても大きかったと思います。
現在は「FaaS無ければばクラウドにあらず」といったところでしょうか。
また、AWS GreengrassやAzure IoT Edgeというエッジにデプロイするサービスも出ています。
将来AWS LambdaがiPhoneやApple Watchにデプロイできるようにならないかなーと妄想中です。