Dissecting the CQRS pattern
The Command Query Responsibility Segregation (CQRS) pattern provides the foundation for turning our monolithic databases inside out and escaping data’s gravity. It proposes the use of two different domain models, a write-optimized command model and a read-optimized query model. Separating these two concerns allows each to change and evolve independently and enables the creation of systems that are more responsive, resilient, and elastic.
Unfortunately, the CQRS pattern has a reputation for making systems more complex. This concern is not unfounded, however; with the right alterations, this segregation produces systems that are actually more straightforward and flexible. A few examples will help make this clear. Let’s look at an example without CQRS, one with what I refer to as traditional CQRS, and a third example with the altered form that I refer to as system-wide CQRS.
Figure 5.2 depicts a BFF service that provides read and write...