Domain Driven Design
What is It?
A way of designing software that reduces complexity by
modeling a problem domain using the concepts and
language of the real world
Many Applications Are Monolithic
Real Businesses are not Monolithic
Business
Employee
Can file HR paperwork
Can distribute payroll
Can commit source code
Can fix computers
Real Businesses Have Multiple Departments
Employee
Can commit source code
Can fix computers
Employee
Can file HR paperwork
Can distribute payroll
IT HR
They Communicate by Sending Messages
“I have a broken computer.
The serial number is #12345”
IT HR
Internally, the department handles the task
Manager Employee
“Go fix computer with serial
number #12345”
IT
HR Doesn’t have to know what’s
involved in fixing a computer
“Your computer is fixed.”
IT HR
By Separating Responsibilities, We
Reduce Complexity
IT
HR
Manufacturing
Sales
Marketing
But it also scales
IT
HR
Sales
Marketing
Manufacturing
And Can Even be Distributed
IT
HR
Sales
Marketing
Manufacturing
Manufacturing
Manufacturing
Monolithic Used to work
User
User
User
App Database
Now there are Many, many more users
User
App Database
User
User
User
User
User
User
User
User
User
User
User
We can do some load balancing
User
App
Database
User
User
User
User
User
User
User
User
User
User
User
App
App
But it’s not enough
User
App
Database
User
User
User
User
User
User
User
User
User
User
User
App
App
User
User
User
User
User
User
User
User
User
User
User
User
User
User
User
Amazon Knows This
Amazon Knows This
Amazon Knows This
Amazon Knows This
Amazon has a SOA
User App
Details
Recommendations
Reviews
Affiliates
Pricing
How do we model this?
–The “ubiquitous” language of the domain (the business)
–Rather than taking a set of specifications and
implementing them in technical terms only developers
understand, we use the language that the experts in the
domain use
BUSINESS BENEFITS
–1. The organization gains a useful model of its domain. 
–2. A refined, precise definition and understanding of the business is
developed. 
–3. Domain experts contribute to software design. 
–4. A better user experience is gained. 
–5. Clean boundaries are placed around pure models. 
–6. Enterprise architecture is better organized. 
–7. Agile, iterative, continuous modeling is used. 
–8. New tools, both strategic and tactical, are employed.
Vernon, Vaughn (2013-02-06). Implementing Domain-Driven Design (p. 26).

Domain-Driven Design: Part 4 from Delivering the Connected Experience

  • 1.
  • 2.
    What is It? Away of designing software that reduces complexity by modeling a problem domain using the concepts and language of the real world
  • 3.
  • 4.
    Real Businesses arenot Monolithic Business Employee Can file HR paperwork Can distribute payroll Can commit source code Can fix computers
  • 5.
    Real Businesses HaveMultiple Departments Employee Can commit source code Can fix computers Employee Can file HR paperwork Can distribute payroll IT HR
  • 6.
    They Communicate bySending Messages “I have a broken computer. The serial number is #12345” IT HR
  • 7.
    Internally, the departmenthandles the task Manager Employee “Go fix computer with serial number #12345” IT
  • 8.
    HR Doesn’t haveto know what’s involved in fixing a computer “Your computer is fixed.” IT HR
  • 9.
    By Separating Responsibilities,We Reduce Complexity IT HR Manufacturing Sales Marketing
  • 10.
    But it alsoscales IT HR Sales Marketing Manufacturing
  • 11.
    And Can Evenbe Distributed IT HR Sales Marketing Manufacturing Manufacturing Manufacturing
  • 12.
    Monolithic Used towork User User User App Database
  • 13.
    Now there areMany, many more users User App Database User User User User User User User User User User User
  • 14.
    We can dosome load balancing User App Database User User User User User User User User User User User App App
  • 15.
    But it’s notenough User App Database User User User User User User User User User User User App App User User User User User User User User User User User User User User User
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Amazon has aSOA User App Details Recommendations Reviews Affiliates Pricing
  • 21.
    How do wemodel this? –The “ubiquitous” language of the domain (the business) –Rather than taking a set of specifications and implementing them in technical terms only developers understand, we use the language that the experts in the domain use
  • 22.
    BUSINESS BENEFITS –1. Theorganization gains a useful model of its domain.  –2. A refined, precise definition and understanding of the business is developed.  –3. Domain experts contribute to software design.  –4. A better user experience is gained.  –5. Clean boundaries are placed around pure models.  –6. Enterprise architecture is better organized.  –7. Agile, iterative, continuous modeling is used.  –8. New tools, both strategic and tactical, are employed. Vernon, Vaughn (2013-02-06). Implementing Domain-Driven Design (p. 26).