CQRS / ES and Persistence
The Ultimate Way to not Persist Application State!
ommand 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. Dr Aitken has over twenty years experience as an IT academic, developer, consultant and professional trainer in academia and the IT industry around Australia, across S/E Asia and in the US and UK. He has won awards and been recognised for the quality of his teaching and professional training from industry, academia, the student body, and the Australian Federal Government. He is currently: 1) working on a startup in the higher education space that is using the CQRS architectural pattern with Scala, Akka Persistence, and Greg Young’s Event Store plus various other SQL and NOSQL data stores, and 2) providing Lean Commercialisation services to help organisations in any sector, of any size, and any level of maturity, to commercialise innovation by applying the principles and practices of Lean Startup and Customer Development.