Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The strategies behind ddd – AdeoDevSummit 2022

The strategies behind ddd – AdeoDevSummit 2022

Have you ever experienced that a small change in the business triggers an apocalyptic change in the software code? These kinds of symptoms are often a symptom of software architecture and business misalignment.
In this talk we will see how to enable developers to express business concerns in the software architecture in order to prevent a wide range of problems. Issues that cause particularly harmful side-effects and can prevent an efficient refactoring policy.
This introduction to the strategic aspects of Domain Driven Design is not a purely technical presentation, and is therefore aimed at both developers and all stakeholders involved in software design.

Beb422437c1dfb5366f197919e41ac50?s=128

Arnaud LEMAIRE
PRO

June 22, 2022
Tweet

More Decks by Arnaud LEMAIRE

Other Decks in Programming

Transcript

  1. www.lilobase.me The strategies behind DDD @lilobase #DevSummit sundayapp.com

  2. Let’s start a new project !

  3. Sprint Zero Java or C# ? Spring Boot or Quarkus

    ? Kafka or Redis ? Microservices or Monolith ? Kubernetes or Nomad ? Angular or React ?
  4. Look, at our spring boot application with Kafka deployed on

    a K8S Cluster They know nothing about the project’s business domain … Sprint Zero
  5. Java or C# ? Spring Boot or Quarkus ? Kafka

    or Redis ? Microservices or Monolith ? Kubernetes or Nomad ? Angular or React ? These issues address only the solution
  6. But not the problem What should we do ? …

  7. Spring Boot or Quarkus ? Kafka or Redis ? Microservices

    or Monolith ? Kubernetes or Nomad ? Angular or React ? And that's why we are seen as technical expert Java or C# ?
  8. solution problem What should we do ? How are we

    going to do it ? It is an important discussion to have But only after we've fi gured out 
 what to do
  9. DDD is all about Alignment What should we do ?

    How are we going to do it ?
  10. DDD is all about Alignment What should we do ?

    How are we going to do it ?
  11. « Give a child a hammer and everything they meets

    has to be pounded. » – Abraham Kaplan
  12. « We put the needs of the database before the

    needs of the users, which results in some pretty crappy experiences » – @WalterStephanie
  13. www.lilobase.me DDD is all about Understanding @lilobase

  14. Domains & Subdomains Business Domain discovery THE software

  15. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

    Customer Care Printing & Supply Chain Retail Store You need to acknowledge the fact that you have several domains
  16. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

    Customer Care Printing & Supply Chain Retail Store Only one VP should be angry at a time
  17. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

    Customer Care Printing & Supply Chain Retail Store These are neither Bounded Contexts nor Microservices
  18. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

    Customer Care Printing & Supply Chain Retail Store These are your domains
  19. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

    Customer Care Printing & Supply Chain Online Retail Store Payment processor Catalogue Invoicing Your domains contain domains
  20. Supporting Subdomain Generic Subdomain Core (sub)Domain Key differentiator Domains &

    Subdomains Business Domain Classi fi cation Essential to the 
 organization’s success Required for the 
 organization’s success Critical to the 
 organization’s success
  21. Domain Mapping Business Domain Classi fi cation Authoring Plateform Publishing

    & Printing Inventory Management Payment Processor Catalogue Invoicing Shipping Order Processing Proofreading
  22. Domains & Subdomains Business Domain Classi fi cation Authoring Plateform

    Inventory Management Shipping Payment Processor Catalogue Invoicing Order Processing Publishing & Printing Proofreading
  23. Domains & Subdomains Business Domain Classi fi cation Authoring Plateform

    Inventory Management Payment Processor Catalogue Invoicing Each business context is speci fi c Shipping Order Processing Publishing & Printing Proofreading
  24. Authoring Plateform Domains’ Connexion Reveal Business Relationships Inventory Management Shipping

    Catalogue Invoicing Order Processing Payment Processor It can highlight signi fi cant 
 sub-domain Publishing & Printing Proofreading
  25. www.lilobase.me DDD is all about Context @lilobase

  26. From Problem to Solution Authoring Plateform Publishing & Printing Inventory

    Management Shipping Payment Processor Catalogue Invoicing Order Processing Proofreading
  27. From Problem to Solution Authoring Plateform Publishing & Printing Inventory

    Management Shipping Payment Processor Catalogue Invoicing Order Processing problem solution Payment processor Invoicing Order Processing Shipping Authoring Plateforme Inventory Management Catalogue Publishing Proofreading Proofreading Inventory E-commerce platform Authoring Publishing
  28. Domains & Subdomains Development Strategy Supporting Subdomain In-House development with

    
 external support if possible Generic Subdomain Outsourcing is an option Core (sub)Domain In-House development 
 with Your best teams Key differentiator
  29. Domains & Subdomains Development Strategy Supporting Subdomain Customized Off The

    Shelf Software 
 is an option Generic Subdomain Try to fi nd Off The Shelf solution Cost saving opportunities Core (sub)Domain Custom-made software High Cost & Quality Key differentiator
  30. From Problem to Solution Payment processor Invoicing Order Processing Shipping

    Authoring Plateforme Inventory Management Catalogue Publishing Proofreading Inventory E-commerce platform Authoring Publishing Authoring Plateform Publishing & Printing Inventory Management Shipping Payment Processor Catalogue Invoicing Order Processing Proofreading
  31. From Problem to Solution Inventory E-commerce platform Authoring Authoring Plateforme

    Publishing Catalogue Publishing Proofreading Authoring Plateform Publishing & Printing Inventory Management Shipping Payment Processor Catalogue Invoicing Order Processing Proofreading
  32. From Problem to Solution Business Domain & Architecture alignment Inventory

    E-commerce platform Authoring Authoring Plateforme Publishing Catalogue Publishing Proofreading These are your bounded contexts
  33. Inventory E-commerce platform Authoring Publishing Align your teams with your

    bounded context « Team assignments are the fi rst draft of the architecture » – Michael Nygard
  34. P Authoring Publishing E-commerce Stripe ShipMonk Shopify Context Mapping Relationship

    Hierarchy OHS OHS ACL OHS C/S
  35. Authoring Publishing E-commerce Specific Architecture style You don’t need one

    architectural style Beware of the CRUD ES CQRS CRUD ? Stripe ShipMonk Shopify
  36. Stripe Still no microservices Bounded Context ≠ Deployment units ShipMonk

    Authoring Publishing E-commerce Shopify Deployment Unit
  37. Deployment Unit Stripe Still no microservices Bounded Context ≠ Deployment

    units ShipMonk Authoring Publishing E-commerce Shopify Deployment Unit
  38. Domains are not immutable Understanding is a never-ending process Stripe

    ShipMonk Authoring Publishing E-commerce Shopify Printing
  39. www.lilobase.me DDD is all about Boundaries @lilobase

  40. Semantic Boundaries Between BC meaning are different Authoring Publishing Book

    Chapter Chapter They are not the same book What happens if the author revises his book?
  41. Semantic Boundaries Between BC meaning are different Chapter This is

    why you must start by understand strategically your domain Author Book Reviews Release Catalogue
  42. Semantic Boundaries Between BC meaning are different Authoring Publishing Book

    Chapter Chapter Book Chapter Chapter Inside a Bounded Context, 
 Don’t 
 Repeat 
 Yourself Between Bounded Context, 
 Write 
 Everything 
 Twice
  43. Don’t cross them Between BC meaning are different Authoring Publishing

    Author Reviews Author Book Book Release Never create relationships between entities from two BC
  44. Don’t cross them Between BC meaning are different Authoring Publishing

    Book Book Release Author Author Reviews This is exactly the same
  45. Don’t cross them Between BC meaning are different Authoring Publishing

    Book Book Release Author Author Reviews API API
  46. Same for Events Between BC meaning are different Authoring Publishing

    This is exactly the same Event 
 Bus Book Book Release Author Author Reviews
  47. Same for Events Between BC meaning are different Authoring Publishing

    Event 
 Bus Book Book Release Author Author Reviews Translator Translator
  48. Transactional Boundaries Protect your integrity Authoring Book Chapter Chapter Chapter

    Statistics Inside your bounded Context 
 live 
 Entities They are grouped in Aggregates
  49. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    They are retrieved and persisted 
 as a whole Inside an aggregate, Entities 
 share the same lifecycle
  50. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    Who ensures the aggregate integrity All interactions are done through the Aggregate Root Write a new chapter
  51. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    Write a new chapter Chapter Inconsistency
  52. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    But don’t put to much in it Author What happens if we delete the book ? They must share the same lifecycle
  53. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    Author reference Author Id
  54. Designing Boundaries Protect your domain Printing Team We need printing

    margin Book Chapter Chapter Chapter Release We need the colorimetric pro fi le Printing margin Colorimetric pro fi le API Publishing Team
  55. Designing Boundaries Protect your domain API We need printing margin

    Book Chapter Chapter Chapter Release We need the colorimetric pro fi le Printing margin Colorimetric pro fi le Domain Leakage Publishing Team Printing Team
  56. Designing Boundaries Protect your domain Publishing Team Printing Team Publishing

    API We need printing margin Book We need the colorimetric pro fi le Printing margin Colorimetric pro fi le Printing API We discovered the need 
 for an ACL
  57. www.lilobase.me DDD is all about Behavior @lilobase

  58. CRUD don’t express behavior It blinds you from the business

    perspective UPDATE address Relocation Mistake correction
  59. CRUD don’t express behavior It blinds you from the business

    perspective Relocation Mistake correction
  60. Data oriented programming It obfuscates your code – Mathias Verraes

    $order->setStatus('paid'); $order->setPaidAmount(120); $order->setPaidCurrency('EUR'); $order->setCustomer($customer);
  61. Data oriented programming It obfuscates your code $money = new

    Money(120, new Currency(‘EUR')); $order->pay($customer, $money); – Mathias Verraes $customer->pay($order, $money);
  62. Data oriented programming It obfuscates your code – Mathias Verraes

    $customer->pay($order, $money); $order->setStatus('paid'); $order->setPaidAmount(120); $order->setPaidCurrency('EUR'); $order->setCustomer($customer);
  63. Task Based UI Your customer’s need isn’t to fi ll

    out forms
  64. Users don’t need to fill out forms

  65. Users don’t need to fill out forms

  66. www.lilobase.me DDD is all about Compassion @lilobase

  67. A A A Ubiquitous language Stakeholders & Team Alignement Dev

    Domain 
 Expert Dev
  68. A A A not « just » a glossary Ubiquitous

    language Stakeholders & Team Alignement Dev Domain 
 Expert Dev
  69. Ubiquitous language Each BC has its own Authoring Publishing A

    A
  70. Ubiquitous language Each BC has its own Authoring Publishing A

    A A A It is a common cause of miscommunication
  71. Pair Programing The best way to share a domain understanding

    Dev Domain 
 Expert
  72. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User
  73. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User He has the last word regarding domain implementation
  74. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User Prioritize development & formalize users’ feedback
  75. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User Power of Life and Death over the project
  76. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User Too often forgotten
  77. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User Maybe you could spend a day per month working with them ?
  78. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User They design the software speci fi cation
  79. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User What he understood goes 
 into production
  80. www.lilobase.me DDD is for every Projects @lilobase

  81. “A loosely coupled software architecture and org structure to match”

    is a key predictor of: • Continuous Delivery Performance • Ability to scale organization and increase performance linearly This is what DDD is All About ! — Michael Plöd (@bitboss)
  82. www.lilobase.me @lilobase sundayapp.com Thanks