Amazon DocumentDB の Change Streams で構築するイベント駆動アーキテクチャ
DocumentDB の Change Streams による変更データキャプチャ、Lambda トリガーとの統合、リアルタイムデータ同期パターンを解説します。
Change Streams の仕組み
この記事は約 3 分で読めます。 DocumentDB の Change Streams はコレクションに対する変更 (挿入、更新、削除、置換) をリアルタイムにキャプチャする機能です。MongoDB の Change Streams API と互換性があり、既存の MongoDB アプリケーションのコードをそのまま使用できます。Change Streams はクラスタの変更ログ (oplog) を基盤としており、変更が発生した順序で配信されます。各イベントには operationType (insert、update、delete)、documentKey (変更されたドキュメントの ID)、fullDocument (変更後のドキュメント全体) が含まれます。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
Lambda トリガーとの統合
DocumentDB の Change Streams を Lambda のイベントソースマッピングとして設定すると、変更イベントが自動的に Lambda 関数に配信されます。Lambda 関数内でイベントの種類に応じた処理を実行します。典型的なユースケースは、OpenSearch のインデックス更新 (ドキュメントの変更を検索インデックスに即座に反映)、ElastiCache のキャッシュ無効化 (変更されたドキュメントのキャッシュを削除)、DynamoDB へのデータ同期 (読み取り最適化されたビューの維持)、SNS 通知 (特定の条件に合致する変更の通知) です。バッチサイズとバッチウィンドウを設定し、複数のイベントをまとめて処理することでスループットを向上できます。
障害復旧と運用上の注意点
Change Streams の各イベントには resume token が含まれており、この token を保存しておくことで、障害復旧時に最後に処理したイベントの次から読み取りを再開できます。Lambda のイベントソースマッピングでは resume token の管理が自動化されています。Change Streams の変更ログは最大 7 日間保持されるため、7 日以上処理が停止すると古いイベントが失われます。長時間の障害に備えて、Change Streams とは別に定期的なフルスナップショットを取得する設計が推奨されます。Change Streams の有効化はクラスタのパフォーマンスに若干の影響を与えるため、本番環境では事前にパフォーマンステストを実施します。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
DocumentDB の Change Streams はドキュメントの変更をリアルタイムにキャプチャし、イベント駆動アーキテクチャの基盤となる機能です。Lambda トリガーとの統合で検索インデックスの更新やキャッシュの無効化を自動化し、resume token で障害復旧時の再開を保証します。
AWS の優位点
- Change Streams でコレクションの挿入・更新・削除をリアルタイムにキャプチャし、イベント駆動の処理パイプラインを構築できる
- Lambda トリガーで Change Streams のイベントを自動処理し、検索インデックスの更新やキャッシュの無効化を実行できる
- resume token でストリームの読み取り位置を管理し、障害復旧時に未処理のイベントから再開できる
- 全文書の変更前後の値を取得する fullDocument オプションで、変更の差分分析が可能
- EventBridge Pipes との統合で Change Streams のイベントを他の AWS サービスにルーティングできる