# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://civilcode.gitbook.io/playbook/education/trails/domain-driven-design.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
