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

Réconcilier architecture logicielle & problématiques métiers : une introduction au Domain Driven Design – Blend Web Mix 2021

Réconcilier architecture logicielle & problématiques métiers : une introduction au Domain Driven Design – Blend Web Mix 2021

Avez-vous déjà vécu le fait qu’un petit changement dans le métier déclenche une apocalypse dans le code du logiciel ? Ce genre de symptômes sont souvent le signe que l’architecture du logiciel et le métier de l’entreprise ne sont plus alignés.
Dans cette conférence nous verrons comment permettre aux développeurs d’exprimer les besoins métiers au sein de l’architecture du logiciel afin d’éviter toute une catégorie de problèmes. Problèmes à l’origine d’effets de bords particulièrement dangereux et qui empêchent une politique de refactoring efficace.
Cette présentation des aspects stratégiques de la conception pilotée par le domaine (Domain Driven Design) n’est pas une présentation technique, elle s’adresse ainsi à la fois aux développeurs mais également à l’ensemble des parties prenantes liées à la conception du logiciel.

Beb422437c1dfb5366f197919e41ac50?s=128

Arnaud LEMAIRE
PRO

June 14, 2021
Tweet

Transcript

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

  2. Let’s start a new project !

  3. Sprint Zero

  4. Sprint Zero Angular or React ?

  5. Sprint Zero Java or C# ? Angular or React ?

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

    ? Angular or React ?
  7. Sprint Zero Java or C# ? Spring Boot or Quarkus

    ? Kafka or Redis ? Angular or React ?
  8. Sprint Zero Java or C# ? Spring Boot or Quarkus

    ? Kafka or Redis ? Microservices or Monolith ? Angular or React ?
  9. Sprint Zero Java or C# ? Spring Boot or Quarkus

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

    a K8S Cluster Sprint Zero
  11. Look, at our spring boot application with Kafka deployed on

    a K8S Cluster They know nothing about the project’s business domain Sprint Zero
  12. Look, at our spring boot application with Kafka deployed on

    a K8S Cluster They know nothing about the project’s business domain … Sprint Zero
  13. 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
  14. But not the problem What should we do ?

  15. But not the problem What should we do ? …

  16. 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# ?
  17. solution problem What should we do ? How are we

    going to do it ?
  18. solution problem What should we do ? How are we

    going to do it ? It is an important discussion to have
  19. 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
  20. DDD is all about Alignment What should we do ?

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

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

    How are we going to do it ?
  23. « Donnez un marteau à un enfant, et il trouvera

    que tout a besoin d'être martelé. » – Abraham Kaplan
  24. « On fait passer les besoins de la base de

    donnée avant ceux des utilisateurs ce qui donne des expériences assez pourries » – @WalterStephanie
  25. www.lilobase.me DDD is all about Understanding @lilobase

  26. Domains & Subdomains Business Domain discovery THE software

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

    Customer Care Printing & Supply Chain Retail Store
  28. 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
  29. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

    Customer Care Printing & Supply Chain Retail Store
  30. 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
  31. Domain Mapping Business Domain Classi fi cation Authoring & Publishing

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

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

    Customer Care Printing & Supply Chain Online Retail Store Payment processor Catalogue Invoicing
  34. 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
  35. Supporting Subdomain Generic Subdomain Core (sub)Domain Key differentiator Domains &

    Subdomains Business Domain Classi fi cation
  36. Supporting Subdomain Generic Subdomain Core (sub)Domain Key differentiator Domains &

    Subdomains Business Domain Classi fi cation Critical to the 
 organization’s success
  37. Supporting Subdomain Generic Subdomain Core (sub)Domain Key differentiator Domains &

    Subdomains Business Domain Classi fi cation Essential to the 
 organization’s success Critical to the 
 organization’s success
  38. 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
  39. Domain Mapping Business Domain Classi fi cation Authoring Plateform Publishing

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

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

    Inventory Management Payment Processor Catalogue Invoicing Shipping Order Processing Publishing & Printing Proofreading
  42. 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
  43. Authoring Plateform Domains’ Connexion Reveal Business Relationships Inventory Management Shipping

    Catalogue Invoicing Order Processing Payment Processor Publishing & Printing Proofreading
  44. 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
  45. 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
  46. www.lilobase.me DDD is all about Context @lilobase

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

    Management Shipping Payment Processor Catalogue Invoicing Order Processing Proofreading
  48. 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
  49. Domains & Subdomains Development Strategy Supporting Subdomain Generic Subdomain Core

    (sub)Domain Key differentiator
  50. Domains & Subdomains Development Strategy Supporting Subdomain Generic Subdomain Core

    (sub)Domain In-House development 
 with Your best teams Key differentiator
  51. Domains & Subdomains Development Strategy Supporting Subdomain In-House development with

    
 external support if possible Generic Subdomain Core (sub)Domain In-House development 
 with Your best teams Key differentiator
  52. 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
  53. Domains & Subdomains Development Strategy Supporting Subdomain Generic Subdomain Core

    (sub)Domain Key differentiator
  54. Domains & Subdomains Development Strategy Supporting Subdomain Generic Subdomain Core

    (sub)Domain Custom-made software High Cost & Quality Key differentiator
  55. Domains & Subdomains Development Strategy Supporting Subdomain Customized Off The

    Shelf Software 
 is an option Generic Subdomain Core (sub)Domain Custom-made software High Cost & Quality Key differentiator
  56. 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
  57. 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
  58. 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
  59. From Problem to Solution Business Domain & Architecture alignment Inventory

    E-commerce platform Authoring Authoring Plateforme Publishing Catalogue Publishing Proofreading
  60. From Problem to Solution Business Domain & Architecture alignment Inventory

    E-commerce platform Authoring Authoring Plateforme Publishing Catalogue Publishing Proofreading These are your bounded contexts
  61. Inventory E-commerce platform Authoring Publishing « Team assignments are the

    fi rst draft of the architecture » – Michael Nygard
  62. 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
  63. P Authoring Publishing E-commerce Stripe ShipMonk Shopify Context Mapping Relationship

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

    architectural style ES CQRS CRUD ? Stripe ShipMonk Shopify
  65. Authoring Publishing E-commerce Specific Architecture style You don’t need one

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

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

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

    ShipMonk Authoring Publishing E-commerce Shopify
  69. Domains are not immutable Understanding is a never-ending process Stripe

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

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

    Chapter Chapter
  72. Semantic Boundaries Between BC meaning are different Authoring Publishing Book

    Chapter Chapter What happens if the author revises his book?
  73. 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?
  74. Semantic Boundaries Between BC meaning are different Chapter Author Book

    Reviews Release Catalogue
  75. Semantic Boundaries Between BC meaning are different Chapter This is

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

    Chapter Chapter Book Chapter Chapter
  77. Semantic Boundaries Between BC meaning are different Authoring Publishing Book

    Chapter Chapter Book Chapter Chapter Inside a Bounded Context, 
 Don’t 
 Repeat 
 Yourself
  78. 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
  79. Don’t cross them Between BC meaning are different Authoring Publishing

    Author Reviews Author Book Book Release
  80. Don’t cross them Between BC meaning are different Authoring Publishing

    Author Reviews Author Book Book Release
  81. 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
  82. Don’t cross them Between BC meaning are different Authoring Publishing

    Book Book Release Author Author Reviews
  83. Don’t cross them Between BC meaning are different Authoring Publishing

    Book Book Release Author Author Reviews
  84. Don’t cross them Between BC meaning are different Authoring Publishing

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

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

    Event 
 Bus Book Book Release Author Author Reviews
  87. Same for Events Between BC meaning are different Authoring Publishing

    Event 
 Bus Book Book Release Author Author Reviews
  88. Same for Events Between BC meaning are different Authoring Publishing

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

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

    Statistics
  91. Transactional Boundaries Protect your integrity Authoring Book Chapter Chapter Chapter

    Statistics Inside your bounded Context 
 live 
 Entities
  92. Transactional Boundaries Protect your integrity Authoring Book Chapter Chapter Chapter

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

  94. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    Inside an aggregate, Entities 
 share the same lifecycle
  95. 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
  96. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

  97. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    All interactions are done through the Aggregate Root
  98. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    Who ensures the aggregate integrity All interactions are done through the Aggregate Root
  99. 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
  100. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

  101. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

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

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

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

    Author
  105. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    But don’t put to much in it Author
  106. 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 ?
  107. 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
  108. Transactional Boundaries Protect your integrity Book Chapter Chapter Chapter Statistics

    Author reference Author Id
  109. Designing Boundaries Protect your domain Printing Team Book Chapter Chapter

    Chapter Release API Publishing Team
  110. Designing Boundaries Protect your domain Printing Team We need printing

    margin Book Chapter Chapter Chapter Release API Publishing Team
  111. Designing Boundaries Protect your domain Printing Team We need printing

    margin Book Chapter Chapter Chapter Release Printing margin API Publishing Team
  112. 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 API Publishing Team
  113. 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
  114. 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
  115. 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
  116. Designing Boundaries Protect your domain Publishing Team Printing Team Publishing

    API Book
  117. Designing Boundaries Protect your domain Publishing Team Printing Team Publishing

    API Book Printing API
  118. Designing Boundaries Protect your domain Publishing Team Printing Team Publishing

    API We need printing margin Book Printing API
  119. Designing Boundaries Protect your domain Publishing Team Printing Team Publishing

    API We need printing margin Book Printing margin Printing API
  120. 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 Printing API
  121. 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
  122. 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
  123. www.lilobase.me DDD is all about Behavior @lilobase

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

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

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

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

    $order->setStatus('paid') ; $order->setPaidAmount(120) ; $order->setPaidCurrency('EUR') ; $order->setCustomer($customer);
  128. Data oriented programming It obfuscates your code – Mathias Verraes

    $order->pay() ;
  129. Data oriented programming It obfuscates your code $money = new

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

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

    Money(120, new Currency(‘EUR')) ; $order->pay($customer, $money); – Mathias Verraes $customer->pay($order, $money) ;
  132. 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);
  133. Task Based UI Your customer’s need isn’t to fi ll

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

  135. Users don’t need to fill out forms

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

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

    Domain 
 Expert Dev
  138. A A A Ubiquitous language Stakeholders & Team Alignement Dev

    Domain 
 Expert Dev
  139. A A A Ubiquitous language Stakeholders & Team Alignement Dev

    Domain 
 Expert Dev
  140. A A A Ubiquitous language Stakeholders & Team Alignement Dev

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

    language Stakeholders & Team Alignement Dev Domain 
 Expert Dev
  142. A A A not « just » a glossary Ubiquitous

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

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

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

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

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

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

    Dev
  149. Pair Programing The best way to share a domain understanding

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

    they are Dev Domain 
 Expert Product 
 Owner Customer User
  151. 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
  152. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User Prioritize development & formalize users’ feedback
  153. 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
  154. Know your users They might not be who you think

    they are Dev Domain 
 Expert Product 
 Owner Customer User Too often forgotten
  155. 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 ?
  156. 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
  157. 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
  158. “A loosely coupled software architecture and org structure to match”

    is a key predictor of: — Michael Plöd (@bitboss)
  159. “A loosely coupled software architecture and org structure to match”

    is a key predictor of: • Continuous Delivery Performance — Michael Plöd (@bitboss)
  160. “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 — Michael Plöd (@bitboss)
  161. “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)
  162. www.lilobase.me @lilobase https://roti.express/r/gstywv sundayapp.com