This document discusses Command Query Responsibility Segregation (CQRS). CQRS separates commands and queries in an application by using different models for reading and writing data. This improves separation of concerns and allows for greater scalability. While CQRS requires upfront work to set up the infrastructure, it results in simpler domain models and a complete rebuild of application state is possible through event sourcing. The document provides examples of how to implement CQRS and addresses some common misconceptions.