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 learned


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
  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!)