Last updated on November 5th, 2022 at 07:35 pm
The following are my resources to learn and use DDD in my projects:
Articles and Blogs:
Domain Driven Design explained in 3 minutes
Domain Driven Design (DDD) generates lots of fantasies. For some it’s a set of concrete practices, for others it’s something that looks complicated & barely definable. Aggregate is probably the most commonly quoted term when people are talking about DDD.
The objective of this article is to cover the domain modeling and design from a practical stand-point on how one would go about taking a domain model and actually implementing it.
This blog post explores the fundamentals of DDD and gives you a path to follow. It will flag things about DDD that are worth thinking about, as well as things you can safely ignore. There’s some practical advice, and a few suggestions about significant milestones in your learning journey. You’ll also get a framework to build upon as you move towards mastery of DDD.
GitHub projects:
This is the starter project for the exercises in the “First Steps in Domain-Driven Design” course on O’Reilly
A repository implementing the example from the book Domain-Driven Design
Videos:
- What is DDD?- Eric Evans – DDD Europe 2019: https://www.youtube.com/watch?v=pMuiVlnGqjk
In this talk, Eric Evans presents a clear and practical introduction to DDD.
- Bounded Contexts – Eric Evans – DDD Europe 2020: https://www.youtube.com/watch?v=am-HXycfalo
Eric Evans, the author of “Domain-Driven Design: Tackling Complexity in Software,” explains what the Bounded Contexts and why they are a central premise in DDD and how they help us to reason about a model and its language in a context, isolated from other models.
- The Heart of Domain-Driven Design – Andrew Harmel-Law https://www.youtube.com/watch?v=JVmEtinDnas
In this talk, Andrew Harmel-Law presents what are the three core aspects of DDD and how to use them to tackle “the complexity at the heart of (all) software”
- When we lose sight of our domain – Carola Lilienthal – DDD Europe 2019: https://www.youtube.com/watch?v=TfNRB0Urhd0
“Great technologies, programming languages and tools are used to build software systems. That’s good and right and it’s also a lot of fun. To often we lose sight of the fact that the decisive factor for the success of our software is not the technology, but the domain. Have we implemented the requirements in a way that they will fit for the user? Have we structured our software in such a way that it can be extended by further functionalities without a lot of modification work? Can new developers quickly familiarize themselves with our software? Does our software scale if more and more users start using it? In this talk I will discuss the nine biggest misunderstandings that keep shifting our focus away from the domain to the technology, although we know that this is counterproductive.”
Books
- “Domain-Driven Design: Tackling Complexity in the Heart of Software” by Eric Evans – 2003
This book, known as the Blue Book, provides a framework for making design decisions and a vocabulary for discussing domain design. It is a synthesis of widely accepted best practices along with the author’s own insights and experiences. This is not a book about specific technologies. It offers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains.
- “Implementing Domain-Driven Design” by Vaughn Vernon – 2013
Building on Eric Evans’ seminal book, Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations. This book provides practical DDD techniques through examples from familiar domains and how to use DDD within diverse architectures, including Hexagonal, SOA, Rest, CQRS, Event-Driven, and Fabric/Grid-Based.
- “Domain-Driven Design Distilled” by Vaughn Vernon – 2016
Concise, readable, and actionable guide to the basics of DDD: What it is, what problems it solves, how it works, and how to quickly gain value from it. You will read core DDD techniques for building better software and focuses on what you need to know to get results.
If you are using another DDD resource that you find useful please add it in the comment below!