CQRS
-
DDD から生まれたパターン.
-
サーバの機能を
コマンド: 副作用あり, writeクエリ: 副作用なし, read, scalable
-
を明示的に分離する戦略.
-
データ同期の際に, Event Sourcing の考え方が付随するらしい
-
- GraphQL これを意識していそう
-
「情報の参照に使用するモデルと更新に使用するモデルに異なるものを使用する」
-
DBを分けることがある
- 大体 read が多いけど read replica でスケールするので
- 更新は非同期 or 同期で
- 同期だとtxが分かれてしまうので Two Phrase Commit Protocol とか
-
分けない時
-
更新系モデル(=
Entity,ValueObject) はRepositoryを介す -
参照系モデル(=
DTO) は専用のQueryServiceで取得
と集約にまたがったDTOを扱いやすくなる. 画面寄り.
やっぱり GraphQL でいいじゃんとなる.