SAP-C02 ソリューションアーキテクト プロフェッショナル

AWS SAP-C02 で Amazon RDS Proxy はどう問われるか

Amazon RDS Proxy が正解になる問題 3問
例題 3問 収録
最頻出: 第 3 分野: 既存のソリューションの継続的な改善

SAP-C02 (ソリューションアーキテクト プロフェッショナル) の練習問題のうち 3 問で Amazon RDS Proxy が正解になります。最も多いのは第 3 分野: 既存のソリューションの継続的な改善 (2問) で、次いで第 2 分野: 新しいソリューションのための設計 (1問) です。タスク単位では「タスク 3.4 信頼性を改善するための戦略の決定」が 1 問と中心で、ここが Amazon RDS Proxy を学ぶうえで最優先の論点です。誤答の選択肢としては Amazon Aurora、AWS DMS、Amazon Athena が併記されやすく、これらとの役割の違いを説明できるかどうかが正誤の分かれ目になります。

Amazon RDS Proxy の出題分野の内訳

分野別

第 3 分野: 既存のソリューションの継続的な改善

2

第 2 分野: 新しいソリューションのための設計

1


タスク別(AWS 公式 Exam Guide のタスクステートメント)

タスク 3.4 信頼性を改善するための戦略の決定

1

タスク 2.5 パフォーマンス目標を満たすソリューションの設計

1

タスク 3.3 パフォーマンスを改善するための戦略の決定

1

Amazon RDS Proxy の例題 3問(クリックで即採点)

選択肢をタップするとその場で正誤が分かります。ログインもページ移動も不要です。

例題 1
単一選択
難易度: 標準

Multi-AZ フェイルオーバー後の DB 再接続

オンライン予約サービスを運営する企業が、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 が読み取り専用の分析用クエリサービスであり、更新処理を伴う本番データベースの代替にはなりません。

この問題の出典(AWS 公式ドキュメント)

例題 2
複数選択
難易度: 標準

Lambda と Aurora の間で発生する接続過多への対処

ソリューションアーキテクトが、Amazon API Gateway のリージョンエンドポイントと AWS Lambda 関数を使用する動画レビューサイトのバックエンドを開発しました。利用者はアプリケーションがデプロイされているのと同じ AWS リージョンに居住する国内ユーザーに限られます。Lambda 関数は 3 つのリードレプリカを構成した Amazon Aurora MySQL クラスターに対して参照系のクエリのみを実行します。 負荷試験を実施したところ、アプリケーションはパフォーマンス要件を満たせませんでした。負荷が高まると Lambda の同時実行数の増加に比例して大量のデータベース接続が開かれ、接続確立の待ち時間の増大とデータベースの最大接続数への到達によって、応答時間が要件を超過します。 これらの要件を満たすために実施すべき手順はどれですか。2 つ選択してください。

複数選択問題です (正解 2 つ)。選んでから判定してください。

解説を読む(正解: B、D)

AWS Lambda は同時実行ごとに独立した実行環境を作成するため、関数のハンドラー内で毎回データベース接続を開く実装では、同時実行数に比例して接続数が増え、Aurora の最大接続数を圧迫します。さらに接続の確立自体に数十ミリ秒以上かかるため、呼び出しごとの接続はレイテンシーの増加要因にもなります。Amazon RDS Proxy はデータベースの前段に配置するフルマネージドの接続プールで、多数のクライアント接続を少数のデータベース接続に多重化し、接続の急増を吸収します。参照専用のワークロードではリーダーエンドポイントを対象とする Proxy を使うことで、3 台のリードレプリカに負荷を分散しながら接続数も抑えられます。 もう 1 つの対策が、接続の生成をハンドラーの外側 (初期化コード) へ移すことです。Lambda の実行環境は連続した呼び出しの間で再利用されるため、初期化時に確立した接続を使い回せば、呼び出しごとの接続確立が不要になり応答時間が短縮されます。この 2 つの組み合わせが、接続数の急増と応答遅延の双方に効きます。 他の選択肢は誤りです。A のクラスターエンドポイントは常にライターインスタンスに接続するため、参照クエリがライターに集中してリードレプリカが活用されず、接続数の問題も解決しません。C のプロビジョニングされた同時実行はコールドスタートの緩和策であり、あらかじめ実行環境を用意する分だけデータベース接続はむしろ増える可能性があります。E のエッジ最適化エンドポイントは遠隔地のクライアントの TLS ハンドシェイクと転送経路を最適化するもので、同一リージョン内の利用者には効果が薄く、データベース側のボトルネックとは無関係です。

例題 3
単一選択
難易度: 標準

サーバーレスアプリの接続の嵐を吸収するデータベース設計

チケット販売の SaaS を運営する企業は、AWS Lambda 関数と Amazon RDS for MySQL のマルチ AZ 配置データベースでアプリケーションを構成しています。人気公演の発売開始やメディア露出があると、リクエスト数が平常時の数十倍に跳ね上がります。ピーク時には Lambda の同時実行数の増加に伴ってデータベースへの接続が一気に確立され、接続の待ち行列が発生してユーザーの応答時間が著しく悪化しています。ソリューションアーキテクトは、データベース層のスケーラビリティと可用性を強化する必要があります。これらの条件を満たすソリューションはどれですか。

解説を読む(正解: D)

AWS Lambda は同時実行数に応じて実行環境が増えるため、実行環境ごとにデータベース接続を張ると、スパイク時に接続数がデータベースの上限に達し、接続確立の待ちや接続拒否が発生します。Amazon RDS Proxy はこの「接続の嵐」を吸収するためのフルマネージドなコネクションプールで、Lambda からの多数の短命な接続を、あらかじめプールされた少数の物理接続へ多重化します。加えて、フェイルオーバー時には Proxy がクライアント向けエンドポイントを保持したまま新しいライターへ接続を張り替えるため、フェイルオーバーの体感時間が短縮され可用性も向上します。あわせて Amazon Aurora へ移行して Aurora レプリカを追加すれば、読み取りをリーダーエンドポイント経由で分散でき、レプリカ自体がフェイルオーバー先にもなるため、スケーラビリティと可用性の双方を同時に強化できます。CloudWatch アラームで Lambda を起動してリードレプリカを追加する方法は、レプリカの作成完了までに時間がかかり急峻なスパイクに間に合わないうえ、接続数そのものの問題を解決しません。Aurora へ移行してハンドラー関数の外側で独自の接続プールを持つ方法は、実行環境ごとに個別のプールができるだけで全体の接続数は減らず、実行環境が再利用される保証もないため効果が限定的です。Route 53 の加重レコードでレプリカに振り分ける方法は、DNS キャッシュのため障害時の切り替えが遅く、Aurora が標準で提供するリーダーエンドポイントの負荷分散を DNS で再実装する不適切な設計です。

Amazon RDS Proxy とよく混同されるサービス

Amazon RDS Proxy が答えの問題で、誤答の選択肢として並ぶサービス

SAP-C02 の問題プールを実際に集計した結果です。ここに並ぶサービスとの違いを言葉で説明できるようになると、Amazon RDS Proxy 系の問題を取りこぼしにくくなります。

Amazon Aurora

2回

AWS DMS

1回

Amazon RDS for MySQL

1回

Amazon RDS Proxy の公式ドキュメント

本ページの内容は以下の AWS 公式ドキュメントに基づいています。

SAP-C02 の関連論点

Amazon SNS

6問

AWS Fault Injection Service

5問

Amazon EventBridge

5問

Amazon EFS

5問

AWS CodeDeploy

3問

AWS Backup Vault Lock

3問

SAP-C02 のサービス別 論点一覧をすべて見る

SAP-C02 の練習問題をすべて解く

Amazon RDS Proxy を含む全分野の練習問題と本番形式の模擬試験を、日本語の解説つきで収録しています。

練習問題を始める