Implementing Domain-Driven Design
Review by Sven Woltmann
In “Implementing Domain-Driven Design,” Vaughn Vernon takes the reader on a journey with a fictional development team putting a software project into practice using Domain-Driven Design. In addition to strategic design (domains, subdomains, bounded contexts, context maps) and tactical design (entities, value objects, services, modules, aggregates, factories, repositories), he also explores software architectures that combine well with Domain-Driven Design (such as hexagonal architecture, CQRS, event-driven architecture, event sourcing).
Just like in real life, the developers make mistakes and learn from them. This helps the reader understand on many occasions why the initial extra effort of Domain-Driven Design pays off in the long run.
The book is a great complement to Evans’ classic, “Domain-Driven Design,” and has particularly helped me understand the relationship between bounded contexts, core domain, supporting subdomains, and generic subdomains. (It’s important to mention that you don’t need to have read Evans’ book as all concepts are explained from scratch in this book as well.)
The principles are explained through practical, detailed, and easily understandable examples implemented in Java (and partly Spring). I regularly use this book (along with “Get Your Hands Dirty on Clean Architecture”) as a reference.
Just like with Evans’ classic, you should dedicate sufficient time to study the book thoroughly. I recommend it to anyone who wants to apply Domain-Driven Design in practice successfully.
🎧 Suitable as an audiobook: No.
Other Recommendations From This Book’s Genres
Domain-Driven Design Distilled
Clean Architecture: A Craftsman’s Guide to Software Structure and Design
Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java
Domain-Driven Design: Tackling Complexity in the Heart of Software
Design Patterns: Elements of Reusable Object-Oriented Software
Pattern Hatching: Design Patterns Applied
Refactoring: Improving the Design of Existing Code
Clean Code: A Handbook of Agile Software Craftsmanship
Clean Craftsmanship: Disciplines, Standards, and Ethics
Working Effectively with Legacy Code
The Pragmatic Programmer: From Journeyman to Master
Growing Object-Oriented Software, Guided by Tests
The Clean Coder: A Code of Conduct for Professional Programmers
Agile Software Development: Principles, Patterns, and Practices
Extreme Programming Explained: Embrace Change