Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
DDD Lessons
Domain modelling lessons that I wish I’d learned earlier
Who am I?
Lead Developer and Solutions Architect
Writing PHP web apps professionally for 12 yrs
Recovered Architecture Ast...
Lesson 1
Recognising Domain Experts
Recognising Domain Experts
? ? ?
? ? ? ?
Solution Expert Domain Expert
Lesson 2
The UI is not a proxy for a Domain Expert
The UI is not a proxy for a domain expert
Developer
How
does “X”
work?
Lesson 3
When interviewing Domain Experts,
refine the constraints they define
When Interviewing Domain Experts, refine defined constraints
? ? ?
? ? ? ?
Domain ExpertDeveloper
What
happens
if X?
Well,...
Lesson 4
Sub Domains and Bounded Contexts
are VERY different things
Domains and SubDomains are composable
Domain: Running a Travel Agency
We want to create and sell trips to customers
SubDom...
Bounded Contexts are independent
Trip
Building
IAM
CRM Reporting
Searching
Lesson 5
Domains and contexts do not always align
Unaligned sub domains and bounded contexts
Payroll Accounting
Payroll
Accounts
Manager
HR Reporting
Accounting
Payroll
Other Lessons that I don’t have time
to explore
Ohh lightning talks, there’s never enough time
Other lessons
6: Temporal constraints are far more costly to implement than Value constraints
7. Constant refactoring is k...
Thank you
Any questions?
(Please leave feedback on the meetup page!)
Upcoming SlideShare
Loading in …5
×

DDD: lessons learned

402 views

Published on

A short talk on the key lessons I've learned on DDD over the last 4 years. Presented at DDDEU 2018.

Published in: Technology
  • Be the first to comment

DDD: lessons learned

  1. 1. DDD Lessons Domain modelling lessons that I wish I’d learned earlier
  2. 2. Who am I? Lead Developer and Solutions Architect Writing PHP web apps professionally for 12 yrs Recovered Architecture Astronaut A little DDD and EventSourcing obsessed (I will talk for hours) Organiser of PHPDublin @barryosull barry@tercet.io http://barryosull.com
  3. 3. Lesson 1 Recognising Domain Experts
  4. 4. Recognising Domain Experts ? ? ? ? ? ? ? Solution Expert Domain Expert
  5. 5. Lesson 2 The UI is not a proxy for a Domain Expert
  6. 6. The UI is not a proxy for a domain expert Developer How does “X” work?
  7. 7. Lesson 3 When interviewing Domain Experts, refine the constraints they define
  8. 8. When Interviewing Domain Experts, refine defined constraints ? ? ? ? ? ? ? Domain ExpertDeveloper What happens if X? Well, then it should . . ... ...
  9. 9. Lesson 4 Sub Domains and Bounded Contexts are VERY different things
  10. 10. Domains and SubDomains are composable Domain: Running a Travel Agency We want to create and sell trips to customers SubDomain: TripBuilding Building trips is expensive SubDomain: Searching Searching across all the services (flight/hotel/car/etc..) is time consuming and error prone SubDomain: Booking Booking trips is time consuming SubDomain: Finance We don't know how effective we are at turning quotes into bookings SubSubDomain: Tracking We don't keep track of what we've quoted SubSubDomain: Reporting We have no way of aggregating this information
  11. 11. Bounded Contexts are independent Trip Building IAM CRM Reporting Searching
  12. 12. Lesson 5 Domains and contexts do not always align
  13. 13. Unaligned sub domains and bounded contexts Payroll Accounting Payroll Accounts Manager HR Reporting Accounting Payroll
  14. 14. Other Lessons that I don’t have time to explore Ohh lightning talks, there’s never enough time
  15. 15. Other lessons 6: Temporal constraints are far more costly to implement than Value constraints 7. Constant refactoring is key to understanding a domain 8: Hold event storming sessions, even if you're not event sourcing 9: Applying DDD works and it makes you a better developer 10: If it's not your core domain, don't build it yourself, use an existing solution
  16. 16. Thank you Any questions? (Please leave feedback on the meetup page!)

×