🐡

Amazon ECSとApp RunnerとCloud runの比較

2024/02/07に公開

AWSで構築していたDSPシステムをGoogle Cloudに載せ替える必要があり、今回はその肝となるコンピューティングリソースについて記載します。

元のシステムがどんなものだったかは、↓の登壇資料をご参照ください。

簡単な比較

Amazon ECS

Amazon ECS はフルマネージドのコンテナオーケストレーションサービスで稼働する場所(Amazon ECS Capacity)をEC2かFargateか選ぶ事ができます。
管理コストを下げつつ、高負荷にも耐えれるコンテナホスティング環境としてファーストチョイスになるかなと思います。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html

AWS App Runner

こちらもAWSが提供するフルマネージドのコンテナアプリケーションサービスで、ECSよりも煩わしい設定なしにアプリケーションを動作させることができます。
ECSが2015年にGAしたのに対して、こちらは2021年にGAした比較的新しいサービスです。
個人でやっている案件で、こちらを採用しましたがかなり楽に扱えるので気に入っています。

https://docs.aws.amazon.com/ja_jp/apprunner/latest/dg/what-is-apprunner.html

Cloud Run

AWSでいうとApp Runnerに近いですがソースコードからのデプロイがサポートされていたり、インスタンス数をゼロに設定することでアクセスが無いときに停止させたりすることができます。

https://cloud.google.com/run?hl=ja#features

料金による比較

サービス 料金 1ヶ月あたりの料金目安(1vCPU/1GBと仮定)
AWS Fargate(ECS) Linux/ARM・東京リージョン
vCPU当たり0.04045USD/h
メモリ1GBあたり0.00442USD/h
32.3064 USD
App Runner アジアパシフィック (東京) リージョン
料金は 0.009 USD/GB 時および 0.081 USD/vCPU 時
64.8 USD
Cloud Run $0.00001800 / vCPU 秒
$0.00000200 / GiB 秒
51.84 USD

注意すべきなのは、Fargateはそれ単体での料金となっており、App RunnerやCloud Runと同等のことをやるには最低でもALBなどの追加リソースが必要であること(上記にはその値段が入っていない。)と、App Runnerは常時アクティブで何らかのアクセスが有る場合の料金で計算していて、夜間などにプロビジョニング状態に移行できる場合はもっと安くなります。
また、Cloud Runは毎月無料枠があります。

  • AWS Fargate

https://aws.amazon.com/jp/fargate/pricing/

  • App Runner

https://aws.amazon.com/jp/apprunner/pricing/

  • Cloud Run

https://cloud.google.com/run?hl=ja#pricing

私の個人的な感覚でいうと、日中帯だけ使われるようなWebアプリケーションで、リクエスト量もそんなにない場合は、

AWS Fargate > App Runner > Cloud Run(コールドスタート有)

となり、一般的なWebアプリケーションではあるが、それなりにリクエスト量が多く、App RunnerのプロビジョニングやCloud Runのコールドスタートがほとんど意味を成さない場合でも上記の順番になる感覚です。
最初に例を上げたDSPのような特殊な場合では、Cloud Runのほうが高くなるかもしれません(実際に運用したこと無いので比較できていませんが。App Runnerはそもそも耐えられないと思う。)

設定できるリソースとスケーラビリティ

最大vCPU 最大メモリ
ECS on Fargate 16vCPU 120GB
App Runner 4vCPU 12GB
Cloud Run 8vCPU 32GB

ECSが設定できるリソースの幅が最も広く、App Runnerが最も低い計算となりました。

オートスケールについては、少し古いですが以下のような記事があり、私もCloud Runが最も優秀なイメージがあります。

https://typewriter.hatenablog.jp/entry/2021/05/21/231428

これは運用してみて確かめてみたいところです。

その他のポイント

ECSに関しては、Kubernetesほど管理が複雑ではないがそこそこカスタマイズ性が高いように感じます。
App RunnerとCloud Runは設定が本当に楽でエンジニアの人数が少ないプロジェクトではありがたいです。
App RunnerはECRの指定するイメージタグをlatestにしておくと、ECRのlatestイメージを更新するだけで勝手にデプロイが走ってくれるのが個人的に気に入っています。

Cloud RunはGoogle Next Tokyo '23の際に目にした、オートスケールのデモが印象的で、かなり素早くスケーリングしていたのでそのあたりで力を発揮してくれることを期待しています。

まとめ

今回少し調べてみて、意外とApp Runnerがそんなに安くないことがわかったので、個人的な用途で利用する際もCloud Runを検討してみようかなと思いました。

Discussion