AWS認定資格 WEB問題集&徹底解説

ソリューションアーキテクト – アソシエイト

正解 A問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あるオンライン学習プラットフォームでは、受講者が毎週参加するクイズ大会のスコアをリアルタイムで表示するランキング機能を実装する必要があります。このランキングは毎回3,000人以上の同時参加者を対象とし、回答送信から1秒以内にスコアと順位を更新して表示する必要があります。また、サービスの可用性は99.9%以上を維持し、データは永続化せず、各大会終了後にクリアされる要件があります。Solutions Architectとして、これらの要件を満たしつつコストを最も抑えられるソリューションを1つ選んでください。
  • Amazon ElastiCache for Redisを使用してランキング機能を実装する。Sorted Setデータ構造によりリアルタイムな順位計算が可能で、マルチAZ構成により高可用性を実現できる
  • Amazon DynamoDB Accelerator(DAX)を使用してランキング機能を実装する。インメモリキャッシュによりミリ秒未満のレスポンスタイムが実現でき、マネージドサービスとして高可用性を提供する
  • Amazon MemoryDB for Redisを使用してランキング機能を実装する。Redis互換のインメモリデータベースとして低レイテンシーと高可用性を提供し、永続化も可能である
  • Amazon RDS for MySQLのリードレプリカを複数配置して負荷分散する。インデックスを適切に設定することで高速なクエリ処理が可能である
解説 頻出度★★★★★
この問題は、「リアルタイム順位計算 × 1秒以内 × 永続化不要(大会後にクリア)× コスト最適」の要件で、Redis の Sorted Set をキャッシュ用途の ElastiCache で使うと判断できるかがポイント
正解

A. Amazon ElastiCache for Redisを使用してランキング機能を実装する。Sorted Setデータ構造によりリアルタイムな順位計算が可能で、マルチAZ構成により高可用性を実現できる

Redis の Sorted Set(ZSET)はスコア付きの集合を自動でソートして保持し、ZADD/ZREVRANK などで O(log N) の計算量で順位の更新・取得ができる。3,000人規模の同時更新でも 1 秒以内の応答は余裕を持って満たせる。
Amazon ElastiCache はマルチAZ + 自動フェイルオーバー構成が取れるため 99.9% 以上の可用性要件も満たし、データは揮発してよい(大会後にクリア)という要件にキャッシュ用途のサービスとして最も合致する。永続化の仕組みを持たない分、コスト面でも有利。

B. Amazon DynamoDB Accelerator(DAX)を使用してランキング機能を実装する。インメモリキャッシュによりミリ秒未満のレスポンスタイムが実現でき、マネージドサービスとして高可用性を提供する

Amazon DynamoDB Accelerator(DAX)は DynamoDB 専用の読み取りキャッシュであり、書き込みはライトスルーで DynamoDB 本体へ流れる。順位を計算する仕組み(Sorted Set 相当)を持たないため、全参加者のスコアを取得してアプリ側でソートする必要があり、リアルタイムランキングには構造的に不向き。
DynamoDB 側でも、スコア順の全体ランキングを毎回算出するのはアクセスパターン的に苦手な処理となる。

C. Amazon MemoryDB for Redisを使用してランキング機能を実装する。Redis互換のインメモリデータベースとして低レイテンシーと高可用性を提供し、永続化も可能である

Amazon MemoryDB は Redis 互換で Sorted Set も使えるため、機能面ではランキングを実装でき、レイテンシも可用性も要件を満たす。この選択肢が「技術的に不可能だから誤り」なのではない点に注意が必要。
MemoryDB の本質はマルチAZ トランザクションログによる永続性(プライマリデータベースとしての耐久性)にあり、その耐久性の分だけ料金が高い。本問はデータを永続化せず大会ごとにクリアする要件であり、不要な耐久性に課金することになる。コストを最も抑えるという判断軸において ElastiCache に劣るため誤り。

D. Amazon RDS for MySQLのリードレプリカを複数配置して負荷分散する。インデックスを適切に設定することで高速なクエリ処理が可能である

Amazon RDS for MySQL はディスクベースのリレーショナルデータベース。3,000人分のスコアを毎回 ORDER BY で並べ替えて順位を返す構成は、更新が頻発する状況でレイテンシと負荷の両面で不利
さらにリードレプリカは非同期レプリケーションのためレプリカ参照ではスコアの反映遅延(レプリカラグ)が起き、「回答送信から1秒以内に順位を更新して表示する」というリアルタイム性の要件を安定して満たせない。

これだけ覚える(記憶フック)
ランキング=Redis の Sorted Set。永続化が要るなら MemoryDB、要らないなら ElastiCache。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
回答送信から1秒以内にスコアと順位を更新して表示 順位計算をデータストア側で完結できるRedis の Sorted Setが定石。ディスクベースの DB では厳しい
→選択肢(D)を消す
順位(ランキング)の算出が必要 DAX は DynamoDB の読み取りキャッシュにすぎず、ソート・順位計算の機能はない
→選択肢(B)を消す
可用性99.9%以上 ElastiCache も MemoryDB もマルチAZ+自動フェイルオーバーで満たせる。ここでは絞り込めない
→選択肢(A・C)は候補
データは永続化せず、大会終了後にクリアする/コストを最も抑える 機能的にはC も満たすが、MemoryDB の永続性は本問では不要。要らない耐久性に課金する分だけ割高になる
→選択肢(C)を消す/選択肢(A)が正解
ひっかけポイント
  • 選択肢Cは「できない」から誤りではない。MemoryDB でも Sorted Set でランキングは組める。落とす根拠は不要な永続性に払うコストである
  • ElastiCache と MemoryDB はどちらも Redis 互換。分岐点は「データが消えて困るか」。本問は「大会後にクリア」なので ElastiCache
  • 選択肢Cの「永続化も可能である」は一見メリットに見えるが、本問では要件に無い機能=余計なコスト
  • 選択肢Bの「ミリ秒未満のレスポンス」に釣られない。速くてもDAX には順位を求める手段がない
  • 「リアルタイムランキング」は Redis Sorted Set の教科書的ユースケース。この語を見たら Redis を第一候補にする
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「ランキング履歴を永続的に保持し、消失は許されない」 Amazon MemoryDB が正解に変わる。
「DynamoDB のテーブルへの読み取りが遅いのを改善したい」 DAX が正解軸に(キャッシュとして正しく使う場面)。
「セッション情報やリーダーボードをキャッシュしたい(揮発可)」 引き続き ElastiCache。用途が同じ系統。
「大会結果を後から SQL で集計・分析したい」 結果を S3 に出して Amazon Athena、または RDS/Redshift が正解軸に。
関連サービスの解説 Amazon ElastiCache
Amazon Neptune
リファレンス この問題を解くために必要な知識を扱う公式ドキュメントです。
知識項目 公式ドキュメント
MemoryDB の永続性(データ保持が要件でない場合は過剰) MemoryDB とは
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 56%
No.13 解説
あるオンライン学習プラットフォームでは、受講者が毎週参加するクイズ大会のスコアをリアルタイムで表示するランキング機能を実装する必要があります。このランキングは毎回3,000人以上の同時参加者を対象とし、回答送信から1秒以内にスコアと順位を更新して表示する必要があります。また、サービスの可用性は99.9%以上を維持し、データは永続化せず、各大会終了後にクリアされる要件があります。Solutions Architectとして、これらの要件を満たしつつコストを最も抑えられるソリューションを1つ選んでください。
  • Amazon ElastiCache for Redisを使用してランキング機能を実装する。Sorted Setデータ構造によりリアルタイムな順位計算が可能で、マルチAZ構成により高可用性を実現できる
  • Amazon DynamoDB Accelerator(DAX)を使用してランキング機能を実装する。インメモリキャッシュによりミリ秒未満のレスポンスタイムが実現でき、マネージドサービスとして高可用性を提供する
  • Amazon MemoryDB for Redisを使用してランキング機能を実装する。Redis互換のインメモリデータベースとして低レイテンシーと高可用性を提供し、永続化も可能である
  • Amazon RDS for MySQLのリードレプリカを複数配置して負荷分散する。インデックスを適切に設定することで高速なクエリ処理が可能である

(会員限定)当問題の評価をお願いします。改善に活用します。