A compilation of resources I went through while getting deep into Domain-Driven Design (DDD), Event Sourcing (ES), and CQRS.
Unfortunately, there is not a single source of truth on these topics and the resources are quite scattered around the web. My goal is to create a guide on how to consume them while filtering repeated content.
- Mahmud Hassan - Basic concepts of DDD: basic overview of general concepts like domain, contexts, entities, aggregates, etc (most of these concepts come from Eric Evans's book]).
- Greg Young - CQRS and Event Sourcing: General Overview about both concepts (helps to understand that ES without CQRS is an antipattern).
- Greg Young - Event Sourcing: it overlaps with the previous one, but provides a more general perspective on why would you use ES.
- Martin Fowler - Event Sourcing: Fowler's take on explaining ES.
- Udi Dahan - Clarified CQRS: another common referent on the topic.
- Martin Fowler - CQRS: Fowler's take on explaining CQRS.
- CQRS concepts: use this as a reference for CQRS concepts.
More resources for deeper understanding and reinforcement:
- Philip Jander - Explanation on CQRS
- Post on DDD-CQRS mailing list: a question asked by someone working for a ride sharing company in Australia, answered by Philip Jander.
- Greg Young - Overview of the last decade of ES: it repeats many things from previous talks, but shows interesting learnings from the last decade (2006-2016) working with Event Sourcing.
- Martin Fowler - The many meanings of Event-Driven architectures: what do people mean when they say they have an Event-Driven architecture.
- CQRS Sagas: Explanation on Sagas.
Posts on using Event Sourcing in the real world. )
- Using Event Sourcing with Elixir/Phoenix
- Implementation of Event Store in Elixir
- More about creating an Event Store in Elixir
Some comments on the authors:
- Eric Evans wrote the most referenced book on DDD.
- Greg Young (who coined the term CQRS) has given like a hundred of talks on ES during the last 10 years. Because most of them have similar content, slides, concepts and even jokes, I only included 3.
- Martin Fowler: different articles and talks on the topic.