# Domain-Driven Design and CQRS/ES

## Beginner

* [Domain-Driven Design Distilled](https://www.pearsonhighered.com/program/Vernon-Domain-Driven-Design-Distilled/PGM332632.html): a 136 page introduction that will get you up to speed before you attempt larger books.
* [Domain-Driven Design Fundamentals](http://app.pluralsight.com/courses/domain-driven-design-fundamentals): a Pluralsight course which provides a good introduction to all the basics.

## Intermediate

* [Domain-Driven Design in Practice](http://app.pluralsight.com/courses/domain-driven-design-in-practice): a good intermediate Pluralsight course.
* [Patterns, Principles, and Practices of Domain-Driven Design](https://www.amazon.com/Patterns-Principles-Practices-Domain-Driven-Design/dp/1118714709/): we've found this to be the most practical book to start with.
* [Implementing Domain-Driven Design](https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577/): and this is the next book, it's value is in a [consistent example application](https://github.com/VaughnVernon/IDDD_Samples).

## Advanced

* [Patterns for Building Distributed Systems for The Enterprise](http://app.pluralsight.com/courses/cqrs-theory-practice): this course provides some great insight to when to use CQRS. The differentiation between Event Sourcing and Event Streaming is of particular note which doesn't get much attention.
* [Further Patterns of Enterprise Application Architecture](https://martinfowler.com/eaaDev/): the unpublished follow-up to [Patterns of Enterprise Application Architecture](https://www.martinfowler.com/books/eaa.html) provides great definitions, descriptions and example of patterns such as [Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html) and [Event Collaboration](https://martinfowler.com/eaaDev/EventCollaboration.html).
* [Domain-Driven Design: Tackling Complexity in the Heart of Software ](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/): the original book that started it all. Domain-Driven Design has evolved since this book was written, but the core philosophy continues.

## Extra

* [Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka](https://www.amazon.com/Reactive-Messaging-Patterns-Actor-Model/dp/0133846830/): applying messaging patterns from [Enterprise Integration Patterns](http://www.enterpriseintegrationpatterns.com/index.html) and Domain-Driven Design to the Actor Model. [Source code](https://github.com/VaughnVernon/ReactiveMessagingPatterns_ActorModel).
* [Modern Software Architecture: Domain Models, CQRS, and Event Sourcing](http://app.pluralsight.com/courses/modern-software-architecture-domain-models-cqrs-event-sourcing): a course from Pluralsight that may help you triangulate your learning.
