Email the Author
You can use this page to email Alex Lawrence about Implementing DDD, CQRS and Event Sourcing.
About the Book
This book explains and illustrates how to implement Domain-Driven Design, Command Query Responsibility Segregation and Event Sourcing. The goal is to build software that is behavior-rich, event-based, problem-centric, reactive, scalable and well-designed. Domain-Driven Design is a concept that focuses on the problem space and its associated knowledge areas. Command Query Responsibility Segregation separates a software into a write side and a read side. Event Sourcing is an architectural pattern that represents state as a sequence of immutable events. The concepts are explained in theory and put into practice with standalone examples and a Sample Application. This is done without third-party software. The book comes with a source code bundle and supports interactive execution. All code is written in JavaScript and uses Node.js as runtime.
Style of this book
The primary focus of this book is the application and the implementation of concepts. Therefore, the purely theoretical parts are generally concise. The covered topics are illustrated extensively with a large amount of examples and code. Nevertheless, selected conceptual parts are discussed in greater detail. Apart from Node.js and JavaScript, this book does not utilize or explain specific frameworks or technologies. For all functionalities that require persistence or inter-process communication, it provides exemplary implementations that directly work with the filesystem. This includes Repositories, the Event Store, Read Model storages and a remote event distribution. The goal is to convey a deeper understanding of the concepts that are related to persistence and messaging. For production purposes, these implementations can be easily replaced with suitable technologies.
The following articles explain selected aspects of the book style in more detail:
About the Author
I am a software developer with knowledge and experience in architecture, automation, backend, frontend, operations, teaching, technical leadership and testing. Since 2007, my professional focus lies on full-stack web development. In most projects, I use JavaScript as language and Node.js as backend runtime. Wherever useful, I apply selected parts of DDD. The architectural patterns I am most interested in are Event-driven Architecture, CQRS and Event Sourcing. For the frontend, I personally favor to use native technologies, such as Web Components. Professionally, I also work with various libraries and tools. Most recently, I started learning Rust as new programming language and picked up selected concepts of Functional Programming. Since many years, I am a strong supporter for Free/Libre Open Source Software.