オンライン予約サービスを運営する企業が、ap-northeast-1 リージョンで Amazon RDS for MySQL のマルチ AZ DB インスタンスを利用しています。四半期ごとの災害訓練で手動フェイルオーバーを実行したところ、アプリケーションはデータベースへの接続を失ったまま復旧せず、アプリケーションのプロセスを再起動して初めて接続が回復しました。運用チームは、フェイルオーバー時にアプリケーションを再起動しなくても接続が自動的に回復する仕組みを求めています。アプリケーションのコード変更は接続先設定の変更のみに留めたいと考えています。この要件を満たすソリューションはどれですか。
解説を読む(正解: D)
Amazon RDS Proxy は、アプリケーションとデータベースの間に配置されるフルマネージドのデータベース接続プールです。アプリケーションは Proxy のエンドポイントに接続し続け、Proxy が背後の DB インスタンスへの実際の接続を保持・再利用します。マルチ AZ 構成でフェイルオーバーが発生すると、DB エンドポイントの DNS レコードがスタンバイ側の IP アドレスに切り替わりますが、アプリケーションの接続プールや実行環境の DNS キャッシュが古い IP を保持していると新しいプライマリに再接続できず、プロセスの再起動が必要になります。今回の障害はまさにこの典型例です。
正解の選択肢では、既存の RDS DB インスタンスをターゲットとする RDS Proxy を作成し、アプリケーションの接続先だけを Proxy エンドポイントに変更します。RDS Proxy はフェイルオーバーを検知して自分の側で新しいライターへ接続を張り替え、その間クライアントからの接続は維持されるため、アプリケーションを再起動することなく処理を継続できます。接続文字列の変更だけで済む点も要件に合致します。
Aurora Serverless v1 に移行してリーダーエンドポイントを指す案は、リーダーエンドポイントが読み取り専用であるため書き込みができず、さらに Serverless v1 の一時停止と再開によってかえって接続が切断されます。Aurora クラスターへ移行したうえで Proxy を作る案は、Proxy のターゲットに移行前の RDS エンドポイントを指定しており構成として整合せず、また接続設定の変更だけでは済まない大掛かりな移行作業を伴います。DMS で S3 に出力して Athena を参照する案は、Athena が読み取り専用の分析用クエリサービスであり、更新処理を伴う本番データベースの代替にはなりません。
チケット販売の SaaS を運営する企業は、AWS Lambda 関数と Amazon RDS for MySQL のマルチ AZ 配置データベースでアプリケーションを構成しています。人気公演の発売開始やメディア露出があると、リクエスト数が平常時の数十倍に跳ね上がります。ピーク時には Lambda の同時実行数の増加に伴ってデータベースへの接続が一気に確立され、接続の待ち行列が発生してユーザーの応答時間が著しく悪化しています。ソリューションアーキテクトは、データベース層のスケーラビリティと可用性を強化する必要があります。これらの条件を満たすソリューションはどれですか。