Domain-Driven Design: Part 4 from Delivering the Connected Experience
-
Upload
cantina -
Category
Technology
-
view
782 -
download
0
description
Transcript of Domain-Driven Design: Part 4 from Delivering the Connected Experience
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
EmployeeCan file HR paperworkCan distribute payrollCan commit source codeCan fix computers
Real Businesses Have Multiple Departments
EmployeeCan commit source codeCan fix computers
EmployeeCan file HR paperworkCan 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
ManufacturingManufacturing
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
DatabaseUser
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
UserUser
User
UserUser
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).