Q22 — AWS SAA-C03 第6章

第 22/65 問 | ← 第6章

Q387. ある企業が、最近WebアプリケーションをAWSクラウドに移行しました。同社はAmazon EC2インスタンス上で複数のプロセスを実行し、そのアプリケーションをホストしています。これらのプロセスには、静的コンテンツを提供するApacheウェブサーバーが含まれます。このApacheウェブサーバーは、ユーザーのセッション管理にローカルのRedisサーバーを利用するPHPアプリケーションに対してリクエストを行います。同社は、アーキテクチャを高可用性(Highly Available)とし、AWSマネージドサービスを活用するよう再設計したいと考えています。この要件を満たすソリューションはどれですか?

正解: D. 静的コンテンツをホストするAmazon S3バケットをエンドポイントとするAmazon CloudFrontディストリビューションを構成します。PHPアプリケーションは、AWS Fargateタスク上で実行されるAmazon Elastic Container Service(Amazon ECS)サービスをターゲットとするApplication Load Balancerで処理します。PHPアプリケーションは、複数の可用性ゾーンで実行されるAmazon ElastiCache for Redisクラスターを使用するよう設定します。

解説

Amazon CloudFrontディストリビューションとS3エンドポイントを組み合わせることで、静的コンテンツを低遅延かつ高可用性で配信できます。Application Load Balancer(ALB)を活用すれば、AWS Fargate上で実行されるAmazon ECS上の複数のPHPアプリケーションインスタンスへトラフィックを分散でき、スケーラビリティとフォールトトレランスを実現します。また、複数の可用性ゾーンで実行されるAmazon ElastiCache for RedisクラスターをPHPアプリケーションから利用することで、セッション情報の高可用性を確保し、障害発生時にも耐えられる構成になります。選択肢Aは、Elastic BeanstalkというPaaS(Platform as a Service)サービスを利用しており、PHPアプリケーションのホスティングやRedisサーバーの管理において必要な柔軟性・制御性が不足するため、最適な選択ではありません。選択肢Bは、ウェブサーバーのような長時間実行されるプロセスをAWS Lambdaでホストするのは不適切であり、さらにAPI GatewayによるLambdaへのリクエストプロキシは不要な複雑さを追加します。選択肢Cは、AWSマネージドサービスを十分に活用しておらず、バックエンドコードをEC2インスタンスに残すことで手動での管理が必要となり、Amazon ECSやElastiCacheといったマネージドサービスが提供するスケーラビリティやフォールトトレランスを享受できません。