はじめに
「AWS App Runner」というサービスが先日GAされました。
触ってみたので、概要や所感などを書きます。
AWS App Runnerとは
リソースやインフラ等、環境を意識せずにアプリケーションを実行できるサービスです。
内部的にはFargateが動作しており、コンテナ化したアプリケーションを実行しています。
AutoScalingに対応しており、閾値を決めることでコンテナ数を増減してくれたり、更新を行うと自動でデプロイしてくれる機能もあります。
公式ドキュメントより
AWS App Runner は、コンテナ化されたウェブアプリケーションや API を開発者が簡単かつ迅速にデプロイできるフルマネージド型サービスです。大規模に、しかも事前のインフラ経験を必要とせずにデプロイすることができます。ソースコードからでも、コンテナイメージからでも始められます。App Runner がウェブアプリケーションを自動的にビルドおよびデプロイし、暗号化しつつトラフィックのロードバランスを実行します。また App Runner は、トラフィックのニーズに応じて自動的にスケールアップまたはスケールダウンします。App Runner を使用すれば、サーバーやスケーリングについて煩わされることもなく、アプリケーションに集中できる時間が増えます。
アプリケーション
-
使用するアプリの指定方法は二種類あります。
-
GitHubのソースコードリポジトリを指定する。
- Node.js 12
- Python 3
-
ECR内のアプリのコンテナを指定する。
- リポジトリ選択してタグ指定。
-
GitHubリポジトリを指定すると、自動でアプリをコンテナ化してくれます。
GitHubのリポジトリ内に apprunner.yaml
ファイルを配置することでビルドコマンドを制御できるようです。
サンプルが以下にあります。
また、AppRunnerはCloudWatchと統合しており、アプリのログ等はCloudWatchに出力されます。
デプロイ
-
手動デプロイ
- マネコン,CLIなどから好きなタイミングでデプロイできます。
-
自動デプロイ
- GitHubリポジトリ、ECRのPush検知を行い、新しいイメージがプッシュされると自動でデプロイする設定もできるようです。
試した所感
-
すこぶる簡単にアプリをデプロイできる!
- 一番のメリットです。インフラを全く意識せずに作成できます。
-
設定も簡単かつベストプラクティス準拠!
- より簡単に作成できるように作られているので、管理項目も少なく、設定が楽です。
- Task定義作って、Cluster作って、Service作って...のダルさがないです。
- より簡単に作成できるように作られているので、管理項目も少なく、設定が楽です。
デメリット
-
vCPU,メモリの選択肢が少ない
- 1vCPUはメモリ2~4GBまで
- 2vCPUはメモリ4GBのみ
-
インフラの「作りこみ」ができなさそう?
- VPCなどとの連携がないため、活用できるサービスとできないサービスがありそうです。
まとめ
作ったものを爆速で公開したい!という要件を満たせる非常に良いサービスだと思います。
特にインフラを気にせずにアプリだけ意識してコンテンツを公開したいという方にオススメのサービスです。
ただ、高負荷なワークロードであったりすると、対応しきれない面も出てくると思います。