はじめに
こんにちは!BFT名古屋支店の松野です。
今回はお仕事でAWS、Azure、GCPの3サービスに関して、サーバーレスアーキテクチャを中心に調べものをしたので、そのことをまとめていこうと思います!!
それではよろしくお願いします!!
3大クラウドサービス
まずは今回まとめたクラウドサービスのシェア率を見てみましょう。
2020年第3期のシェア率は以下の通り。
サービス名 | シェア率 |
---|---|
Amazon Web Services(AWS) | 32% |
Microsoft Azure | 19% |
Google Cloud | 7% |
シェア率は以下の記事から引用
www.canalys.com
こうしてみるとAWSとMicrosoft Azureで約50%のシェアを占めていることがわかります。シェア3位のGoogle Cloud(GCP)を含めると60%近いシェアを獲得しており、これらを指して3大クラウドサービスと呼んだりします。
サーバーレスアーキテクチャサービス
クラウドサービスを利用してサーバーレスアーキテクチャを構築する際に使用する、代表的な技術要素には以下のようなものがあります。
今回は上記の中から「アプリ実行基盤」に関して各クラウドサービス毎にまとめていこうと思います。
まずは上記項目において、各クラウドサービス毎の具体的なサービス名をまとめておきます。
AWS | Azure | GCP | |
---|---|---|---|
アプリ実行基盤 | AWS Lambda | Azure Functions | Cloud Functions |
ストレージ | Amazon S3 | Azure Blob | Cloud Storage |
コンテナ | AWS Fargate | Azure Container Instances | Cloud Run |
API構築・管理 | Amazon API Gateway | API Management | Cloud Endpoints/Apigee |
アプリ実行基盤サービス
アプリ実行基盤サービスはサーバーレスアーキテクチャの根幹をなすサービスであり、今回のタイトルにもなっているFaaSとして有名だと思います。
各クラウドサービスにおける具体的なサービス名と概要は以下の通りです。
Azure |
|||
---|---|---|---|
サービス名 | AWS Lambda | Azure Functions | Cloud Functions |
料金(100万リクエスト毎) | $0.20 | ¥22.40 | $0.40 |
無料枠(リクエスト/月) | 100万 | 100万 | 200万 |
ランタイム | Node.js 12 Node.js 10 Python 3.8 Python 3.7 Python 3.6 Python 2.7 Ruby 2.7 Ruby 2.5 Java 11 Java 8 Go 1.x .NET Core 3.1 .NET Core 2.1 |
Node.js 12 Node.js 10 Python 3.8 Python 3.7 Python 3.6 Java 11 Java 8 .NET Core 3.1 PowerShell 7 PowerShell Core 6 ※ランタイムバージョン 3.x |
Node.js 6(非推奨) Node.js 7(非推奨) Node.js 10 Node.js 12 Python 3.7 Python 3.8 Java 11 Go 1.11 Go 1.13 NET Core 3.1 |
メモリ(MB) | 128~3008(64単位) | 128~1536(128単位) | 128、256、512、1024、2048、4096から指定 |
最長実行時間 | 15分 | 10分 | 9分 |
SLA | 99.95% | 99.95% | 99.5% |
※掲載情報は2021年1月時点
〇料金・無料枠
料金はAWSとGCPがUSDであり、Azureが円によって表記されていることに注意してください。料金部分に関してはAWSとAzureが(為替レート次第になりますが)ほぼ同額であり、GCPは約2倍の料金となっています。各サービスには毎月の無料枠というものが設定されており、AWSとAzureは毎月100万リクエストまで、GCPは毎月200万リクエストまで無料になります。つまり、毎月の利用が100万~200万リクエストに収まるのであれば、GCPを選択すれば最も高いコスト効率を期待できます。
〇ランタイム
ランタイムの大きな相違点としてはRubyとPowerShellでしょう。Rubyを使用したい場合はAWSを、PowerShellを利用したい場合はAzureを選択することになると思います。また、カスタムランタイム(AWS)やカスタムハンドラー(Azure)を利用すれば任意の言語が利用可能になるようですが、GCPには同等のサービスは見当たりませんでした。
〇メモリ
ここではまとめていませんが、選択したメモリによって料金が変わります。最大メモリはGCPの4GBとなっていますが、2020年12月に開催されたAWS re:InventにてAWS Lambdaが最大10GBまで設定可能になることが発表されました。
〇最長実行時間
基本的にFaaSはあまり長い処理には向いていないという認識ですが、表にまとめた時間までの設定が可能になっています。10分以上の処理を実行する必要がある場合はAWSを選択することになります。
〇SLA
SLAとはService Level Agreementの略であり、サービス側とユーザー側で結ばれるサービスレベルの品質保証のことです。可用性や安定性を示すひとつの指標であり、サービス選定の際のチェック項目にも考慮するといいでしょう。こちらはAWSとAzureがともに99.95%であり、GCPが99.5%となっています。
まとめ
今回は3大クラウドサービスから特にアプリ実行基盤サービスであるFaaSに着目をして記事にさせて頂きました。AzureやGCPはあまり知見がない状態でしたが、AWSの知識があるおかげで調査が進めやすかったと感じました。また、世界シェア№1ということもありAWSは情報量が多く、調査もしやすい印象を受けました。
次回以降に今回記事に出来なかった項目をまとめていきたいと思います!!
参考文献
・AWS Lambda
AWS Lambda(イベント発生時にコードを実行)| AWS
・Azure Functions
Azure Functions サーバーレス コンピューティング | Microsoft Azure
・Cloud Functions
Cloud Functions | Google Cloud
・サービス比較一覧
AWS/Azure/GCPサービス比較 2020.12 - Qiita