LTで使ったAWS App Runnerのスライドです
AWS App Runnerがそろそろ本番環境でも使い物になりそう2022年12月20日 (火) 株式会社Nextat 中榮健二1
View Slide
1. AWS App Runner 概要2
AWS App Runner概要https://aws.amazon.com/jp/apprunner/2021年5月にリリースコンテナ化されたウェブアプリケーションのフルマネージドサービスGitHubのリポジトリからのソースコードベースのデプロイとECRからのコンテナベースのデプロイに対応バックエンドはFargate(Firecracker VM)3
構成参考:https://dev.classmethod.jp/articles/report-con406-reinvent2022/ 4
ECSとの違いデプロイパイプラインを自前で用意する必要がないロードバランサーも組込みなのでALBなどを別途使う必要がない1つのサービスに対し複数のコンテナを組み合わせられないオートスケールの設定項目最小/最大インスタンス数、1コンテナあたりの同時リクエスト数の3項目その他設定項目もECSと比べると細やかさはないがかなり楽ECSタスクに相当するジョブの機能はないECS Execに相当する機能はないArm(Graviton)、Windowsコンテナ未対応5
2. 今年の注目のアップデート3つ6
2022/02/08 カスタマーVPCへの接続が可能にhttps://docs.aws.amazon.com/apprunner/latest/relnotes/release-2022-02-08-vpc.htmlVPCコネクタ対応DynamoDBなどグローバルなリソースだけでなく、RDSなどVPC内のリソースが使えるようになった7
8
2022/10/28 マネージドランタイムの言語対応追加https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-app-runner-support-php-go-dot-net-ruby-managed-runtimes/GitHubからの自動デプロイで利用されるJavaとNode.jsのみだったところにPHP、Go、.NET、Rubyが追加9
2022/10/31 プライベートアクセスが可能にhttps://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-app-runner-supports-privately-accessible-services-amazon-vpc/インターネット経由の公開アクセスに限定されていたが、プライベートサービスを選択するとVPC内からのアクセスに限定できるようになったVPCエンドポイント経由のアクセスCloudFront + WAFによる防御時の迂回路がなくなったVPC内からアクセスするマイクロサービスをApp Runnerで作成することも可能になった10
Before11
After12
3. 料金など13
料金についてCloudFront + WAF + VPCエンドポイント(2AZ) + App RunnervCPU 1、メモリ2GBずっと待機状態とすると5500円くらい(リクエスト時間に応じて料金増)CloudFront + WAF + ALB + ECS/FargatevCPU0.5、メモリ1GB6,500円くらいDBは未考慮、デプロイ・ビルドの料金(誤差)は別プライベート構成にするとENIが高い(AZを減らせばもうちょい減る)がALBとトントンくらいかアクセス数の少ない社内アプリくらいであればECSより安そうな感じ趣味で使うには高いか14
改善されてほしい点ゼロスケール https://github.com/aws/apprunner-roadmap/issues/9ENIからFargateにアクセスする構成だとECS on Fargateと大差ないコールドスタート30秒くらいになりそうなのでしばらく無理そうSecrets Managerからの環境変数の読込 https://github.com/aws/apprunner-roadmap/issues/6最低スペック変更 https://github.com/aws/apprunner-roadmap/issues/25vCPU 1 + メモリ2GBが最低スペックなのでArm対応 https://github.com/aws/apprunner-roadmap/issues/98サイドカー対応(無理そう) https://github.com/aws/apprunner-roadmap/issues/71PHPのマネージドランタイムでビルトインウェブサーバーを使わせるのをやめろhttps://github.com/aws/apprunner-roadmap/issues/157 15
まとめVPCコネクタによりRDSなどVPC内リソースへの接続に対応プライベートエンドポイントによりWAFでの完全防御やマイクロサービスに対応マネージドランタイムがGoなどにも対応ECS/Fargateの代替として十分アリAWS縛りがなければ Fly.io、Render、RailwayのようなPaaSかGCPのCloud Runのほうが良さそうスケーリングや料金面はまだまだAWS Lambdaが強いエンドポイントの多いHTTP APIを全部Lambdaにする構成は正直アンチパターンだと思うのでコンテナ系のサービスには頑張ってほしい16
ご清聴ありがとうございました17