私のチームとCQRS(Command Query Responsibility Segregation)デザインパターンの使用について議論してきましたが、それを使用することの長所と短所を評価しようとしています。によると: http://martinfowler.com/bliki/CQRS.html
この分野でのCQRSの十分な使用はまだ見ていませんが、その長所と短所を理解しているとは確信できません。
それでは、問題がCQRSの使用を要求するのはいつですか?
CQRLの批評家は、CQRSは複雑であり、真実であると言うかもしれません。
もちろん、CQRSスタイルの単純なCRUDアプリケーションを開発するオーバーヘッドが追加されるため、次の場合にのみCQRSを使用することを検討します。
複雑またはハードなビジネスドメインがあり、次の場合:
または、共通データに基づいて行動する必要があるユーザーがいます:
または、スケーラビリティ要件があります:
または、パフォーマンスの問題がある(スケーラビリティの反対側):
または、物理的に分離したチームがあります:
過度に複雑なのはCQRSではなく、コンピューターです。
CQRS設計パターンを使用する場合
CQRSアーキテクチャパターンは、ユーザーが表示する必要があるすべてのデータをリポジトリからクエリすることが困難な場合に使用できます。これは、UXデザインが複数の集計タイプとインスタンスにまたがるデータのビューを作成する場合に特に当てはまります。ドメインが洗練されるほど、これは真実になる傾向があります。
UX設計で妥協するのが不適切な場合、CQRSを使用すると、次のような他のソリューションに関連する問題を軽減しようとします。
要約すると、ユーザーが表示する必要のあるリポジトリデータからクエリを実行するのが困難な場合にCQRSを使用します。これは、ドメインがより高度になると発生する傾向があります。
私の観点から、それは2つの大きな利点を追加します。(他の多くの中で)
CQRSを使用する理由は次のとおりです。
実際のシナリオでは、CQRSは、複数のドメインからの大量のデータを必要とするフロントエンド/ Webサービスクライアントがあり、データベースからのこれらのデータの取得に時間がかかる場合に役立ちます。
そのような場合、開発がより速くなり、実行時間がより速くなる可能性のある個別の読み取りモデルの作成を検討することができます。