BFT名古屋 TECH BLOG

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

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

こんにちは!BFT名古屋支店の松野です。
前回は3大クラウドサービスのオブジェクトストレージサービスに関してまとめさせて頂きました。今回はサーバレスアーキテクチャ構築時に使用されることの多い、コンテナサービスに関してまとめていきたいと思います。
それではよろしくお願いします!

前回オブジェクトストレージサービスに関してまとめた記事はこちらから。

bftnagoya.hateblo.jp


はじめに

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

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

そして、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

前回はこの中からオブジェクトストレージサービスを中心にまとめさせて頂きました。今回はコンテナサービスついてまとめていこうと思います。

コンテナサービス

ここでまとめるのは正確にはコンテナサービスではなく、コンテナ向けサーバレスコンピューティングエンジンになります。 これはサーバーをプロビジョニングすることなくコンテナを利用できるサービスになります。
それでは概要をまとめていきます。

Azure
サービス名 AWS Fargate Azure Container Instances Cloud Run
CPU料金(vCPU/h) $0.05056 ¥5.66720 $0.08640
メモリ料金(GB/h) $0.00553 ¥0.61936 $0.00900
最大CPU 4vCPU 2vCPU(Linuxコンテナ)
4vCPU(Windows Server 2016)
4vCPU
最大メモリ 30GB 8GB(Linuxコンテナ)
16GB(Windows Server 2016)
8GB
可用性 99.99% 99.90% 99.95%

※掲載情報は2021年2月時点(東京リージョン)

〇CPU料金・メモリ料金

それでは一つずつ見ていきましょう。まずは料金比較です。料金は使用するコンテナリソースによって変わり、コンテナの起動時間に応じて料金が発生します。
例えば2vCPUかつメモリ4GBのコンテナを24時間起動した場合の料金は以下のようになります。

  • AWS Fargate
    (2 × 0.05056(USD・vCPU/h) + 4 × 0.00553(USD・メモリ/h)) × 24(h) = 2.9578(USD)

  • Azure Container Instances
    (2 × 5.66720(円・vCPU/h) + 4 × 0.61936(円・メモリ/h)) × 24(h) = 331.48(円)

  • Cloud Run
    (2 × 0.08640(USD・vCPU/h) + 4 × 0.00900(USD・メモリ/h)) × 24(h) = 5.0112(USD)

2021年2月時点の為替レートは約104~105円となっており、104円として計算すると、AWS Fargateは「307.61円」でありCloud Runは「521.16円」となります。
今回の条件においては、AWS FargateとAzure Container Instancesの料金がほぼ同等であり、Cloud Runは1.5倍程度の料金という結果になりました。

〇最大CPU・最大メモリ

次にリソースとして設定できる最大CPU・最大メモリの比較です。設定可能なvCPUに関しては各サービス毎に大きな差はないようです。Azure Container InstancesにはWindows Serverコンテナも用意されています。
メモリに関してはAWS Fargateが30GBまで設定可能となっており、コンテナを負荷の大きい処理に使いたい場合はAWS Fargateを選択することが賢明でしょう。最大リソースでも処理出来ないようなものはEC2などの他サービスの利用を検討する必要が出てきます。

〇可用性

最後は可用性です。可用性とはシステムが正常に継続して稼働し続ける能力を表しています。前回の記事にて具体的な時間を算出しており、結果は下記のようになります。

年間停止時間
99.90% 8時間46分
99.95% 4時間23分
99.99% 52分34秒

このように99.90%であっても年間で約9時間の非稼働時間となっています。コンテナサービスを365日24時間稼働するような場合であっても、大きな懸念点にはならないと思われます。

おわりに

今回は前回のオブジェクトストレージサービスと同じような構成でまとめさせて頂きました。3大クラウドサービスに着目して各サービスの調査をしていたおかげで、AzureやGCPの用語にもだいぶ慣れてきたように思います。残りはAmazon API GatewayをはじめとしたAPI構築・管理サービスとなっています。自分自身がAPIに関する知識が足りていないように感じているので、まずはAPIについてきちんと調べようかな~と考えています!!

参考文献

AWS Fargate

AWS Fargate(サーバーやクラスターの管理が不要なコンテナの使用)| AWS

・Azure Container Instances

Azure Container Instances | Microsoft Azure

・Cloud Run

Cloud Run: コンテナを秒単位で本番環境にデプロイ  |  Google Cloud