CQRSとCQS
What is CQRS
Command Query Responsibility Segregation
和訳すると責務分離によるコマンドとクエリパターン
になる
What is CQS
Command Query Separation
和訳すると分離によるコマンドとクエリパターン
になる
What is コマンド
and クエリ
difference is CQRS
and CQS
責務
という概念を取り入れるかどうかの違いになると思う
具体的にいうと
CQS
はメソッドレベルで参照系と操作系を切り分けることCQRS
はドメインレベルで参照系と操作系を切り分けること
ここでのドメインとは複数の意味を指す言葉であるのだが、分かり易い例としてオニオンアーキテクチャにおけるドメインの単位毎に切り分けると考えた方がいいと思った。
what is advantage
スコープの厳密化
参照系と更新系を切り分けることによって、トランザクションを操作系だけにかけたりすることができる。
modelの管理
アプリケーションは廃棄容易性を高めなければ、非常に脆い存在になりかねない。
参照系と操作系のModelを分けることによって、参照系のViewをパッケージに切り分けることができるので管理がしやすくなる。
require Event Sourcing
?
これには賛否両論あると思うが、個人的には必要がないように思える。 処理の一連の流れもアプリケーションのドメインの一部だと思うので。 これはデータ操作のトリガー自体はDBの範囲内ではないという考えに基づいている。