BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS】【Azure】【GCP】3大クラウドサービスにおけるFaaSを比較してみた。

はじめに

こんにちは!BFT名古屋支店の松野です。
今回はお仕事でAWS、Azure、GCPの3サービスに関して、サーバーレスアーキテクチャを中心に調べものをしたので、そのことをまとめていこうと思います!!
それではよろしくお願いします!!


3大クラウドサービス

まずは今回まとめたクラウドサービスのシェア率を見てみましょう。
2020年第3期のシェア率は以下の通り。

サービス名 シェア率
Amazon Web ServicesAWS 32%
Microsoft Azure 19%
Google Cloud 7%

シェア率は以下の記事から引用
www.canalys.com

こうしてみるとAWSMicrosoft Azureで約50%のシェアを占めていることがわかります。シェア3位のGoogle Cloud(GCP)を含めると60%近いシェアを獲得しており、これらを指して3大クラウドサービスと呼んだりします。

サーバーレスアーキテクチャサービス

クラウドサービスを利用してサーバーレスアーキテクチャを構築する際に使用する、代表的な技術要素には以下のようなものがあります。

  • アプリ実行基盤サービス(FaaS)
  • ストレージサービス
  • コンテナサービス
  • API構築・管理サービス

今回は上記の中から「アプリ実行基盤」に関して各クラウドサービス毎にまとめていこうと思います。
まずは上記項目において、各クラウドサービス毎の具体的なサービス名をまとめておきます。

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月時点

〇料金・無料枠

料金はAWSGCPがUSDであり、Azureが円によって表記されていることに注意してください。料金部分に関してはAWSとAzureが(為替レート次第になりますが)ほぼ同額であり、GCPは約2倍の料金となっています。各サービスには毎月の無料枠というものが設定されており、AWSとAzureは毎月100万リクエストまで、GCPは毎月200万リクエストまで無料になります。つまり、毎月の利用が100万~200万リクエストに収まるのであれば、GCPを選択すれば最も高いコスト効率を期待できます。

〇ランタイム

ランタイムの大きな相違点としてはRubyPowerShellでしょう。Rubyを使用したい場合はAWSを、PowerShellを利用したい場合はAzureを選択することになると思います。また、カスタムランタイム(AWS)やカスタムハンドラー(Azure)を利用すれば任意の言語が利用可能になるようですが、GCPには同等のサービスは見当たりませんでした。

〇メモリ

ここではまとめていませんが、選択したメモリによって料金が変わります。最大メモリはGCPの4GBとなっていますが、2020年12月に開催されたAWS re:InventにてAWS Lambdaが最大10GBまで設定可能になることが発表されました。

aws.amazon.com

〇最長実行時間

基本的に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