LoginSignup
87
60

More than 1 year has passed since last update.

AWS App Runner がすごそう。 Fargate や Heroku の代替になりそう

Last updated at Posted at 2021-05-19

ついに AWS から Heroku っぽいサービスが登場した模様。その名も "App Runner" 。

既に東京リージョンでも使えるっぽい。

※まだ自分で試したわけではないので、リリースを見て感じたことです。

[追記]

実際に利用してみたところ、ほぼこの記事の認識で問題なかったが、Security Group や VPC の概念が無く、 VPC 内部のアクセスに制限されたリソース(例えば RDS や ElastiCache )には現状 App Runner でアクセスできない

よって、現在 Fargate + RDS などのインフラで動いている場合は、下記のような対策が必要になる。どれも微妙だが...

  • セキュリティの低下を許容した上で Public Access を許可する(Heroku もそうなってる)
  • Port Forwarding などの工夫を入れる
  • Dynamo DB などに移行

よって、今すぐ Fargate の代替にできるかというと、 VPC 内のリソースにアクセスしたい場合はできないだろう。 RDS や ElastiCache にアクセスしなくて良いサービス、例えば画像加工 API とかにはすぐ投入できる。

ロードマップにはあるっぽいので、そのうち対応されることを祈る。

[/追記]

特徴

スクショを見ていると、 Heroku の WebApp 機能だけを切り取ったようなサービス。ランタイムには予め用意された実行環境か、コンテナから選べるのも Heroku っぽい。(個人的にはコンテナ一択だが)

WebApp を複雑なロードバランサーやデプロイの設定が要らず、 HTTPS の設定も Route53 と連携して自動的に行ってくれるみたい。

上記によると、特徴は下記のよう。

  • 簡単にデプロイできる
  • ロードバランサーの設定が不要
  • KMS との連携も簡単にできるっぽい
  • オートスケーリングはほぼ自動、同時リクエスト数を指定するだけっぽい
  • コンテナのデプロイは、 ECR にプッシュするだけ

個人的には ECR へのプッシュで自動的にデプロイする仕組みがあるのが良いなと思った。どうせ新しいイメージをプッシュしたらそのままデプロイもしたいだろうし、自動的にデプロイしてくれて良いんじゃないかと思っていた。
Fargate の場合、CI 上で新しい Task Definition を作成して Update Service するのが地味にが面倒だった記憶がある。

AWS の他サービスとの比較

ECS Fargate

追記: そもそも App Runner は内部的に Fargate を使っているらしい。

Fargate より簡単っぽい。デプロイが簡単というのと、Fargate の場合は Task Definition とか Cluster とか Service とか、その辺の概念の学習コストが若干あるが、 App Runner はその辺すっ飛ばしてる感じがする。
逆に Fargate はコンテナやオートスケーリング、あとログの設定が細かくできるけど、別にそこまで必要ない場合の方が多そう。Fargate から App Runner に乗り換える、というのが一番ありそうな気がする。

気になるお値段は、これ見る限り、 Fargate と同じか、やや高いくらい? あとでちゃんと計算しよう

Elastic Kubernates Service (EKS)

Kubernates 使ったことが無いので実際は分からないが、学習コストが非常に高い技術だとは聞く。大規模なインフラ構築する場合には良いかもだが、大抵はそこまで必要ない(って AWS の人が言ってた)。

あと AWS の場合は Google Cloud とは違って Controller の料金が高いから、 WebApp を動かしたいだけなら Fargate で良い(って AWS の人が言ってた)。

App Runner が普及したら、 EKS じゃなくて App Runner で良いよって言われるのだろうか。

ECS on EC2

昔からある AWS のコンテナサービスだが、 EC2 を自前で管理しないといけないので、 ただ WebApp を動かしたいだけならあんま旨味は無いのではないかと思われる。コンテナのホストに SSH したい場合や、ストレージを細かく管理したい場合に向いているので、 App Runner とは競合しないかと思われる。

Fargate より安くすることができる(必ず安くなるわけではない)。

Elastic Beanstalk (EB)

実現したいことは App Runner と同様だが、見えないところで色んなリソースが作成され、管理しにくいので個人的にはあんま好きじゃないサービス。 RDS とか EC2 がまとめて作られるけど、なぜか EB 経由で作成すると制約があった気がする。

まとめ

Fargate の場合、ちょっとした WebApi を作るだけでも、様々なリソースを作成しないと環境構築できず、 Terraform で管理する場合はそこそこの HCL を書かないといけなかったから、それがさくっとできるようになるのはかなり嬉しい気がする。

Terraform とも既に連携できるっぽいので、次のプロジェクトで試してみたい。

追記

Terraform もブログ出してた。これによると、そもそも App Runner は Fargate をラップしたものらしい。それで Pricing にも vCPU など Fargate でお馴染みの概念が登場していたのか。

87
60
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
87
60