イベントソーシングパターン(Event Sourcing Pattern)とは、アプリケーションの状態をイベントの不変なシーケンスとして保存する設計パターンのことです。
従来のCRUD(Create、Read、Update、Delete)モデルとは異なり、データの状態を直接更新するのではなく、状態の変化を表すイベントを記録していきます。
イベントソーシングの概念
- イベント: システム内で発生した状態の変化を表す不変の記録。例えば、「商品が購入された」「ユーザーが登録された」などがイベントとして記録されます。
- イベントストア: イベントを永続的に保存するためのデータストア。
- 集約: 関連するイベントのグループ。例えば、「顧客」集約には、「顧客が登録された」「顧客情報が更新された」などのイベントが含まれます。プロジェクション: イベントストリームを処理して、現在の状態や特定のビューを生成するプロセス。
イベントソーシングの仕組み
- コマンド: アプリケーションは、状態を変更するためのコマンドを発行します(例:
CreateUserCommand
)。 - イベント: コマンドハンドラは、コマンドを処理し、対応するイベントを生成します(例:
UserCreatedEvent
)。 - 保存: 生成されたイベントは、イベントストアに保存されます。
- プロジェクション: イベントが発生するたびに、プロジェクションが実行され、現在の状態やビューが更新されます。