Q22 — AWS SAA-C03 第6章
第 22/65 問 | ← 第6章
Q387. ある企業が、最近WebアプリケーションをAWSクラウドに移行しました。同社はAmazon EC2インスタンス上で複数のプロセスを実行し、そのアプリケーションをホストしています。これらのプロセスには、静的コンテンツを提供するApacheウェブサーバーが含まれます。このApacheウェブサーバーは、ユーザーのセッション管理にローカルのRedisサーバーを利用するPHPアプリケーションに対してリクエストを行います。同社は、アーキテクチャを高可用性(Highly Available)とし、AWSマネージドサービスを活用するよう再設計したいと考えています。この要件を満たすソリューションはどれですか?
- A. 静的コンテンツおよびPHPアプリケーションのホスティングにAWS Elastic Beanstalkを使用します。Elastic Beanstalkがパブリックサブネット内にEC2インスタンスをデプロイするように設定し、パブリックIPアドレスを割り当てます。
- B. 静的コンテンツおよびPHPアプリケーションのホスティングにAWS Lambdaを使用します。Amazon API GatewayのREST APIを構成して、Lambda関数へのリクエストをプロキシします。API GatewayのCORS設定を、ドメイン名への応答に対応するよう設定します。セッション情報の管理にはAmazon ElastiCache for Redisを使用します。
- C. バックエンドコードはEC2インスタンス上にそのまま残します。Multi-AZ対応のAmazon ElastiCache for Redisクラスターを作成し、クラスターモードで構成します。フロントエンドのリソースをAmazon S3バケットにコピーします。バックエンドコードを、EC2インスタンスを参照するよう設定します。
- D. 静的コンテンツをホストするAmazon S3バケットをエンドポイントとするAmazon CloudFrontディストリビューションを構成します。PHPアプリケーションは、AWS Fargateタスク上で実行されるAmazon Elastic Container Service(Amazon ECS)サービスをターゲットとするApplication Load Balancerで処理します。PHPアプリケーションは、複数の可用性ゾーンで実行されるAmazon ElastiCache for Redisクラスターを使用するよう設定します。 ✓
正解: 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といったマネージドサービスが提供するスケーラビリティやフォールトトレランスを享受できません。