Latest Replies

Common terms and definitions from the Journal on efficient software development.

« Cloud Computing | Component-Driven Development »
Saturday
Apr242010

Command-Query Responsibility Segregation - CQRS

Command-Query Responsibility Segregation (CQRS) is a way of designing and developing scalable and robust enterprise solutions with rich business value.

In an oversimplified manner, CQRS separates commands (that change the data) from the queries (that read the data). This simple decision brings along a few changes to the classical architecture with service layers along with some positive side effects and opportunities. Instead of the RPC and Request-Reply communications, messaging and Publish-Subscribe are used.

BTW, check out Getting Started with CQRS! You'll find links to best articles, videos and samples on Command-Query Responsibility Segregation (with a dash of Cloud Computing).

If we go deeper, Command-query Responsibility Separation is about development principles, patterns and the guidance to build enterprise solution architecture on top of them.

Such enterprise solutions aim to be:

  • Scalable
  • Focused on the business rather than the technology
  • Can grow to handle complex problems without growing development costs
  • Adapt to changing business requirements
  • Efficiently integrate with other software and systems
  • Benefit from the cloud computing
  • Inherently handle multiple users

While going for these goals, CQRS attempts to solve problems of:

  • Performance bottlenecks and scalability
  • Concurrency conflicts, their resolution and prevention
  • Data staleness
  • Complexity of the design, development and maintenance

Related links:

This article is a part of Software Development Body of Knowledge ABC series. You can subscribe to RSS feed to stay updated.

Related Links: