A Review of Domain-Driven Design Distilled
Tags: domaindrivendesign, architecture, domainmodeling, learning
Published: 2021-03-09 20:12:53


Recently, I thought of writing my experiences and share my point of view on various topics. I am interested in Domain-Driven Design and microservices for quite some time and have spent some effort understanding the essence of  Domain-Driven Design. This blog is a small attempt to review the book "Domain-Driven Design Distilled" by Vaughn Vernon. This book is a condensed version of the book Implementing Domain-Driven Design written by the same author. 

This book introduced you to the Domain-Driven Design narrative, explain usages and benefits along with the efforts required. The author has used examples and case studies to explain the concepts of Bounded Context, Ubiquitous Language, Aggregates, Entity, Core Domain, Scenario, and Sub-Domain. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jorr8jggz1bikmq0jsyn.jpg)

This book highlights the Context Mapping types like Partnership, Shared Kernel, Customer-Supplier, Conformist, Anticruption Layer, Open Host Service, Published Language, Separate Ways, and Big Ball of Mudd. The aggregates publish domain events to be subscribed by other Bounded-Context (That can be the same Bounded Context). 
The author emphasized using eventual consistency and not using the Anemic Domain Model. The Anemic Domain Model is a representation of the Object-Oriented Model (getter and setter). 

The author expresses the use of Event Sourcing and provides a detailed guideline for Event Storming. Domain Expert involvement and how to perform sessions with the team to accelerate the development of the domain model are part of the Event Storming guideline.
The author has introduced some tools for managing estimation and collaboration with Agile.

##Thoughts:
The domain-driven design is a journey for learning about your business and crafting the best possible software. This practice is a team effort as it requires domain experts to work side by side to develop Ubiquitous language that interprets the same for business and developers. This process includes learning, experimentation, modeling, and learning (cycle continues). Once started with Domain-Driven Design, you need to consider the time estimate and how much effort is enough? In the end, it will simplify your model, ease communication with the business and produce an exceptional software product. 

##Conclusion
Domain-Deliver Design Distilled is a very informative book covering almost all the aspects of DDD with the minimum detail possible. The book emphasizes business needs rather than a technical marvel.  But It will not quench your thirst as one needs to dive deeper into some topics. Specially CQRS is not covered in this book, and many chapters are referring to IDDD for more detail. Finally, this book will enable you to think from the perspective of domain-driven design and help you grasp key concepts.
I recommend you to go through this book wheater you are quite adept in DDD or starting.


*“Developers are too wrapped up with technology and trying to solve problems using technology rather than careful thought and design. This leads developers to constantly chase after new “shiny objects,” which are the latest fads in technology.” 
 ―  Vaughn Vernon,  Domain-Driven Design Distilled*