In this new book, leading practitioner Greg Young shows how to incorporate effective domain modeling throughout the software development process, designing large and complex systems so they can be built more efficiently, dynamically, and successfully. Young takes the next steps beyond the DDD principles and best practices introduced by Eric Evans in Domain-Driven Design: Tackling Complexity in the Heart of Software. One step at a time, he explains how to use DDD with Command-Query Responsibility Separation (CQRS) to select the right design solutions and make them work in the real world. System designers and architects will learn how CQRS and event sourcing can simplify construction, decentralize decision-making, and make system development more flexible and responsive. Young also shows how DDD and CQRS make it possible to coordinate larger development teams without higher levels of management maturity. To write this book, Young has drawn on his widely-praised 3-day course on CQRS, Domain Events, Event Sourcing, and DDD. He answers many of the questions course participants have raised, shows how to overcome common architectural obstacles to DDD, and guides professionals in solving the #1 problem they've encountered: translating DDD's abstract concepts into concrete solutions.
Greg Young is recognized as CQRS's leading practitioner. Through his conference presentations and 3-day workshops, he has been driving a growing community of CQRS practitioners worldwide,
1. Domain Driven Design Review2. User Intention and Why It is Important3. Building a Task Based UI4. Command and Query Separation5. Introduction to Events as a Storage Mechanism6. Creating an Event Storage System7. Performance Optimizations, Snapshots8. Creation of an Aggregate Root That Tracks Its Own State9. Context Specifications to Capture Intent10. How Events Change Testing Strategies11. The Read System12. Partitionability of Work, Developer Specialization, and Outsourcing13. Eventual Consistency14. Organizational Sagas and the Ubiquitous Integration Language15. Versioning of the Event Log over Long Periods of Time16. Pub/Sub and Building Disconnected Systems