CQRS+ESパターンの説明
- コマンド クエリ責務分離 (CQRS) パターン
- ステートソーシング(CRUD)の短所としてあげているもの
- 読み取りと書き込みのデータ表現不一致問題
- ステートの同時更新による競合問題
- 読み取りと書き込みが同じモデルによる、データの誤用問題
- CRUDの単一データモデルより設計と実装が簡単になる。ただし、CRUDはスキャーフォルドメカニズムによって自動生成できない
- リードモデルはSQLビューもしくは即時プロジェクションを生成するか。
- 同じ物理ストアに格納する場合は、パフォーマンス、スケーラビリティ、セキュリティを最大化するため、データストアを物理的に分けるのが一般的
- ステートソーシング(CRUD)の短所としてあげているもの
- イベント ソーシング パターン
- ステートソーシング(CRUD)の短所としてあげているもの
- 更新時のロックがパフォーマンスと応答性を低下させる
- 単一データ項目への更新は競合が起きやすい(コラボレータが複数の場合)
- 監査メカニズムがない限り、履歴が失われる
- ESのメリット
- イベントが不変であり、追記保存するだけ。イベントを処理するプロセスは非同期処理で問題が生じない
- イベントは、データストアを更新しない、シンプルなオブジェクト。
- イベントはドメインエキスパートの関心事。
- 同時更新による競合の発生を防ぐことができる(ただし、ドメインオブジェクトが矛盾した状態にならないよう依然として保護が必要)
- ステートソーシング(CRUD)の短所としてあげているもの
関連記事
DDD,CQRS関連
マイクロサービス関連
マイクロサービス関連。DDDだと戦略的設計の部分。