CQRS, Event Sourcing and the Ultimate Way to not Persist Application State!
Command Query Responsibility Segregation (CQRS) is an important architectural pattern for enterprise applications. It involves the separation of the command (or write) side of the application from the query (or read) side of the application and then only guaranteeing eventual consistency of the query side. It offers a number of important benefits for more complex and collaborative applications. This presentation will give a quick introduction to and overview of CQRS within a Domain Driven Design (DDD) context.
CQRS applications can also benefit, in many circumstances, from the use of Event Sourcing (ES), wherein events produced from the actions of commands are persisted rather than the actual state of the application. This presentation will give an introduction to and overview of CQRS using Event Sourcing, with some of the libraries and frameworks that help create CQRS/ES applications, and a few ways to persist these events in regular data stores or a custom-build third-party event store.
Finally, the presentation will consider whether events are the ultimate and most timeless way to persist application state (without actually persisting application state). The ability to construct and reconstruct data stores on the read side enables post-hoc optimisations of data representation for queries. The ability to change paradigms on the application write side means that the data representation is perhaps even more powerful and timeless than relational data stores.