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

Domain Driven Design

Domain Driven Design

FR - une rapide présentation sur le domain driven design.

Romain TOUZE

July 25, 2017
Tweet

More Decks by Romain TOUZE

Other Decks in Technology

Transcript

  1. DOMAIN DRIVEN DESIGN
    AKA DDD
    Romain TOUZÉ

    View full-size slide

  2. ORIGINES
    Eric Evans

    View full-size slide

  3. POURQUOI ?
    Modèle anémique
    Applications centrées sur la base de données
    Structurations techniques
    Sous utilisation de la POO (primitive obsession)

    View full-size slide

  4. CONTROLLER, BEAN, SERVICE, IMPL…

    View full-size slide

  5. QUE FAIT MON OBJET ?

    View full-size slide

  6. UBIQUITUOUS LANGUAGE
    dans les CR de workshop…
    dans les specs
    dans les tests
    dans le code

    View full-size slide

  7. ALLER VOIR LES MÉTIERS
    Dé nir les contextes délimités (bounded contexts) qui
    vont constituer l'application
    Acquérir le vocabulaire
    Challenger le métier
    BDD

    View full-size slide

  8. BOUNDED CONTEXTS ?

    View full-size slide

  9. BOUNDED CONTEXTS ?
    Utilisation d'un progiciel…
    Équipes différentes…

    View full-size slide

  10. PROPOSITION D'IMPLÉMENTATION

    View full-size slide

  11. DÉCOUPLER L'INFRASTRUCTURE DU CODE MÉTIER

    View full-size slide

  12. ARCHITECTURE HEXAGONALE

    View full-size slide

  13. ANTICORRUPTION LAYER

    View full-size slide

  14. ENTITÉS
    Représente les éléments du domaine ayant un cycle de
    vie et un identi ant dans le SI.
    Objets muables

    View full-size slide

  15. VALEURS (VALUE OBJECTS)
    Représente une donnée associée aux entités
    Objet immuables
    Évite l'obsession des primitives (primitive obsession)

    View full-size slide

  16. EXEMPLE : UN MONTANT
    Integer ? Float ?
    OK, mais si je dois gérer plusieurs devises ?
    OK, mais si je dois faire de l'arithmétique en gérant
    plusieurs devises ?

    View full-size slide

  17. AGRÉGATS
    Arborescence d'entités et de valeurs
    Les opérations se font sur la racine uniquement

    View full-size slide

  18. EN GÉNÉRAL
    Les actions qui ne peuvent pas être portées par les
    objets eux-mêmes

    View full-size slide

  19. REPOSITORY
    Récupération et stockage dans la couche de
    persistance

    View full-size slide

  20. FACTORY
    Traduction des informations envoyées au système

    View full-size slide

  21. LIMITATIONS
    Scalabilité ?
    Contextualisation lecture / écriture ?

    View full-size slide

  22. SCALABILITÉ

    View full-size slide

  23. CQRS
    Command Query Responsibility Segregation

    View full-size slide

  24. EVENT SOURCING

    View full-size slide

  25. RÉFÉRENCE
    DDD Community
    CQRS, event sourcing, task based UI
    Hexagonal architecture

    View full-size slide

  26. C'EST TOUT POUR MOI !

    View full-size slide