アーキテクチャの観点
インターネットからのWebアクセスを想定し、アーキテクチャ観点でECSとApp Runnerを比較します。それぞれのアーキテクチャを比較した図を以下に示します。
ECSを利用するアーキテクチャ
ECSを利用するアーキテクチャでは、Application Load Balancer(ALB)やWAFを用いた通信制御が可能です。ECSを利用する場合、一般的にはALBをPublicSubnetに構築し、外部からのトラフィックを受け付けた後、ECS上のコンテナに負荷分散の上ルーティングを行います。
ALBでは、セキュリティグループにより送信元のIPアドレスを制限したり、AWS WAFと連携することで外部からの攻撃からコンテナを守ることが可能です。しかし、ALBやWAFを設計し、リソースを管理する作業は発生します。
App Runnerを利用するアーキテクチャ
App Runnerを利用するアーキテクチャでは、ELBの構築は不要で、最小限のAWSリソースでサービス展開が可能です。
App RunnerのリソースにAWSが管理するロードバランサーが含まれており、 AWS内部で各コンテナへ負荷分散された後、ルーティングされます。また、App RunnerはVPCやサブネット等のリソースをユーザ側で構築する必要がなく、AWSが管理しています。そのため、設計要素が少なく、簡易にサービス展開することが可能です。
しかし、App RunnerはAWS WAFとの連携が非対応ということや、セキュリティグループによる送信元IPアドレスの制御が不可能ということから、細かい通信制御は実施できないというデメリットもあります。
App Runnerのアップデート情報
App Runnerはリリース後、定期的にアップデートされており、直近では以下のようなアップデートがありました。
これまで、App Runnerは外部(インターネット)向けのエンドポイントのみを提供しており、AWS内部からの通信を行う際も、インターネットアクセスをする必要がありました。
今回のアップデートでは、AWS内部からのアクセスをプライベートネットワーク経由で実現できるようになり、他のAWS上のサービスとの連携が容易になりました。