DVAAWSのサービスを使用した開発

あるEコマースサイトでは、Amazon DynamoDBをプライマリデータベースとして注文データを管理しています。注文が確定してDynamoDBテーブルに新規アイテムが追加または更新された際に、リアルタイムで在庫システムや分析プラットフォームへデータを伝播させる仕組みが必要です。システム間の結合度を低く保ちつつ、イベント駆動型アーキテクチャを実現するための最適な設計はどれですか。

A
DynamoDBストリームを有効化し、ストリームの変更レコードをトリガーとしてAWS Lambda関数を呼び出し、後続の各システムへデータを送信する。
✓ 正解
DynamoDBストリームとAWS Lambdaを組み合わせることで、データベース変更に対するリアルタイムなイベント駆動処理を簡単に実現でき、システムの疎結合化と拡張性を維持できます。
B
DynamoDBテーブルの変更履歴を毎分取得するAmazon EventBridgeスケジューラーを作成し、AWS Lambda経由で差分データを各システムへ同期する。
ポーリング形式のスケジュール処理はリアルタイム性に欠け、不要なクエリ実行によるDynamoDBのキャパシティ消費や無駄な処理コストが発生するため不適切です。
C
アプリケーションコード内でDynamoDBへの書き込み処理が成功した直後に、後続の分析システムと在庫システムのAPIを同期処理で順番に呼び出す。
アプリケーションからの同期呼び出しは、後続システムの障害がメインの注文処理に影響を与えるため結合度が高くなり、耐障害性やレスポンス特性の観点から望ましくありません。
D
Amazon EC2上でポーリングスクリプトを常時実行し、DynamoDBのScan APIを使用して変更のあったアイテムを検出して処理する。
EC2からのScan APIによる定期ポーリングは、データ量に伴い大量のリードキャパシティを消費しコストが膨大になる上、リアルタイムな変更検出にも適していません。

解説

DynamoDBストリームは、テーブル内のデータ変更(追加・修正・削除)の履歴を時系列でキャプチャする機能です。これをAWS Lambdaと連携させることで、データベースへの変更をリアルタイムかつイベント駆動で検知し、後続システムへ処理を分散・伝播させることができます。疎結合な設計を実現する標準的な手法です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る