SAA-017
読み取り負荷が高いRDS for PostgreSQLがあります。書き込み負荷は低く、読み取りクエリをスケールさせたいです。最も適した構成はどれですか?
選択肢
解説と正解
解説と正解を読む(先に自分で回答してから開くのがおすすめです)
正解:A. Read Replicaを追加し、読み取りクエリをRead Replicaへ振り分ける
解説
Read Replicaは読み取りスケーリングに使います。アプリケーション側で読み取りをReplicaへ振り分けることで、プライマリDBの読み取り負荷を下げられます。
選択肢ごとの解説
A. Read Replicaを追加し、読み取りクエリをRead Replicaへ振り分ける
正解です。読み取り負荷分散に適しています。
B. RDSの自動バックアップを無効化する
バックアップ無効化は性能改善策ではなく、復旧性を下げます。
C. DBをパブリックサブネットへ移動する
パブリックサブネット移動は性能改善ではなく、セキュリティリスクが増えます。
D. Multi-AZを有効化し、読み取りクエリをスタンバイDBへ送る
RDS Multi-AZのスタンバイDBは通常、読み取り用途には使いません。
実務での使いどころ
RDS のリードレプリカは、プライマリ DB から非同期レプリケーションで作られる読み取り専用 DB インスタンスであり、読み取りクエリの分散先として利用する。MySQL / MariaDB / PostgreSQL / Oracle / SQL Server / Aurora の各エンジンで対応している。アプリケーション側で書き込みはプライマリ、読み取りはレプリカに振り分ける実装にすることで、プライマリの読み取り負荷を下げ、レプリカを横に増やして読み取りスループットをスケールアウトできる。Aurora の場合は最大 15 個のレプリカを同一クラスター内に持ち、専用エンドポイント(リーダーエンドポイント)が自動でロードバランシングしてくれる。 注意点として、レプリカは非同期レプリケーションのため、書き込み直後のデータが即座に読めるとは限らない(レプリケーションラグ)。強い整合性が必要な読み取りはプライマリへ送るか、書き込み直後だけプライマリから読む実装に分岐させる。可用性向上を目的とした Multi-AZ 配置はスタンバイ DB が読み取りに使えない(フェイルオーバー専用)ため、可用性とスケーラビリティは別軸の設計判断となる。両方を満たすには「Multi-AZ + リードレプリカ」を組み合わせる。 SAA-C03 では、「読み取り負荷が高い」「読み取りクエリをスケールさせたい」「書き込み負荷は変わらない」というキーワードが含まれる場合、リードレプリカが正答となる。誤答として「Multi-AZ 構成にすれば読み取りも分散できる」「インスタンスタイプを大きくする(垂直スケール)だけで対応」「ElastiCache で全クエリをキャッシュ」など、スケール方向や役割の違うサービスを当て込む選択肢が混入する。