CQRSについて調べたことをメモ

システムアーキテクチャ

概要

CQRSについて調べたことをメモ。

CQRSとは

  • Command Query Responsibility Segregation
    • CommandとQueryに責務分離するパターン
      • Command
        • データの更新を行う
        • データではなくタスクにフォーカスしたコマンドを設計
        • DDDのドメインモデルを内包することが想定されている
      • Query
        • データの参照を行う
        • ユースケースごとに最適化されたオブジェクトとして設計
          • DTO
  • 実装方法
  • メリット
    • ReadとWriteをそれぞれスケーリングすることができる
    • ReadとWriteのそれぞれでデータソースを選択することができる
      • データソースを分けずに同一にすることも可能
      • データソースを分ける場合は同期または非同期でデータを同期する必要がある
    • アプリケーション側のモデルはシンプルになる
  • デメリット
    • システムの構成要素が増えるためコストがかかる
    • ネットワーク全体の構成が複雑になる

所感

このパターンを導入すると決めるのは結構ハードルの高さを感じる。。。

海外では事例が多そうだったが、日本ではまだまだ事例が少ないというのが分かった。

参考