Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ステートソーシング型イベント駆動の視点で捉えるCQRS+ES

 ステートソーシング型イベント駆動の視点で捉えるCQRS+ES

shinnosuke0522

March 14, 2025
Tweet

Other Decks in Programming

Transcript

  1. What is Event Store ドメインイベントを時系列順に記 録するデータストアとしての特性 を持つ。一度記録されたデータは 基本的に更新されることがなく、 データの更新の際には新たなイベ ントが記録される。

    イベント履歴 ドメインイベントの種別にデータ 構造が異なる可能性が高い。その ようなデータを蓄積する必要があ るため、柔軟なスキーマを併せ持 つNoSQL系DBがイベントストア として採用されるケースが多い。 Kurrent(旧EventStore)のような 専用データストアを用いるケース もある。 柔軟なスキーマ バージョン管理 による拡張 ドメインイベントのを履歴として 管理する必要があり、各イベント 履歴はImmutableである必要が ある。よってバージョンを用いた デシリアライズが一般的である。
  2. CQRS+ES によって どう変わるか 01 イベント履歴の永続化 イベントが履歴として永続化されることで、障害 時の原因調査や、イベントの再構築が容易にな る。また監査ログとしても利用できる。 Read/Writeのデータモデル衝突の回避 ソフトウェアは性質上記録したい情報と、見せたい情

    報で形式が異なりこれを一つのデータモデルで再現し ようとしてバッティングが生じてきた。書き込み側は ビジネスロジックや整合性を重視するのに対し、読み 取り側は迅速なデータ取得や集計を優先したデータ構 造を使用したい。これらを分離することで、システム の保守性の向上が期待できる。 スケーラブルなWriterアプリケーションの構築 柔軟なスキーマ設計を行える点からWrite側のアプリケーシ ョンのデータストアとしてMongoDBのようなNoSQLを用 いるケースが多い。そのためRDBのように複数のインスタ ンスに対して書き込み処理を行えるため、書き込みがスケー ルしない問題を解消することが期待できる。 02 03