【いべんとそーしんぐ】

イベントソーシング とは?

最終更新:
💡 今の値だけでなく、そこまでの出来事を状態の源にする

業務上の変更をイベントとして順序付きで記録し、その履歴から状態を組み立てる設計。再生と訂正、CQRSとの関係、履歴を維持する難しさを説明します。

📌 このページのポイント
出来事の履歴から状態を作る残高0円からのイベント履歴入金+5,000円入金+8,000円出金−3,000円この順序で適用する現在の残高:10,000円イベントの履歴が、状態の根拠になる
入出金の履歴から残高を組み立てる模式図。履歴の再生は、実際の送金処理を再実行することとは区別します。
ひよこ ひよこ
イベントソーシングは、操作ログを残すこと?
ペンギン先生 ペンギン先生
履歴を残すだけではなく、そのイベントを状態の源として扱う設計だよ。例えば残高0から「5000円入金」「8000円入金」「3000円出金」を順に適用すると、残高10000円になる。
ひよこ ひよこ
過去の状態にも戻せる?
ペンギン先生 ペンギン先生
必要なイベントが残り、当時の記録を扱える処理があれば、ある時点まで再生して状態を組み立てられるよ。ただし実際の送金まで巻き戻せるという意味ではない。再生時に同じ外部処理を繰り返さない工夫が必要なんだ。
ひよこ ひよこ
間違った記録は、上書きして直す?
ペンギン先生 ペンギン先生
通常は過去のイベントを変えず、打ち消すイベントなどを追加する。長く使うとデータ形式も変わるので、古いイベントを読み取る方法まで設計する必要があるよ。
ひよこ ひよこ
CQRSとはセットで使うの?
ペンギン先生 ペンギン先生
読み取り用と更新用の扱いを分けるCQRSと組み合わせることはあるけれど、別の考え方だよ。履歴から状態を作り直す必要があるか、複雑さに見合うかを考えて選ぼう。単なる履歴保存で足りる場合もあるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「イベントソーシング」って出てきたら「出来事の履歴を源にして状態を組み立てる設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Event Sourcing」 = イベントを状態の源にすること
💬 業務上の変更を表すEventをSourceにする設計です。単に操作ログを残すことではなく、保存したイベントを状態の根拠として扱います。

参考資料

← 用語集にもどる