AWS認定資格 WEB問題集&徹底解説
ソリューションアーキテクト – アソシエイト
問題文と選択肢
- Amazon ElastiCache for Redisを使用してランキング機能を実装する。Sorted Setデータ構造によりリアルタイムな順位計算が可能で、マルチAZ構成により高可用性を実現できる
- Amazon DynamoDB Accelerator(DAX)を使用してランキング機能を実装する。インメモリキャッシュによりミリ秒未満のレスポンスタイムが実現でき、マネージドサービスとして高可用性を提供する
- Amazon MemoryDB for Redisを使用してランキング機能を実装する。Redis互換のインメモリデータベースとして低レイテンシーと高可用性を提供し、永続化も可能である
- Amazon RDS for MySQLのリードレプリカを複数配置して負荷分散する。インデックスを適切に設定することで高速なクエリ処理が可能である
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 が正解軸に。 |
リファレンス
この問題を解くために必要な知識を扱う公式ドキュメントです。| 知識項目 | 公式ドキュメント |
|---|---|
| MemoryDB の永続性(データ保持が要件でない場合は過剰) | MemoryDB とは |
- Amazon ElastiCache for Redisを使用してランキング機能を実装する。Sorted Setデータ構造によりリアルタイムな順位計算が可能で、マルチAZ構成により高可用性を実現できる
- Amazon DynamoDB Accelerator(DAX)を使用してランキング機能を実装する。インメモリキャッシュによりミリ秒未満のレスポンスタイムが実現でき、マネージドサービスとして高可用性を提供する
- Amazon MemoryDB for Redisを使用してランキング機能を実装する。Redis互換のインメモリデータベースとして低レイテンシーと高可用性を提供し、永続化も可能である
- Amazon RDS for MySQLのリードレプリカを複数配置して負荷分散する。インデックスを適切に設定することで高速なクエリ処理が可能である
次の問題前の問題
会員機能
お役立ち情報
- プレミアム会員のご紹介
- 「徹底解説」のご紹介
- 会員機能のご紹介
- おすすめの勉強方法
- 試験概要
- 資格を取得するメリット
- 合格率や難易度と勉強時間の目安
- AWSサービスの解説
- AWS認定資格の種類・対象者・受験料・合格ライン
- スマホのホーム画面に登録する方法
姉妹サイト
- CLF:AWS 認定クラウドプラクティショナー
- SAA:AWS 認定ソリューションアーキテクト-アソシエイト
- AIF:AWS 認定AIプラクティショナー
- SOA:AWS 認定CloudOpsエンジニア-アソシエイト
- DVA:AWS 認定デベロッパー-アソシエイト
- MLA:AWS 認定機械学習エンジニア-アソシエイト
- SAP:AWS 認定ソリューションアーキテクト-プロフェッショナル
- AZ-900:Microsoft Azure Fundamentals
- AI-900:Microsoft Azure AI Fundamentals