イベントソーシングに関して復習したく、過去に読んだマイクロサービス・パターンのChapter6を復習。 下記、読んで覚えておきたいことのメモ。イベントソーシング、正直難しい。。イベントソーシングを適用した実装パターンのイメージがまだ曖昧で輪郭をぼんやりとしか捉えられてないので、他のリファレンス等も参照して学びを深めたい。
- イベントソーシング
従来の永続化が抱える問題点
イベントソーシングの概要
- イベントという形でアグリゲートを永続化し、それらのイベントからアグリゲートの現在の状態を再構築する
- 個々のイベントがアグリゲートの状態変更を表す
- データベースにイベントのシーケンスという形で個々のアグリゲートを永続化し、それをイベントストアと呼ぶ
- アプリケーションはアグリゲートを作成、更新した時にアグリゲートが生成したイベントをEVENTSテーブルに格納する
- 楽観的ロックを使った同時更新
- メッセージコンシューマを開発するときに大切なこと
- メッセージブローカーは同じメッセージを複数回送ってくる可能性があるので、イベント消費時の処理をべき等にする必要がある
- 処理したメッセージのIDをprocessed_messagesに格納する。メッセージのIDが既にある場合、そのメッセージは重複分であり、捨てると判断できる
Chris Richardson 著/長尾高弘 訳/橂澤広亨 監修 マイクロサービスパターン[実践的システムデザインのためのコード解説] (impress top gear)(インプレス発行 978-4295008583)