Thinking in DDD
Grégory BOISSINOT
2017 April 25
DDD
IS AN APPROACH
TO SOFTWARE DESIGN
FOR COMPLEX NEEDS
Outline
• Software Design activity
• Software Projects issues
• DDD approach
• Explore the problem space with Collaborative Design
• Implement the solution space with Strategic Design & Tactical
Design
SOFTWARE DESIGN
DESIGN IS MAKING DECISIONS
CONTEXT MATTERSCONTEXT MATTERS
MAKING DECISIONS
TO BUILD USEFUL
PRODUCTS
AGILE IS HOW YOU ORGANIZE
TO GET THE WORK DONE
AGILE IS HOW YOU ORGANIZE
TO GET THE WORK DONE
GETTING WORK DONE IS TO
DESIGN
LOTS OF FAILURES HAPPENING
ON SOFTWARE PROJECTS
SCRUM PRODUCT BACKLOG AS PROCESS EXCELLENCE
PRESSURE TO DELIVER
SOFTWARE RELEASES
ON A RELENTLESS
SCHEDULE
A LACK OF DESIGN
Language
Framework
Library
Infra
JUMP INTO SPACE SOLUTION
TOO QUICKLY
RESUME-DRIVEN DESIGN
POOR COLLABORATION
ANALYSIS MODEL CODE	MODEL
POOR SYNCHRONIZATION
BETWEEN MODELS
Initial product incarnation
fast to produce
without care and
consideration
It works but no one knows how
A lack of organization
DATA MODELS
INSTEAD OF
DOMAIN MODELS
Database centric Architecture
CLIENT CONTACT
Code created without a common language
Different terms
VS
ROOM
- name
ROOM
- building
- floor
- capacity
- lighting
- air conditioner
Code created without a common language
The same term but with different meaning
VS
OUR ORGANISATIONAL
AND TECHNICAL DESIGNS
DO NOT ALIGN WITH
THE PROBLEM DOMAIN
AN ALIGNMENT CRISIS
BIG BALL OF MUD
DOMAIN
DRIVEN
DESIGN
THE MOST SIGNIFICANT COMPLEXITY
IN SOFTWARE DESIGN IS NOT
TECHNICAL
“Critical Complexity of most
software projects
is in understanding
the domain itself “
Eric Evans
THE DOMAIN
THE PROBLEM AREA
The reality
PROBLEM
SPACE
THE DOMAIN
IS A
SPHERE OF KNOWLEDGE
SOFTWARE
COMPLEXITY
DOMAIN
LOGIC
COMPLEXITY
LEGACY
CODE
COMPLEXITY
+
COMPLEXITY
FROM
TECHNICAL
SOLUTION
DOMAINS ARE BASED ON A MODEL
THE DOMAIN MODEL
Domain
Knowledge
Rich in
Domain Model
SOLUTION
SPACE
Domain
Domain Model
The reality
An abstraction of reality
designed to manage
complexity for specific
business cases
A projection
of the Real Domain
THE PROBLEM SPACE THE SOLUTION SPACE
DDD
as a
bridge
PROBLEM
SPACE
SOLUTION
SPACE
DDD CREATES
HIGH ALIGNMENT
DDD IS ABOUT CREATING SHARED
UNDERSTANDING
OF THE PROBLEM SPACE
MAKE THE IMPLICIT EXPLICIT
BOUND BY
LANGUAGE
EXPRESSED AS
DIAGRAMS
EXPRESSED IN
CONVERSATION
EXPRESSED AS
DOCUMENTATION
EXPRESSED AS
CODE
A UBIQUITOUS LANGUAGE
IS AT THE HEART OF GOOD DESIGN
BUSINESS GLOSSARY
BUSINESS GLOSSARY
OF THE UBIQUITOUS TERMS
BUSINESS GLOSSARY
AS A SHARED DOCUMENT
USED AND MAINTAINED BY
THE WHOLE PRODUCT TEAM
ANALYSIS MODEL CODE	MODEL
GOOD SYNCHRONIZATION
BETWEEN MODELS
Ubiquitous
Language
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
TACTICAL
DESIGN
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
TACTICAL
DESIGN
THE PROBLEM SPACE
EXPLORE THE PROBLEM SPACE
DISCOVERING
THE PRODUCT MISSION
STAY IN SYNERGY
WITH THE VALUES OF
THE SOFTWARE AND THE BUSINESS
BUSINESS MODEL CANVAS
TAKE ALL TEAMS ON BOARD
MANY EXPLORATING
TECHNIQUES
BUSINESS USERS ARE BUSY PEOPLE
Jeff
Patton
Alberto
Brandolini
Eric Evans
COLLABORATION
AND CONSTRUCTION
OF UBIQUITOUS LANGUAGE
THAT MAKES DDD SO POWERFUL
Event Storming
Domain
Event
Command
Actor Question ?
Event Storming Mechanisms
CLARIFYING QUESTIONS
‣ What do you mean by … ?
‣ What might lead someone to do / need .. ?
‣ What else might happen ...?
BREAK
THE PROBLEM & THE COMPLEXITY
DOWN
NOT ALL THE PARTS OF THE
PROBLEM ARE EQUAL
UNDERSTANDING BOUNDARIES
“There are no rules for determining
service boundaries“
Udi Dahan
FINDING
NATURAL BOUNDARIES
DOMAIN TERMINOLOGY BOUNDARIES
BEEF CUTS
LINGUISTIC BOUNDARIES
AUTONOMY BOUNDARIES
OTHER HEURISTICS BOUNDARIES
Data
Uniqueness
Existing
Team
Boundaries
Business
Experts
Bottlenecks
Exclusive
Domain
Experts
BREAK DOWN
INTO SMALLER DDD SUBDOMAINS
A car system subdomains
Subdomains of a book e-commerce platform
LibraryMembership
Payments
Customer
Support
Shipping
Marketing
YOU CAN'T EQUALLY SPREAD
EFFORT AND QUALITY
THROUGHOUT THE ENTIRE SYSTEM
‣ WHAT ARE THE PARTS OF THE PRODUCT
THAT WILL MAKE IT A SUCCESS ?
‣ WHY ARE THESE PARTS OF THE SYSTEM
IMPORTANT ?
‣ WHY CAN’T THEY BE BOUGHT OFF THE
SHELF ?
YOU NEED TO UNDERSTAND THE
BUSINESS STRATEGY
Domain
Knowledge
Supporting
Subdomains
Generic
Subdomains
Core
Domains
relationships
relationships
Distilled
into
CONTRACTING
“SECRET SOURCE”
GENERIC
SUBDOMAIN
SUPPORTING
SUBDOMAIN
CORE
SUBDOMAIN
OFF-THE-SHELF
PACKAGES
(OSS LIBS, COTS)
Paper justifying why the
product is a good idea
Whiteboard
with salient points
Shared understanding
of what is core
CAPTURE THE CORE DOMAINS VISION
A car system subdomains
Partitioned subdomains of
a book e-commerce platform
BookMembership
Payments
Customer
Support
Shipping
Marketing
(Core Domain)
(Generic Domain)
(Supporting Domain)
(Generic Domain)
(Supporting Domain)
(Core Domain)
TREAT YOUR CORE DOMAIN
AS A PRODUCT
THE CORE DOMAIN
REQUIRES YOUR
BEST DEVELOPERS
DESGIN THE PRODUCT
IN THE SOLUTION SPACE
Ideally, one-to-one mapping
between domain models and subdomains
BookMembership
Payments
Customer
Support
Shipping
Marketing
(Core Domain)
(Generic Domain)
(Supporting Domain)
(Generic Domain)
(Supporting Domain)
(Core Domain)
Regular
shipping
Priority
shipping
MODEL-DRIVEN DESIGN IS HARD
MULTIPLE MODELS
CRUD
Domain
Model
Transaction
script Anemic
CQRS
Rich object-oriented
model
CHOOSE
THE RIGHT MODEL
KEEP THE CODE MODEL CLEAN
OF TECHNICAL CONCERNS
AND FOCUS ON THE DOMAIN
THE PRODUCT VIEW WITH DDD
The Domain Model
The application layer
is the client of the
domain layer and
represent the use
case of the product
The logic layer (application Service)
represents the logic processes and
concepts of the domain
infrastructure
UI
CUSTOMER
<< Authentication
Context >>
User/Mdp
<< Orders Context >>
Method of payment
<< Reviewer
Context>>
Nb of stars
BUSINESS
USE CASE BUSINESS
USE CASE
BUSINESS
USE CASE
LARGE AMBIGIOUS MODEL
DOMAIN
MODEL
BOUNDED
CONTEXT
USER
AUTHENTICATION
BOUNDED CONTEXT
CUSTOMER
ORDERS
BOUNDED CONTEXT
REVIEWER
EVALUATION
BOUNDED CONTEXT
DIVIDE LARGE AND COMPLEX MODEL
INTO BOUNDED CONTEXTS
SERVICE
PRIORITY
BOUNDED CONTEXT
SERVICE
PAYMENT
BOUNDED CONTEXT
SERVICE
REGULAR
BOUNDED CONTEXT
SERVICE
PROMOTION
BOUNDED CONTEXT
ALIGNMENT WITH THE BUSINESS VISION FOR THE E-BOOK PLATFORM
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
TACTICAL
DESIGN
USER INTERFACE
BOUNDED CONTEXT A BOUNDED CONTEXT B
BOUNDED CONTEXT
USERINTERFACE
OUR SYSTEM AS A COLLECTION OF BOUNDED CONTEXTS
A TEAM OF PROFESSIONALS
WHICH OWNS THE CONTEXT
WILL MAKE GOOD CHOICES
BOUNDED CONTEXT
IS OWNED ENTIRELY
BY ONE PRODUCT TEAM
UI
+
SERVICE
DB
PRIORITY
BOUNDED CONTEXT
UI
+
SERVICE
DB
PAYMENT
BOUNDED CONTEXT
UI
+
SERVICE
DB
REGULAR
BOUNDED CONTEXT
UI
+
SERVICE
DB
PROMOTION
BOUNDED CONTEXT
Aligning with the business vision & BC segregation
AUTONOMY CONTEXT
AUTONOMY CONTEXT
ENCOURAGES LEADERSHIP,
INNOVATION
SIMPLE RULES FOR COMMUNICATION
BETWEEN BOUNDED CONTEXTS
DDD
MAXIMISES OUR ABILITY TO
DELIVERY VALUE TO COSTUMERS
DDD
MAXIMISES OUR ABILITY TO
DELIVERY VALUE TO CUSTOMERS
AND REDUCES COST
ARCHITECTURE TOOLS THAT
SUPPORT DDD
Cusomer
Support
Shipment
Payment
Marketing
Book
Membership
Marketing Book
Payment
Shipping
Membership
Customer
Support
Reporting
Custom functional
delivery team
Flow of information
Cross cutting
Context Map
Third Party
Context
Shipping
Context
Pricing
Context
Legacy
Context
Listing
Book
Context
Loyalty
Subdomain
Open Host
Service
Downstream
Partenership
Upstream
Upstream
DownstreamUpstream
Anti Corruption
Layer
Context Map with integration strategies
MICROSERVICES
UI
+
SERVICE
DB
PRIORITY
MICROSERVICE
UI
+
SERVICE
DB
PAYMENT
MICROSERVICE
UI
+
SERVICE
DB
REGULAR
MICROSERVICE
UI
+
SERVICE
DB
PROMOTION
MICROSERVICE
AUTONOMY CONTEXTS ARE MICROSERVICES
CONCLUSION
‣ Design is the art of trade-off
‣ DDD enhances synergy and alignment between teams
‣ DDD focus on main concepts :
‣ Ubiquitous Language,
‣ Bounded Context,
‣ Core Domains
CONCLUSION
QUESTIONS

SOAT Agile Day 2017 DDD