Blog

App Runnerの可能性

この記事は、ニフティグループ Advent Calendar 2024 5日目の記事です。

はじめに

ニフティでWEBサービスの開発・運用を担当している渡邊です。

最近、運用の手間をかけずにWEBサービスを立ち上げる方法はないかなと考えていたところ、AWS App Runner(以下App Runner)に出会いました。

この記事では、App Runnerの特徴や他のサービスとの違いについて書いていきます。

App Runnerとは

App RunnerはAWSのサービスの1つで、コンテナアプリケーションを簡単にデプロイ・運用できるプラットフォームです。

GitのコードやコンテナをAWSにアップロードするだけで環境が作れるので、インフラ周りを気にする必要がありません。

ECS(Fargate)をベースにしているので、負荷に応じて自動的にスケールするのが特徴です。

また、VPCやロードバランサーの設定が不要なので、ネットワークの知識がなくても使えます。

他のAWSサービスとの違い

AWSには似たようなサービスがいくつかありますが、App Runnerは「とにかく簡単に使える」ことを重視して作られています。

主なサービスを比べてみましょう。

サービスメリットデメリット
Amazon EC2• サーバーを自由に設定できる
• OSやミドルウェアを自分で選べる
• どんな用途でも使える
• 管理が大変
• 予想以上に費用がかかることも
Amazon ECS•コンテナ運用に便利
• Fargateなら運用が楽
• 自動でスケールする
• インフラの知識が必要
• 初期設定が面倒
Elastic Beanstalk• デプロイが簡単
• AWSの他サービスと連携しやすい
• サーバー管理不要
• 自動でスケールする
• AWSへの依存が強くなる
• 初期設定が面倒
AWS App Runner• デプロイが簡単
• シンプルな設定項目
• 運用の手間なし
• GitやDockerからすぐ使える
• 自動でスケールする
• 細かい設定ができない
• AWSへの依存が強くなる

設定項目

設定する項目が少なくて、画面の流れに沿って進めるだけで使えます。

WAFも設定できるので、IP制限をかけたい社内向けのアプリも作りやすいです。

コスト

フロントとバックエンドを分けたアプリを例に、コストを計算してみました。

  • トラフィック:
    • 月間50万リクエスト
    • 1リクエストあたり平均200ミリ秒
  • リソース要件:
    • フロントエンド:1 vCPU、2GBメモリ
    • バックエンド:2 vCPU、4GBメモリ
サービスタスク/インスタンスALBNAT Gatewayデータ転送合計
ECS Fargate$138.66$20.20$32.40$57.36$248.62
EC2$46.80$20.20$32.40$57.36$156.76
App Runner$195.75不要不要不要$195.75

計算式

コスト面ではEC2が最も安価ですが、運用の手間を考えるとApp Runnerも悪くないかなと思います。

App Runnerの裏側はECS(Fargate)のため、同じ環境でありながら安くなることがわかります。

さらに、App Runnerは実行時間ベースの課金体系を採用しているため、コストの予測が容易という利点もあります。

App Runnerの制限と考慮すべきポイント

ARM64をサポートしていない

記事執筆時点ではARM64のコンテナイメージには対応していないため、x86_64アーキテクチャのイメージを使用する必要があります。

ARM64は、コストとパフォーマンスの両面でメリットがあるため、今後の対応に期待です。

カスタマイズ性の制限

とにかく簡単に使えることを重視しているので、細かい設定はできません。

特にVPC接続やログ設定などの高度な構成が必要な場合、作業が複雑になることがあります。

オートスケーリングの指標が限定的

同時実行数でしかスケールできず、CPUやメモリの使用率では制御できません。

そのため、特定のアプリケーションではスケーリング要件との不一致が生じ、効率的な運用が難しくなる可能性があります。

サイドカーコンテナ非対応

サイドカーコンテナが使えないので、ログ収集やモニタリングをする時に工夫が必要です。

まとめ

コンテナを使うのが当たり前になってきた今、シンプルなWEBサービスを作るならApp Runnerはかなり使えると思います。

実際に試してみたら、約20分ほどでアプリケーションがAWS上で動作できるようになりました。プロトタイプや社内ツールを作るのにぴったりですね。

インフラの心配をせずに開発に集中できるのが、個人的にすごく気に入っています。

ただ、細かい設定やスケーリングが必要な場合は、ECSやEC2も検討した方がいいかもしれません。

参考

ニフティでは、
さまざまなプロダクトへ挑戦する
エンジニアを絶賛募集中です!
ご興味のある方は以下の採用サイトより
お気軽にご連絡ください!

ニフティに興味をお持ちの方は
キャリア登録をぜひお願いいたします!

connpassでニフティグループに
参加いただくと
イベントの
お知らせが届きます!