あるスタートアップが、本番 Web アプリケーションを単一 AZ 内の Amazon EC2 インスタンス 1 台と、単一 AZ 構成の Amazon RDS for MySQL で運用しています。最近のユーザー増加に伴い、AZ 障害に対する耐障害性を高めつつ、運用負荷を最小限に抑えたいと考えています。この目的に直接寄与する対策を 2 つ選択してください。
A
EC2 を Auto Scaling グループに配置し、複数 AZ にまたがる Application Load Balancer の背後に置く
✓ 正解
複数 AZ にまたがる Auto Scaling グループと ALB に EC2 を配置すると、1 つの AZ が停止しても他 AZ のインスタンスが処理を継続でき、コンピュート層の AZ 障害耐性をマネージドに確保できる。
B
Amazon RDS for MySQL のマルチAZ 配置を有効化し、スタンバイへの自動フェイルオーバーを構成する
✓ 正解
RDS のマルチAZ 配置は別 AZ にスタンバイを維持し、プライマリ障害時に自動でフェイルオーバーするため、データベース層の AZ 障害耐性を運用負荷を増やさずに確保でき要件に合致する。
C
Amazon RDS のリードレプリカを同一 AZ に作成し、読み取りクエリを分散して負荷を下げる
同一 AZ のリードレプリカは読み取り負荷分散には役立つが、プライマリと同じ AZ にあるため AZ 障害時に共倒れし、自動フェイルオーバー機能もないため耐障害性向上には寄与しない。
AZ 障害への耐障害性を高めるには、コンピュート層とデータベース層の両方を複数 AZ に冗長化する必要があります。EC2 を複数 AZ にまたがる Auto Scaling グループと ALB の背後に配置すると、1 つの AZ が停止しても他 AZ のインスタンスで処理を継続できます。RDS のマルチAZ 配置は別 AZ のスタンバイへ自動フェイルオーバーし、データベースの可用性を確保します。どちらもマネージド機能で運用負荷も小さく要件に合致します。
選択肢Cの同一 AZ リードレプリカは読み取りスケールには有効だが、同じ AZ にあるため AZ 障害時に共倒れし、自動フェイルオーバーもしないため耐障害性向上にならない。
選択肢Dのスケールアップは単一 AZ のままで冗長性が増えず、AZ 障害には無力。
選択肢Eのスナップショットはデータ保護には寄与するが、AZ 障害時に即時の可用性を提供せず復旧に手作業を要する。