Event Sourcing is becoming a popular persistence pattern. But when to trade simplicity of relational databases for scalability and high throughput? Analysing the rationale behind Event Sourcing and separating Commands from Queries, will help you make an informed decision aware of benefits and risks. Event Sourcing is becoming a popular persistence pattern for scalable applications, reactive architectures and microservices. The subject is rather new, and we have no well defined, “gang-of-four”-like design patterns yet. Nevertheless, most of the introductory materials imply a particular implementation style. This presentation explains Event Sourcing and CQRS without assuming a particular implementation, to give you the freedom of choosing the pattern most appropriate for your business case. It’s a story, following the much-loved format of a visual picture book. Starting from relational and normalised persistent model, through the issues you face when scaling and moving to asynchronous, distributed application. How to get around these limits with event or command sourcing, why you have to use CQRS and what are your options for queries. The journey ends with benefits, drawbacks and, most importantly, with lessons learned “at the coal face” from real projects.