Event Sourcing 深掘り ── 経緯・必須要素・デファクトツール・実践と落とし穴

なぜ Event Sourcing が生まれ、どんな課題に応えるためにあるのか。必要不可欠な要素、現場で使われるツール、ベストプラクティスとアンチパターンを体系的に整理する。「EvansとVernonで学ぶDDD」の続編にあたる深掘り編。

Event Sourcing 深掘り ── 経緯・必須要素・デファクトツール・実践と落とし穴

「EvansとVernonで学ぶDDD」シリーズ第9章で触れた Event Sourcing を、独立した1冊として深く掘り下げる続編。Event Sourcing が生まれた経緯、応える課題、必要不可欠な要素、現場のデファクトツール、そしてベストプラクティスとアンチパターンを体系的に整理する。

題材は前作と同じ 採用管理システムの選考プロセス を引き続き使う。前作で「集約とイベントの関係」までを理解した読者に、「では、それを現場でどう運用するのか」という次の問いに正面から答えるシリーズだ。

対象読者

  • DDD の基本概念(集約・ドメインイベント・CQRS)を一度は触ったエンジニア
  • 「Event Sourcing は名前は知っているが、実際にプロダクションで運用する勘所が分からない」エンジニア
  • 既存の CRUD ベースのシステムに、監査要件や履歴追跡を導入する設計判断を迫られているアーキテクト

目次

  1. プロローグ ── 「変化を記録する」という別の世界観 「現在の状態を保存する」ではなく「起きた事実を記録する」というパラダイムの違いを、シリーズ全体の地図と共に提示する。続編としての位置づけと到達点を明確にする。
  2. Event Sourcing が生まれるまで ── 複式簿記・Fowler・Greg Young Event Sourcing は2005年に「発明」されたわけではない。500年の複式簿記、1970年代の障害許容システム、そして2000年代のドメインモデリングの合流点として生まれた。系譜を辿ることで、この設計の「思想」が見えてくる。
  3. Event Sourcing が応える課題 ── CRUD で失われていたもの なぜ Event Sourcing を採用するのか。「現在の状態だけを保存する」設計が抱える6つの構造的問題を、採用管理システムを題材に具体化する。逆に Event Sourcing が向かない領域も明らかにする。
  4. 必要不可欠な5つの要素 ── Event / Stream / Store / Projection / Snapshot Event Sourcing を構成する5つの必須要素の責務分担を、採用管理システムの選考プロセスを題材に明らかにする。楽観的並行性制御・冪等な投影・スナップショット戦略の核心まで降りる。
  5. デファクトツール/フレームワーク比較 KurrentDB(旧EventStoreDB)・Axon Framework・Marten・Akka Persistence/Pekko・AWS DynamoDB+EventBridge・自作PostgreSQL ── Event Sourcing の主要な選択肢を比較し、選定軸を整理する。
  6. ベストプラクティス集 ── イベント設計から運用まで イベント命名・粒度、スキーマ進化(Versioning と Upcaster)、Snapshot 戦略、Outbox パターン、PII対応、テスト戦略 ── Event Sourcing を「動かす」から「育てる」段階へ進めるための10の実践知。
  7. アンチパターン集 ── 症状・根本原因・脱出法 Event Sourcing の典型的な8つのアンチパターン。それぞれを「症状・根本原因・脱出法」の形式で示し、設計時点で地雷を避けるための判断材料を提供する。
  8. エピローグ ── Event Sourcing を採用すべきか 採用判断フローチャート、DDD・CQRS・DCB との位置関係マップ、そして Event Sourcing が「変化を記録する」設計として現代のソフトウェアにどう位置づくかを最終的に整理する。