Domain Driven Design
Overview
- What is Domain-Driven Design (DDD)
Mathias Verraes - Blog Post - Domain-Driven Design Fundamentals
Julie Lerman - Course
Getting Started
- Domain-Driven Design: Tackling Complexity in the Heart of Software
Eric Evans - Book - Domain-Driven Design Reference
Eric Evans - Book - Greg Young’s CQRS Class: Domain Driven Design, CQRS, and Event Sourcing
Greg Young - Course - Hands-on Domain-Driven Design with .NET Core
Alexey Zimarev - Book - Implementing Domain-Driven Design
Vaughn Vernon - Book - An Introduction to Domain Driven Design
@craigtptech - Diagram - My DDD (Domain Driven Design) Cheat Sheet
@sirinse - Blog Post - DDD By Example
Paul Rayner - Talk - Domain-Driven Hexagon
Sairyss - Web Site - What Is Domain-Driven Design?
Vladik Khononov - Book - Domain Driven Design like a pro
Anders Gill - Blog Post - Hands-on Domain-driven Design - by example
Michael Plöd - Book - Domain-Driven Design in Practice
Vladimir Khorikov - Course - Applying Domain-Driven Design with CQRS and Event Sourcing
Nick Chamberlain - Book - DDD in a nutshell
Vladimir Khorikov - Talk - Patterns, Principles, and Practices of Domain-Driven Design
Scott Millett, Nick Tune - Book
Strategic
- Strategic Domain-Driven Design Kata: Delivericious
Nick Tune - Blog Post - Problem To Software
Krisztina Hirth - Diagram - Strategic Domain-Driven Design Patterns
Nick Tune - Talk - Strategic Domain-Driven Design
Blog Post - The Big Picture
Augustine Correa - Blog Post - Domain, Subdomain, Bounded Context, Problem/Solution Space in DDD: Clearly Defined
Nick Tune - Blog Post - What is Context Mapper?
Web Site - Webinar: Extreme Domain-Driven Design Modelling
Alberto Brandolini - Talk - Domain-Driven Design Crew
Web Site - How to rewrite, a bit at a time
Sabrina Leandro - Talk - Focusing the Core Domain: Domain-Driven Design Case Study
Eric Evans - Talk - Visual Collaboration Tools
Joao Rosa Kenny Baas-Schwegler - Book
Ubiquitous Language
- Keynote: Language in Context: And How Do We Go Forward From Here?
Eric Evans - Talk - Ubiquitous Language and Naming
Vladimir Khorikov - Blog Post - Language in Context
Eric Evans - Talk - Complicated patterns aren’t always that complicated. Usually it’s the “simple” ones that bite you.
Patrick Lee Scott - Blog Post
Bounded Contexts
- Modelling Bounded Contexts with the Bounded Context Canvas: A Workshop Recipe
Nick Tune - Blog Post - Finding your service boundaries - a practical guide
Adam Ralph - Blog Post - Finding Service Boundaries – illustrated in healthcare
Udi Dahan - Blog Post - Keynote: Language in Context: And How Do We Go Forward From Here?
Eric Evans - Talk - Finding Service Boundaries with the Bounded Context Canvas
Nick Tune - Talk - Monolith -> Services: Theory & Practice
Kent Beck - Blog Post - The Entity Microservice Trap You May Be Doing It Wrong
Fred George - Talk - How to break a Monolith into Microservices
Zhamak Dehghani - Blog Post - Strategic Microservice Patterns
Nick Tune - Talk - Capability Mapping
Ian Cooper - Talk - A Case For Outside-In Design - SCLConf 2018
Sandro Mancuso - Talk - Introducing Domain-Oriented Microservice Architecture
Adam Gluck - Blog Post - Strategies for Integrating Bounded Contexts
Philip Brown - Blog Post - Udi Dahan on Defining Service Boundaries
Udi Dahan - Blog Post - Why You Should Avoid a Canonical Data Model
Stefan Tilkov - Blog Post - Business Logic, a different perspective
Udi Dahan - Talk - Emergent Boundaries
Mathias Verraes - Talk - Bounded Context Relationships
Diagram - Talk Session: Strategic Autonomous Design: Patterns & Heuristics
Nick Tune - Talk - Finding your service boundaries - a practical guide
Adam Ralph - Talk - Context is King: Finding Service Boundaries
Derek Comartin - Blog Post - Getting (service) design right
Uwe Friedrichsen - Talk - From Capabilities to Services: Modelling for Business-IT Alignment
Trond Hjorteland - Talk - Modelling Bounded Contexts with the Bounded Context Design Canvas: A Workshop Recipe
Sophie Mansfield - Blog Post - Mapper Contexts & Supercontexts: Decoupling Domain-Specific and Domain-Generic Bounded Contexts
Nick Tune - Blog Post - Bounded Context Canvas V3: Simplifications and Additions
Nick Tune - Blog Post - Core Domain Patterns
Nick Tune - Blog Post - The Art of Discovering Bounded Contexts
Nick Tune - Talk - Bounded Contexts
Eric Evans - Talk - Bounded Contexts for Team Organization - Cyrille Martraire - DDD Europe 2020
Cyrille Martraire - Talk - Dissecting Bounded Contexts
Nick Tune - Talk - Consumer-driven Coupling: Patterns and Anti-patterns
Nick Tune - Blog Post - Complex event flows in distributed systems
Bernd Ruecker - Talk - Should We Create a Shared Service? A Decision-making Checklist
Nick Tune - Blog Post - Context is King: Finding Service Boundaries through Language
Derek Comartin - Blog Post - Talk Session: Sociotechnical DDD
Nick Tune - Talk - A different take on (context) mapping
Marijn Huizendveld - Talk - DDD Pattern: Library Contexts
Nick Tune - Blog Post - Customer Journey as a Bounded Context
Alberto Brandolini - Blog Post - Modelling with Business Capabilities
Trond Hjorteland - Blog Post - About Bounded Contexts and Microservices
Alberto Brandolini - Blog Post - The Relationship Between Software Architecture And Business Models (and more)
Nick Tune - Blog Post - Talk Session: All Our Aggregates Are Wrong
Mauro Servienti - Talk - Complicated patterns aren’t always that complicated. Usually it’s the “simple” ones that bite you.
Patrick Lee Scott - Blog Post - GOTO 2015 • DDD & Microservices: At Last, Some Boundaries!
Eric Evans - Talk - Bounded Contexts: Manage the Understandability of Your Systems (DDD Australia)
Mathias Verraes - Talk
Anti Corruption Layer
- Adapters are true Heralds of DDD
Thomas Pierrain - Blog Post - Domain Driven Design: Anti Corruption Layer
Mark Needham - Blog Post
Related Categories
Domain Model
- Unshackle Your Domain
Greg Young - Talk - If (domain logic) then CQRS, or Saga?
Udi Dahan - Talk - Domain model purity vs. domain model completeness
Vladimir Khorikov - Blog Post - Domain-Driven Refactoring - NDC Oslo 2020
Jimmy Bogard - Talk - Business Logic, a different perspective
Udi Dahan - Talk - Crafting Wicked Domain Models
Jimmy Bogard - Talk - Your secret weapon to assess domain knowledge is: Domain Quiz!
Zsofia Herendi - Blog Post - Domain Modelling
Yves Reynhout - Talk - Designing a Domain Model to enforce No Duplicate Names
Steve Smith - Blog Post - Modelling for Mistakes
Alexander Langer - Talk - Domain modeling towards First Principles
Cyrille Martraire - Talk - Design in the small
Yves Reynhout - Talk - Modelling Time
Eric Evans - Blog Post - Entity vs Value Object: the ultimate list of differences
Vladimir Khorikov - Blog Post - Rich Domain Models — how, exactly, does behavior fit in?
Blog Post - No, it can never happen!
Oskar Dudycz - Blog Post
Design Heuristics
- Should We Create a Shared Service? A Decision-making Checklist
Nick Tune - Blog Post - Welcome to Domain-Driven Design Heuristics
Web Site - Design Heuristics
Mathias Verraes - Talk
Domain Exploration
- Design and Reality
Mathias Verraes - Blog Post - Models and Metaphors
Mathias Verraes - Blog Post - v::domo - Team Strategic Experimentation, Discovery-based Learning, and Modeling
vlingo.io - Web Site
Context Mapping
- Context Maps - a deep dive - Michael Plöd - KanDDDinsky 2019
Michael Plöd - Blog Post - Classifying Bounded Contexts
Diagram - A Different Take on Context Mapping at DDDEurope 2020
Marijn Huizendveld - Talk - The Emerging Domain
Aleix Morgadas - Blog Post - Context Mapping
ddd-crew - Blog Post - A different take on (context) mapping
Marijn Huizendveld - Blog Post
Event Storming
What is Event Storming
- Introducing EventStorming
Alberto Brandolini - Book - YOW! West 2016 - Event Storming
Paul Rayner - Talk - Discovering complex domain with Event Storming
Bartłomiej Łazarczyk - Blog Post - The EventStorming Handbook
Paul Rayner - Book - Event Storming (12 min) (2020)
Rinat Abdullin - Talk - Event Storming Workshop Cheat Sheet
Wolfgang Werner - Blog Post
Lessons Learned & Other Commentary
- Crunching ‘real-life stories’ with DDD & Event Storming
Kenny Baas-Schwegler - Talk - EventStorming: Redesigning Everything
Alberto Brandolini - Talk - Talk Session: Visualizing Your Event Storm in New Ways
Justin Holmes - Talk - The TL;DR of why you want to intermix event storming in your agile toolset is to achieve the following benefits:
Kevin van Ingen - Blog Post - EventStorming Modelling Tips to Facilitate Microservice Design
Nick Tune - Blog Post - Transactions Redefined
Alberto Brandolini - Talk - Event Storming for Fun and Profit
Vaughn Vernon - Talk - Remote EventStorming
Alberto Brandolini - Blog Post - Webinar: Extreme Domain-Driven Design Modelling
Alberto Brandolini - Talk - A facilitators recipe for Event Storming
Donal Spring - Blog Post - EventStorming Team Flow
Paul Rayner - Blog Post
Event Modeling
- Introduction to Event Modeling
Confluent - Course - Restaurant Model Example
idugalic - Diagram - Event Modeling: What is it?
Web Site - OAuth2
Blog Post - Event Modeling
Yves Goeleven - Blog Post - Event Modeling (introduction talk)
Adam Dymitruk - Talk - oNote
Web Site - Event Modeling Traditional Systems
Adam Dymitruk - Blog Post
Domain Storytelling
- Domain Storytelling
Web Site - Domain Storytelling - Collaborative Modeling for Agile and Domain-Driven Design
Stefan Hofer and Henning Schwentner - Book - Find Context Boundaries with Domain Storytelling
Stefan Hofer and Henning Schwenter - Talk
Wardley Mapping
- The Easiest Way to Do Wardley Mapping
Ben Mosior - Talk - Mapping the Evolution of Socio-technical Systems
Cat Swetel - Talk - Experimenting with Remote Wardley Mapping
Nick Tune - Talk - The Build Better Software Podcast - Wardley Mapping With Ben Mosior
George Stocker - Blog Post
Tactical
Aggregates
- DDD Aggregates: Consistency Boundary
James Hickey - Blog Post - Effective Aggregate Design
Vaughn Vernon - Blog Post - 4 Secrets to Inter-Aggregate Communication in an Event Sourced System
Daniel Whittaker - Blog Post - Uncovering Hidden Business Rules with DDD Aggregates
Nick Tune - Blog Post - Aggregate (Root) Design: Behavior & Data
Derek Comartin - Talk - Vaughn Vernon - How to Use Aggregates for Tactical Design
Vaughn Vernon - Talk
Application Services
- Domain services vs Application services
Vladimir Khorikov - Blog Post
Domain Events
- Domain events: design and implementation
nishanil nanil - Blog Post - Putting your events on a diet
David Boike - Blog Post - Message Properties
Derek Comartin - Blog Post - A better domain events pattern
Jimmy Bogard - Blog Post - 6 Code Smells with your CQRS Events – and How to Avoid Them
Daniel Whittaker - Blog Post - Architectural Patterns
Pethuru Raj, Anupama Raman, Harihara Subramanian - Diagram - Handling Domain Events: Missing Part
Kamil Grzybek - Blog Post - Domain events: simple and reliable solution
Vladimir Khorikov - Blog Post
Domain Services
- Domain services vs Application services
Vladimir Khorikov - Blog Post - Domain-Driven Refactoring: Extracting Domain Services
Jimmy Bogard - Blog Post
Entities
- Entity vs Value Object: the ultimate list of differences
Vladimir Khorikov - Blog Post
Value Objects
- Accidental entities - you don’t need that identity
Blog Post - Value objects and How to Appreciate Them
Rasmus Feldthaus - Blog Post - Value Object: a better implementation
Vladimir Khorikov - Blog Post - Entity vs Value Object: the ultimate list of differences
Vladimir Khorikov - Blog Post
Lessons Learned & Other Commentary
- YOW! Nights October 2015 - Microservices, SOA, DDD
Udi Dahan - Talk - Design Microservice Architectures the Right Way
Michael Bryzek - Talk - The DDD Do-Over
Jimmy Bogard - Talk - Domain-Driven Design: Hidden Lessons from the Big Blue Book
Nick Tune - Talk - Keynote: Getting to DDD: Pragmatic or Principled?
Julie Lerman - Talk - 10 Lessons from a Long Running DDD Project – Part 2
Jimmy Bogard - Blog Post - Good Design is Imperfect Design
Eric Evans - Talk - A Decade of DDD, CQRS, Event Sourcing
Greg Young - Talk - The Precision Blade
Alberto Brandolini - Talk - Domain Driven Design: The Good Parts
Jimmy Bogard - Talk - STOP “doing” Domain Driven Design
Derek Comartin - Talk - Are You Making These 10 DDD Mistakes?
Daniel Whittaker - Blog Post - DDD Lessons
Barry O Sullivan - Talk - Domain-Driven Design: The First 15 Years
DDD Community - Book - Eric Evans – What I’ve learned about DDD since the book
Gojko Adzic - Blog Post
Additional Resources
- DDD/CQRS Google Group
Forum - ddd-cqrs-es.slack.com
Forum - Awesome Domain-Driven Design
Nick Chamberlain - Web Site