Post

Book review: Learning Domain-Driven Design

Book review: Learning Domain-Driven Design

The book “Learning Domain-Driven Design” by Vlad Khononov is divided into four parts and has two appendices. The first part is about strategic design, while the second part is all about tactical design. The third part is about applying DDD in practice. The fourth part is about relationships to other methodologies and patterns. The book closes with a case study by the author about a project from earlier in his career (Appendix A), followed by the answers to the exercises (Appendix B).

Part I: Strategic Design

In the first part, the book starts by explaining business domains, how to discover them, which types of subdomains exist, and how important domain experts are. It continues with discovering domain knowledge in depth and gives insight into the importance of communication and ubiquitous language, among other things. It shows how to handle domain complexity by exploring bounded contexts and concludes with techniques for integrating them.

Part II: Tactical Design

In the second part, the author dives deep into implementing business logic. He explains different implementation patterns and shows when to use them. Extra attention is paid to modelling the dimension of time. Once these concepts are established, the book continues with architectural and communication patterns, which are essential for modern software architecture.

Part III: Applying Domain-Driven Design in Practice

The third part shows how to use heuristics to find the best strategy. It also goes into testing before the focus shifts to evolving design decisions. The latter takes up a big chunk of this part of the book—understandably, as most of the projects we will work on throughout our careers are legacy or, more recently, brownfield applications. The book continues with EventStorming—a technique for gathering more information about a system and its architecture. This part concludes with some real-world design recommendations.

Part IV: Relationships to Other Methodologies and Patterns

The fourth part of the book draws connections between DDD and other methodologies and patterns. It explores how they relate to DDD, including the relationships among microservices, bounded contexts, and aggregates. It also explores how event-driven architecture is influenced by design decisions and how the data models of data lakes, data warehouses, and, finally, Data Mesh can be used to gain additional domain knowledge.

Appendix A: Applying DDD: A Case Study

The first appendix is a case study by the author. He explains how his team developed a past project—one he can discuss freely because the resulting company no longer exists—and how design decisions influenced the outcome. The case study goes very deep and draws many connections to the first four parts.

Conclusion

Each chapter ends with exercises to reinforce the material. I worked through all of them while reading the book and had to reread some parts to gain a better understanding. This forced repetition helped me develop a better overall picture.

As my day job has shifted to software architecture, this book has already helped me make more informed decisions at work—which will hopefully pay off in the long term. I am sure I will pull this book off the shelf every now and then to reread parts of it. I am happy that I own the print version of this gem, and I recommend the print edition to every developer.

Amazon O’Reilly

I do not earn any money on these links.


This post is licensed under CC BY 4.0 by the author.