Q1 — 単一選択Amazon RDSのプライマリDBインスタンスで読み取りCPU使用率とReadIOPSが高く、書き込み負荷は低い。
大量のレポートクエリが実行されており、レポートの読み取り結果は数秒程度古くてもよい。プライマリへの読み取り負荷を減らしながら、読み取りスループットを増やしたい。
最も適切な設計はどれか。
A. プライマリDBインスタンスをより大きいクラスへ変更し、読み取り処理能力を増やすが、すべての読み書きは同じインスタンスへ残す
B. Amazon RDSのリードレプリカを追加し、レポートなどの読み取りクエリをレプリカへ振り分ける
C. Amazon ElastiCacheへ頻繁に再利用されるレポート結果だけをキャッシュし、キャッシュできない多様なレポートクエリは引き続きプライマリへ送る
D. レポート専用の別RDS DBインスタンスを定期的なスナップショットから作成し、数秒単位のデータ鮮度ではなく定期更新で運用する
答えと解説
答え:B
Aはプライマリ自体の処理能力を増やせますが、読み取り負荷を別の処理先へ分離しません。Cは繰り返される同一結果には有効ですが、多様なレポートクエリすべてをキャッシュできるとは限りません。Dはレポート処理を分離できますが、数秒程度の古さという鮮度要件には適しません。要件では、
読み取り中心
+
書き込み負荷は低い
+
多少の古さを許容
+
読み取り負荷をプライマリから分離
できるため、リードレプリカへ読み取りを振り分ける方法が最も適切です。
Q2 — 単一選択注文更新の直後に同じ利用者が注文詳細を再表示する。
更新直後の確認画面では必ず最新値が必要だが、夜間レポートでは数秒程度の古さを許容できる。
RDSリードレプリカを利用する場合、最も適切な読み取り経路はどれか。
A. 更新直後の確認も含め、すべての読み取りをリードレプリカへ送る
B. 更新完了後にReplicaLagが0になるまでアプリケーション全体の書き込みを停止する
C. 最新値必須の読み取りはプライマリ、古さを許容できる読み取りはリードレプリカへ送る
D. リードレプリカを追加すれば非同期レプリケーションでも常に最新値が保証されるため、接続先は変更しない
答えと解説
答え:C
リードレプリカは非同期で更新されるため、更新直後に古い値を返す可能性があります。したがって、
最新値必須
→ ライター
古さ許容
→ リードレプリカ
と読み取り要件を分けます。
Q3 — 単一選択Amazon RDSで3台のリードレプリカを作成したが、アプリケーションはすべてのSQL読み取りを引き続きプライマリDBインスタンスのエンドポイントへ送っている。
プライマリの読み取り負荷がほとんど減っていない。
最も適切な改善はどれか。
A. 読み取り用接続を各リードレプリカのエンドポイントへ振り分けるよう、アプリケーションの接続経路を分離する
B. プライマリDBインスタンスを縦にスケールし、読み取り接続先は変更せず処理能力だけを増やす
C. リードレプリカをさらに追加するが、アプリケーションの読み取り接続先はプライマリエンドポイントのまま維持する
D. Amazon RDS ProxyをプライマリDBの前段へ配置して接続をプールするが、読み取りトラフィックは引き続きプライマリへ送る
答えと解説
答え:A
Bはプライマリ自体の処理能力を増やせますが、既に作成したリードレプリカへ読み取り負荷を分散しません。Cもレプリカ容量自体は増やしますが、読み取り接続がプライマリへ向いたままなので追加レプリカを活用できません。Dは接続管理を効率化できますが、読み取りトラフィックの振り分け先自体は変わりません。
書き込み用接続
→ プライマリ
読み取り用接続
→ リードレプリカ
という経路分離が必要です。
Q4 — 単一選択Amazon Auroraの読み取り中心ワークロードで複数のAurora Replicaを利用している。
アプリケーション側でレプリカ台数の増減を個別管理せず、読み取り接続を利用可能なレプリカへ分散したい。
最も適切な接続先はどれか。
A. 各Aurora Replicaのインスタンスエンドポイントを1つ固定し、すべての読み取り接続をその1台へ送る
B. クラスターエンドポイントへ読み取り専用接続を集約し、ライターが自動的にAurora Replicaへ各クエリを転送する
C. レプリカごとに異なるDNS名をアプリケーションへ埋め込み、台数変更のたびに接続先一覧を手動更新する
D. Auroraのリーダーエンドポイントを使用し、利用可能なAurora Replicaへ読み取り接続を分散する
答えと解説
答え:D
リーダーエンドポイントは、利用可能なAurora Replicaへ読み取り接続を分散できます。そのため、アプリケーション側で各Aurora Replicaのエンドポイントを個別管理する必要を減らせます。
Q5 — 単一選択Amazon Auroraで複数のAurora Replicaを作成し、アプリケーションはリーダーエンドポイントを使用している。
しかし長時間維持される少数の接続を接続プールで使い回しており、一部のレプリカへ読み取り負荷が偏っている。
最も適切な説明はどれか。
A. リーダーエンドポイントは個々のSQLクエリごとに必ず別のAurora Replicaへ振り分けるため、接続プールは影響しない
B. リーダーエンドポイントは接続単位で分散するため、長時間維持する接続プールでは特定レプリカへ負荷が偏る可能性を考慮する
C. リーダーエンドポイントはライター専用なので、読み取り分散にはクラスターエンドポイントを使用する
D. Aurora Replicaを追加すると既存接続中のセッションも即座に各レプリカへ再分散される
答えと解説
答え:B
Auroraのリーダーエンドポイントは、
接続
を分散します。個別のクエリを毎回別レプリカへ振り分ける仕組みではありません。したがって、長時間維持される接続の使い方も読み取り分散へ影響します。
Q6 — 単一選択Amazon RDSのリードレプリカを利用している。
大量の書き込みが発生した時間帯に、レプリカで古いデータが返る時間が長くなった。
レプリカがソースDBインスタンスからどの程度遅れているかを確認したい。
最も直接的なCloudWatchメトリクスはどれか。
A. DatabaseConnections。リードレプリカとソースDBのデータ差を秒単位で直接表す
B. ReadLatency。ソースDBからリードレプリカへ変更が反映されるまでの時間を直接表す
C. ReplicaLag。リードレプリカがソースDBインスタンスからどの程度遅れているかを監視する
D. ReadIOPS。レプリケーションが停止しているかどうかと遅延秒数を直接表す
答えと解説
答え:C
RDSのリードレプリカでは、ReplicaLagを使用してソースDBインスタンスからのレプリケーション遅延を監視できます。具体的な計算方法はデータベースエンジンによって異なるため、利用エンジンの定義も確認します。
Q7 — 単一選択Amazon Auroraでライター更新後のデータがAurora Replicaへ反映されるまでの遅れが性能要件内か確認したい。
最も直接的なCloudWatchメトリクスはどれか。
A. AuroraReplicaLag。ライターから各Aurora Replicaへの更新反映の遅れをミリ秒単位で確認する
B. ReplicaLag。Auroraクラスター内のすべてのレプリカ遅延をエンジンに関係なく秒単位で表す唯一のメトリクスである
C. CPUUtilization。Aurora ReplicaのCPU使用率だけからレプリケーション遅延を直接算出する
D. ReadLatency。ライターからAurora Replicaへ更新が到達するまでの時間だけを表す
答えと解説
答え:A
Aurora Replicaでは、AuroraReplicaLagを使用してライターからの更新反映の遅れを確認できます。
Q8 — 単一選択データベースのCPU使用率が高く調査したところ、負荷の大部分は大量のINSERTとUPDATEによる書き込み処理だった。
読み取りクエリは少ない。
リードレプリカ追加の評価として最も適切なものはどれか。
A. 少数存在する読み取りクエリだけをリードレプリカへ移し、主因である書き込み負荷への対策は行わない
B. 頻繁に参照される一部データをキャッシュし、少ない読み取り負荷をさらに減らすことを主な対策とする
C. リードレプリカを複数追加して読み取り処理を分散し、書き込み負荷が大部分を占める状況でもこれを中心対策とする
D. 書き込みが主なボトルネックなら、リードレプリカだけでは解消しないため書き込み側の処理能力や設計を別途評価する
答えと解説
答え:D
A、B、Cはいずれも読み取り負荷を減らす方向の対策です。しかしこのシナリオでは、
負荷の大部分
=
INSERT / UPDATE
なので、読み取りをさらに減らしても主なボトルネックは残ります。リードレプリカは読み取りスケーリングの手段であり、書き込み側の処理能力や設計を別途評価する必要があります。
Q9 — 単一選択新規のAmazon DynamoDBテーブルで読み取りトラフィックが予測しにくく、大きく増減する。
キャパシティの事前予測や継続的な管理をできるだけ減らしながら、読み取りスループットを自動的に拡張したい。
最も適切な選択はどれか。
A. プロビジョンドキャパシティモードとDynamoDB Auto Scalingを使用し、最小・最大キャパシティと目標使用率を設定して自動調整する
B. プロビジョンドキャパシティを想定ピークへ固定し、トラフィックが少ない時間帯も同じキャパシティを維持する
C. DynamoDBオンデマンドキャパシティモードを使用し、実際のトラフィックに応じてスループットを自動的に調整する
D. DAXを追加して反復読み取りをキャッシュするが、キャッシュミスを含むテーブル本体のキャパシティ設計は従来どおり行う
答えと解説
答え:C
Aも実際の利用量へ合わせた自動調整が可能な有力な方式ですが、
最小キャパシティ
最大キャパシティ
目標使用率
などの設定を管理します。Bはピーク負荷へ対応できますが、負荷が小さい時間帯も事前確保したキャパシティを維持します。Dは反復読み取りの高速化・負荷削減には有効ですが、すべての読み取りがキャッシュヒットするわけではなく、テーブル本体のスループット管理方式そのものを置き換えません。この問題では、
新規ワークロード
+
予測困難なトラフィック
+
大きな変動
+
キャパシティ管理を減らしたい
ことから、オンデマンドキャパシティモードが最も適切です。