CQRS

  • DDD から生まれたパターン.

  • サーバの機能を

    • コマンド: 副作用あり, write
    • クエリ: 副作用なし, read, scalable
  • を明示的に分離する戦略.

  • データ同期の際に, Event Sourcing の考え方が付随するらしい

    • GraphQL これを意識していそう
  • 「情報の参照に使用するモデルと更新に使用するモデルに異なるものを使用する」

  • DBを分けることがある

    • 大体 read が多いけど read replica でスケールするので
    • 更新は非同期 or 同期で
  • 分けない時

  • 更新系モデル(= Entity, ValueObject) は Repository を介す

  • 参照系モデル(= DTO) は専用の QueryService で取得

と集約にまたがったDTOを扱いやすくなる. 画面寄り.
やっぱり GraphQL でいいじゃんとなる.

参考文献