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.

Arnaud LEMAIRE

June 14, 2021
Tweet

More Decks by Arnaud LEMAIRE

Other Decks in Programming

Transcript

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

    View full-size slide

  2. Let’s start a new project !

    View full-size slide

  3. Sprint Zero
    Angular
    or React ?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  12. 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

    View full-size slide

  13. But not the problem
    What should we do ?

    View full-size slide

  14. But not the problem
    What should we do ?

    View full-size slide

  15. 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# ?

    View full-size slide

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

    View full-size slide

  17. solution
    problem
    What should we do ?
    How are we going to do it ?
    It is an important discussion to have

    View full-size slide

  18. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. « Donnez un marteau à un enfant, et il
    trouvera que tout a besoin d'être
    martelé. »
    – Abraham Kaplan

    View full-size slide

  23. « On fait passer les
    besoins de la base
    de donnée avant
    ceux des utilisateurs
    ce qui donne des
    expériences assez
    pourries »
    – @WalterStephanie

    View full-size slide

  24. www.lilobase.me
    DDD is all about
    Understanding
    @lilobase

    View full-size slide

  25. Domains & Subdomains
    Business Domain discovery
    THE software

    View full-size slide

  26. Domain Mapping
    Business Domain Classi
    fi
    cation
    Authoring


    &


    Publishing
    Customer Care
    Printing &


    Supply Chain
    Retail Store

    View full-size slide

  27. 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

    View full-size slide

  28. Domain Mapping
    Business Domain Classi
    fi
    cation
    Authoring


    &


    Publishing
    Customer Care
    Printing &


    Supply Chain
    Retail Store

    View full-size slide

  29. 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

    View full-size slide

  30. Domain Mapping
    Business Domain Classi
    fi
    cation
    Authoring


    &


    Publishing
    Customer Care
    Printing &


    Supply Chain
    Retail Store
    These are neither Bounded
    Contexts nor Microservices

    View full-size slide

  31. Domain Mapping
    Business Domain Classi
    fi
    cation
    Authoring


    &


    Publishing
    Customer Care
    Printing &


    Supply Chain
    Retail Store
    These are your domains

    View full-size slide

  32. Domain Mapping
    Business Domain Classi
    fi
    cation
    Authoring


    &


    Publishing
    Customer
    Care
    Printing &


    Supply Chain
    Online Retail Store
    Payment
    processor
    Catalogue Invoicing

    View full-size slide

  33. 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

    View full-size slide

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

    View full-size slide

  35. Supporting
    Subdomain
    Generic
    Subdomain
    Core
    (sub)Domain
    Key differentiator
    Domains & Subdomains
    Business Domain Classi
    fi
    cation
    Critical to the

    organization’s success

    View full-size slide

  36. 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

    View full-size slide

  37. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  41. 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

    View full-size slide

  42. Authoring
    Plateform
    Domains’ Connexion
    Reveal Business Relationships
    Inventory
    Management
    Shipping
    Catalogue
    Invoicing
    Order
    Processing
    Payment
    Processor
    Publishing &
    Printing
    Proofreading

    View full-size slide

  43. 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

    View full-size slide

  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

    View full-size slide

  45. www.lilobase.me
    DDD is all about
    Context
    @lilobase

    View full-size slide

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

    View full-size slide

  47. 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

    View full-size slide

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

    View full-size slide

  49. Domains & Subdomains
    Development Strategy
    Supporting
    Subdomain
    Generic
    Subdomain
    Core
    (sub)Domain
    In-House development

    with Your best teams
    Key differentiator

    View full-size slide

  50. 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

    View full-size slide

  51. 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

    View full-size slide

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

    View full-size slide

  53. Domains & Subdomains
    Development Strategy
    Supporting
    Subdomain
    Generic
    Subdomain
    Core
    (sub)Domain
    Custom-made software


    High Cost & Quality
    Key differentiator

    View full-size slide

  54. 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

    View full-size slide

  55. 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

    View full-size slide

  56. 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

    View full-size slide

  57. 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

    View full-size slide

  58. From Problem to Solution
    Business Domain & Architecture alignment
    Inventory E-commerce


    platform
    Authoring
    Authoring
    Plateforme Publishing
    Catalogue
    Publishing
    Proofreading

    View full-size slide

  59. From Problem to Solution
    Business Domain & Architecture alignment
    Inventory E-commerce


    platform
    Authoring
    Authoring
    Plateforme Publishing
    Catalogue
    Publishing
    Proofreading
    These are your bounded contexts

    View full-size slide

  60. Inventory E-commerce


    platform
    Authoring
    Publishing
    « Team assignments are the
    fi
    rst
    draft of the architecture »
    – Michael Nygard

    View full-size slide

  61. 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

    View full-size slide

  62. P
    Authoring
    Publishing
    E-commerce
    Stripe
    ShipMonk Shopify
    Context Mapping
    Relationship Hierarchy
    OHS
    OHS
    ACL
    OHS
    C/S

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  69. www.lilobase.me
    DDD is all about
    Boundaries
    @lilobase

    View full-size slide

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

    View full-size slide

  71. Semantic Boundaries
    Between BC meaning are different
    Authoring Publishing
    Book
    Chapter
    Chapter
    What
    happens if
    the author
    revises his
    book?

    View full-size slide

  72. 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?

    View full-size slide

  73. Semantic Boundaries
    Between BC meaning are different
    Chapter Author
    Book
    Reviews
    Release
    Catalogue

    View full-size slide

  74. Semantic Boundaries
    Between BC meaning are different
    Chapter
    This is why you must start by understand
    strategically your domain
    Author
    Book
    Reviews
    Release
    Catalogue

    View full-size slide

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

    View full-size slide

  76. Semantic Boundaries
    Between BC meaning are different
    Authoring Publishing
    Book
    Chapter
    Chapter
    Book
    Chapter
    Chapter
    Inside a
    Bounded
    Context,

    Don’t

    Repeat

    Yourself

    View full-size slide

  77. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  80. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  85. Same for Events
    Between BC meaning are different
    Authoring Publishing
    Event

    Bus
    Book Book
    Release
    Author
    Author
    Reviews

    View full-size slide

  86. Same for Events
    Between BC meaning are different
    Authoring Publishing
    Event

    Bus
    Book Book
    Release
    Author
    Author
    Reviews

    View full-size slide

  87. Same for Events
    Between BC meaning are different
    Authoring Publishing
    This is exactly the same
    Event

    Bus
    Book Book
    Release
    Author
    Author
    Reviews

    View full-size slide

  88. Same for Events
    Between BC meaning are different
    Authoring Publishing
    Event

    Bus
    Book Book
    Release
    Author
    Author
    Reviews
    Translator Translator

    View full-size slide

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

    View full-size slide

  90. Transactional Boundaries
    Protect your integrity
    Authoring
    Book
    Chapter
    Chapter
    Chapter
    Statistics
    Inside your
    bounded
    Context

    live

    Entities

    View full-size slide

  91. Transactional Boundaries
    Protect your integrity
    Authoring
    Book
    Chapter
    Chapter
    Chapter
    Statistics
    Inside your
    bounded
    Context

    live

    Entities
    They are
    grouped in
    Aggregates

    View full-size slide

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

    View full-size slide

  93. Transactional Boundaries
    Protect your integrity
    Book
    Chapter
    Chapter
    Chapter
    Statistics
    Inside an
    aggregate,
    Entities

    share the
    same
    lifecycle

    View full-size slide

  94. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  97. Transactional Boundaries
    Protect your integrity
    Book
    Chapter
    Chapter
    Chapter
    Statistics
    Who
    ensures the
    aggregate
    integrity
    All
    interactions
    are done
    through the
    Aggregate
    Root

    View full-size slide

  98. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  104. Transactional Boundaries
    Protect your integrity
    Book
    Chapter
    Chapter
    Chapter
    Statistics
    But don’t
    put to much
    in it
    Author

    View full-size slide

  105. 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 ?

    View full-size slide

  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 ?
    They must share the same lifecycle

    View full-size slide

  107. Transactional Boundaries
    Protect your integrity
    Book
    Chapter
    Chapter
    Chapter
    Statistics
    Author
    reference
    Author
    Id

    View full-size slide

  108. Designing Boundaries
    Protect your domain
    Printing Team
    Book
    Chapter
    Chapter
    Chapter
    Release
    API
    Publishing Team

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  111. 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

    View full-size slide

  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
    Colorimetric
    pro
    fi
    le
    API
    Publishing Team

    View full-size slide

  113. 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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  119. 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

    View full-size slide

  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
    Colorimetric
    pro
    fi
    le
    Printing API

    View full-size slide

  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
    We discovered the need

    for an ACL

    View full-size slide

  122. www.lilobase.me
    DDD is all about
    Behavior
    @lilobase

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  126. Data oriented programming
    It obfuscates your code
    – Mathias Verraes
    $order->setStatus('paid')
    ;

    $order->setPaidAmount(120)
    ;

    $order->setPaidCurrency('EUR')
    ;

    $order->setCustomer($customer);

    View full-size slide

  127. Data oriented programming
    It obfuscates your code
    – Mathias Verraes
    $order->pay()
    ;

    View full-size slide

  128. Data oriented programming
    It obfuscates your code
    $money = new Money(120, new Currency(‘EUR'))
    ;

    $order->setPaidMoney($money);
    – Mathias Verraes
    $order->pay()
    ;

    View full-size slide

  129. Data oriented programming
    It obfuscates your code
    $money = new Money(120, new Currency(‘EUR'))
    ;

    $order->pay($customer, $money);
    – Mathias Verraes

    View full-size slide

  130. Data oriented programming
    It obfuscates your code
    $money = new Money(120, new Currency(‘EUR'))
    ;

    $order->pay($customer, $money);
    – Mathias Verraes
    $customer->pay($order, $money)
    ;

    View full-size slide

  131. 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);

    View full-size slide

  132. Task Based UI
    Your customer’s need isn’t to
    fi
    ll out forms

    View full-size slide

  133. Users don’t need to fill out forms

    View full-size slide

  134. Users don’t need to fill out forms

    View full-size slide

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

    View full-size slide

  136. A A
    A
    Ubiquitous language
    Stakeholders & Team Alignement
    Dev Domain

    Expert
    Dev

    View full-size slide

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

    Expert
    Dev

    View full-size slide

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

    Expert
    Dev

    View full-size slide

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

    Expert
    Dev

    View full-size slide

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

    Expert
    Dev

    View full-size slide

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

    Expert
    Dev

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  146. Ubiquitous language
    Each BC has its own
    Authoring Publishing
    A A
    A A
    It is a common cause of
    miscommunication

    View full-size slide

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

    View full-size slide

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

    Expert

    View full-size slide

  149. Know your users
    They might not be who you think they are
    Dev Domain

    Expert
    Product

    Owner
    Customer User

    View full-size slide

  150. 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

    View full-size slide

  151. Know your users
    They might not be who you think they are
    Dev Domain

    Expert
    Product

    Owner
    Customer User
    Prioritize development &
    formalize users’ feedback

    View full-size slide

  152. 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

    View full-size slide

  153. Know your users
    They might not be who you think they are
    Dev Domain

    Expert
    Product

    Owner
    Customer User
    Too often forgotten

    View full-size slide

  154. 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 ?

    View full-size slide

  155. 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

    View full-size slide

  156. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  159. “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)

    View full-size slide

  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
    This is what DDD is All About !
    — Michael Plöd (@bitboss)

    View full-size slide

  161. www.lilobase.me @lilobase
    https://roti.express/r/gstywv
    sundayapp.com

    View full-size slide