オンプレミス MySQL のマネージド移行先の選定
中堅の玩具メーカーが、自社データセンターで稼働している受注管理システムの MySQL 8.0 データベースを AWS へ移行することを決定しました。アプリケーションは SQL の結合やトランザクションに強く依存しているためスキーマとクエリはそのまま使いたく、加えて別のアベイラビリティーゾーンへの自動フェイルオーバーによる高可用性と、参照クエリを分散させるためのリードレプリカを利用したいと考えています。運用負荷を最小化しつつこの要件を満たすサービスはどれですか。1 つ選択してください。
解説を読む(正解: C)
Amazon RDS は MySQL や PostgreSQL などの主要エンジンに対応したマネージドリレーショナルデータベースサービスです。ハードウェアのプロビジョニング、OS とデータベースエンジンのパッチ適用、自動バックアップ、モニタリングを AWS が代行するため、運用負荷を大幅に下げられます。Multi-AZ 配置を有効にすると同期レプリケーションされたスタンバイが別のアベイラビリティーゾーンに作成され、障害時には自動フェイルオーバーによって高可用性を確保できます。さらにリードレプリカを追加すれば参照系クエリを分散でき、読み取り性能を水平に拡張できます。エンジン互換のまま移行できるためスキーマや SQL をほぼ変更せずに済み、本問の要件に最も適合します。Amazon ElastiCache for Redis はインメモリのキャッシュ/データストアであり、データの正本を保持するリレーショナルデータベースの代替にはならず、SQL の結合やトランザクションも扱えません。Amazon EMR は Hadoop や Spark を実行する分散データ処理基盤で、大規模なバッチ分析には適していますが、オンライントランザクション処理を行う受注管理システムのデータベースとしては用途が異なります。Amazon DynamoDB はキーバリュー型の NoSQL データベースで、テーブル結合や複雑な SQL を前提とした既存スキーマをそのまま移行することはできず、アプリケーションの大幅な再設計が必要になります。
レガシー3層アプリケーションの単一障害点の緩和
製造業向けの生産管理システムをオンプレミスから移設した企業は、現在の構成が可用性監査で指摘を受けました。構成は次のとおりです。1 つのアベイラビリティーゾーンのパブリックサブネットに Web/AP 用の EC2 インスタンスが 2 台あり、Application Load Balancer の背後に配置されています。データベースは同じ AZ のプライベートサブネットにある単一 AZ の Amazon RDS for MySQL で、プライベートサブネットからのアウトバウンド通信は同じ AZ に置かれた 1 つの NAT ゲートウェイを経由しています。アプリケーションはステートレスで、セッションは外部ストアに保存済みです。可用性を最も大きく改善する対策を 2 つ選択してください。
複数選択問題です (正解 2 つ)。選んでから判定してください。
解説を読む(正解: A、B)
単一障害点 (SPOF) とは、そこが停止するとシステム全体が停止してしまう構成要素のことで、AWS では冗長化の単位としてアベイラビリティーゾーンをまたぐ配置が基本になります。この構成ではコンピュート層もデータベース層も 1 つの AZ に閉じているため、AZ 障害でシステム全体が停止します。A は Auto Scaling グループと Application Load Balancer をそれぞれ複数の AZ に展開する対策で、1 つの AZ が失われても残る AZ のインスタンスへロードバランサーがトラフィックを振り向け、Auto Scaling が不足分のインスタンスを自動的に補充します。B の Multi-AZ 配置は別の AZ に同期スタンバイを作成し、AZ 障害時に自動フェイルオーバーするため、データベース層の SPOF を解消します。アプリケーションが既にステートレスであることから、この 2 つの変更で AZ 障害に耐えられる構成になります。C の垂直スケーリングは性能向上には寄与しますが冗長性は 1 つも増えないため可用性は改善しません。D の NAT インスタンスは単一の EC2 インスタンスであり、マネージドで AZ 内冗長性を持つ NAT ゲートウェイより可用性が下がります。正しい方向性は AZ ごとに NAT ゲートウェイを配置することです。E のバックアップ保持期間の延長は過去時点への復元可能範囲を広げるだけで、障害時のダウンタイム短縮にも SPOF の解消にもつながりません。
レガシー多層アプリケーションの単一障害点の排除
ある私立大学が、履修登録と講義資料配信を担う学習管理システム (LMS) を AWS 上で運用しています。現在の構成は、1 つのアベイラビリティーゾーンにある単一の Amazon EC2 インスタンス上で Web/アプリケーション層が動作し、別の単一 EC2 インスタンス上に自己管理の MySQL データベースが載っています。履修登録期間中にインスタンス障害やアベイラビリティーゾーン障害が起きるとシステム全体が停止し、学生からの苦情が大学理事会に報告される事態となりました。なお、アプリケーション層のセッション情報は前回の改修ですでに外部のインメモリストアへ切り出されており、Web/アプリケーション層はステートレスです。単一障害点を排除して可用性を高めるためにソリューションアーキテクトが実施すべき対策を 2 つ選択してください。
複数選択問題です (正解 2 つ)。選んでから判定してください。
解説を読む(正解: A、B)
単一障害点 (SPOF) とは、そこが壊れるとシステム全体が停止してしまう構成要素のことで、可用性設計では各層について冗長化されているかを確認することが基本です。この LMS には Web/アプリケーション層の 1 台の EC2 と、データベース層の 1 台の EC2 という 2 つの SPOF があり、しかも両方が単一のアベイラビリティーゾーンに閉じているため AZ 障害にも耐えられません。A は Web/アプリケーション層に対する解で、Application Load Balancer が複数 AZ のターゲットへトラフィックを分散し、ヘルスチェックに失敗したインスタンスを自動的に切り離します。さらに複数 AZ にまたがる Auto Scaling グループで最小 2 台を維持すれば、インスタンス障害時も AZ 障害時も残ったインスタンスがサービスを継続し、Auto Scaling が自動で代替インスタンスを補充します。アプリケーションがすでにステートレスであるため、この構成をそのまま適用できます。B はデータベース層に対する解で、Amazon RDS for MySQL のマルチ AZ 配置は別 AZ のスタンバイへ同期レプリケーションを行い、プライマリの障害時に RDS が自動でフェイルオーバーして同じエンドポイントのまま処理を継続します。自己管理 MySQL の運用負荷も同時に解消されます。C は垂直スケーリングと高性能ストレージへの変更であり、性能は向上してもインスタンスが 1 台であることに変わりはなく SPOF は残ります。D は同一 AZ 内へのリードレプリカ追加であり、AZ 障害では両方が失われますし、リードレプリカは読み取り専用で自動フェイルオーバー機構も提供しないため可用性の解にはなりません。E のスナップショットはデータの耐久性とバックアップ/リストア型の復旧に寄与しますが、障害発生時に自動でサービスを継続させる仕組みではなく、単一障害点そのものを排除するものではありません。