WS SAA(Solutions Architect – Associate)で頻出の
「DynamoDB × 書き込みスパイク × 非同期処理」
に関する典型問題です。

この問題は、

一時的なアクセス集中(Write spike)にどう耐えるか

という サーバーレス設計の基本パターンを理解しているかが問われます。

早速問題を見ていきましょう

【問題】

ある会社はバックエンドのデータレイヤーにDynamoDB、フロントエンドにはAmazon EC2インスタンスを利用したアプリケーションを運用しています。 アプリケーションの使用中に、データレイヤーのDynamoDBテーブルに一時的なアクセス集中によって、書き込み処理エラーが発生するとリクエストが消失するという問題が発生しています。したがって、DynamoDBテーブルへの書き込み処理の負荷軽減を実施することが必要です。

費用効果が高くスケーラブルなアーキテクチャ構成の組み合わせを選択してください。(2つ選択)

【選択肢】

  1. DynamoDBをマルチAZ構成で起動し、グローバルセカンダリーインデックスを付与する。
  2. SQSメッセージからLambda関数を呼び出すことで書き込み処理のバッファを作成する。Lambda関数がDynamoDBに書き込み処理を行い一時的なアクセス集中に対応できるように構成する。
  3. DynamoDBの書き込みキャパシティを増強して、一時的なアクセス集中に対応できるように構成する。
  4. DynamoDBテーブルのタイプをオンデマンドに変更して、一時的なアクセス集中に対応できるように構成する。
  5. DynamoDBテーブルのタイプをオンデマンドに変更して、Auto Scalingを適用して、一時的なアクセス集中に対応できるように構成する。

これより先は正解と解説になりますのでまずは考えてみてください。


【正解】

Amazon SQS + Lambda で書き込みバッファを作る

DynamoDB をオンデマンドモードに変更する

ユーザー
   │
   ▼
EC2アプリ
   │
   ▼
Amazon SQS(バッファ)
   │
   ▼
AWS Lambda
   │
   ▼
DynamoDB(オンデマンド)

① 書き込みスパイクを吸収する必要がある

👉 Amazon SQS

SQSは

  • メッセージキュー
  • バッファ
  • 非同期処理

として使えます。

効果

  • リクエストを 一旦キューに保存
  • DynamoDB に 順次書き込み
  • スパイク吸収

👉 リクエスト消失を防止


② DynamoDB のキャパシティ問題

👉 オンデマンドモード

オンデマンドの特徴

  • 書き込みキャパシティを指定不要
  • 自動スケール
  • スパイク対応

効果

  • トラフィックに応じて自動拡張
  • 過剰プロビジョニング不要
  • コスト最適

❌ なぜ他の選択肢は不正解?


❌ DynamoDB マルチAZ

DynamoDB は 最初からマルチAZ構成です。

設定する概念ではありません。


❌ グローバルセカンダリーインデックス(GSI)

GSI は

  • 検索機能
  • クエリ最適化

のための機能です。

👉 書き込み性能改善にはならない
むしろ キャパシティ消費が増える


❌ 書き込みキャパシティ増強

可能ですが、

  • 通常時も課金
  • コスト増大

👉 費用対効果が悪い


❌ オンデマンド + Auto Scaling

Auto Scaling は

  • プロビジョンドモード専用

オンデマンドでは設定できません。


🎯 試験での見抜き方(超重要)

問題文に次が出たら即反応してください。

問題文キーワード選ぶサービス
書き込みスパイクSQS
リクエスト消失キュー
非同期処理SQS
DynamoDB負荷オンデマンド
スケーラブルサーバーレス

👉 SQS + Lambda + DynamoDB


DynamoDBキャパシティモード整理(試験頻出)

モード特徴
プロビジョンド容量指定
プロビジョンド + Auto Scaling動的調整
オンデマンド自動スケール

👉 スパイク対策 → オンデマンド

※予測可能な予約したスケーリングにはプロビジョンド
※予測不可能な急激なスパイクに対してはオンデマンド


まとめ(試験用一文)

DynamoDBの書き込みスパイクには、SQSによるバッファリングとオンデマンドキャパシティを組み合わせることで、費用対効果の高いスケーラブルな構成を実現できる。


この問題は

「スパイク=キューで吸収」

という AWS設計の基本思想を理解しているかを問う問題です。

このパターンを覚えておけば、

  • DynamoDB
  • Lambda
  • ECS
  • RDS

すべての スパイク問題に応用できます。

ここまで読んでいただき、ありがとうございます。もしこの記事の技術や考え方に少しでも興味を持っていただけたら、ネクストのエンジニアと気軽に話してみませんか。

  • 選考ではありません
  • 履歴書不要
  • 技術の話が中心
  • 所要時間30分程度
  • オンラインOK

エンジニアと話してみる

関連リンク

AI・クラウド・データ分析のご相談はネクスト株式会社までお問い合わせください。