SlideShare une entreprise Scribd logo
DOMAIN DRIVEN DESIGN
ON Y VA EN 2019 !!
Grégory BOISSINOT





Passionate DDD Practitioner
DDD
D
D
D
DOMAIN 

DRIVEN DESIGNApproche de conception logicielle 

pour créer des applications répondant mieux aux besoins des utilisateurs

Focus sur les besoins du métier
DDD
DOMAIN (LA RÉALITÉ)
▸ Une sphère de connaissances et d’activités propres à un
métier
▸ Composée d’un vocabulaire spécialisé, d’un ensemble
de règles, d’hypothèses, de concepts issus du monde
réel
▸ Contient l’ensemble des cas d’usage à résoudre
▸ En interaction avec des experts métiers et des sphères
d’influence
DDD
LA GENÈSE (POUR NOUS TOUS)
▸ Être curieux sur le domaine
▸ Parler le langage métier
▸ Se focaliser sur les parties
les plus importantes du
logiciel
▸ Modeling <==> Code
Premier livre académique
DDD
UN CONTENU RICHE
Des patterns, des principes et des pratiques 

pour faciliter la création d’applications de logique métier complexe
DDD
L’ABOUTISSEMENT D’UNE MATURITÉ DE PRATIQUES
DDD
UN ACCÉLÉRATEUR POUR LES ÉQUIPES PROJETS
DDD
UNE BASE DE CODE SOURCE MAÎTRISÉE
Sans le DDD Avec le DDD
NOTRE MÉTIER
DDD
ON CHERCHE D’ABORD À RÉSOUDRE DES PROBLÈMES MÉTIER
DDD
LE CONTEXTE EST ROI !
▸ Concevoir, c’est prendre 

en compte le contexte
▸ Qui ? Quoi ? Comment ? Où ?
▸ En adéquation avec des contraintes
▸ Organisationnelles
▸ Techniques
▸ Humaines
DDD
ET POURTANT !!
DES CRISES À RÉSOUDRE
PRESSION SUR LA DATE
UN SYSTÈME PARFOIS DIFFICILE À MAINTENIR
DDD
LA MÉCANIQUE “LÉGO-BRIQUE” DU DDD VA NOUS AIDER
DDD
COMMENT DÉMARRER ?
DISTILLATION
DE LA RÉALITÉ
DDD
L’EXTRACTION DE L’ESSENCE MÉTIER - LE PRINCIPE KUVINGS
DDD
L’EXISTANT
“ Ce qu’on sait “
“ Ce qu’on a besoin d’apprendre “
DDD
L’ART DE LA CONNAISSANCE
La connaissance est un prérequis
DDD
LES OBJECTIFS : IDENTIFIER, DÉCOMPOSER, CLASSIFIER
Nous cherchons à identifier les parties les plus importantes
DDD
COMPRÉHENSION DU DOMAINE - ANALYSIS PATTERNS
DDD
COMPRÉHENSION DU DOMAINE - BIAN - MODÈLE STANDARD
Banking Industry Architecture Network (BIAN)
DDD
COMPRÉHENSION - ATELIERS DE COMMUNICATION & PARTAGE
Des échanges autour d’un même domaine métier
DDD
EVENT STORMING
Tout est à propos de conversations autour d’un même langage sans
ambiguïté
DDD
EVENT STORMING - CRÉATION D’UN MODÈLE
DDD
EVENT STORMING - EVENT & COMMAND
On exprime les Event & Command explicitement
DDD
EVENT STORMING - À LA FIN
Des contextes explicites
DDD
EVENT STORMING EN PRATIQUE
▸ Commencer par des
sessions interactives de 2h
▸ Inviter les bonnes personnes
▸ Capitaliser immédiatement
dans un outil collaboratif
DDD
DOMAIN STORY TELLING & USER STORY MAPPING
▸ Souvent utilisé comme
point d’entrée 

de l’atelier de 

l’Event Storming
▸ Permet d’obtenir des
scénarios concrets
▸ Centré sur les cas
d’utilisation les plus
importants
DDD
IMPACT MAPPING
DDD
DOMAINE BANCAIRE - EXEMPLE DE DÉCOMPOSITION
DDD
DOMAINE BANCAIRE - EXEMPLE DE DÉCOMPOSITION
DDD
TECHNIQUES COMPLÉMENTAIRES - L’USAGE D’HEURISTIQUES
▸ Frontières naturelles
▸ Frontières linguistiques
▸ Equipes autonomes
▸ Autonomie des données
▸ etc
DDD
SAVOIR ÉCRIRE LES SPÉCIFICATIONS
MODEL-DRIVEN
DDD
UN MODÈLE : UNE ABSTRACTION DE LA RÉALITÉ PILOTÉ PAR UN CAS D’USAGE
On souhaite construire un modèle qui reflète une intention
DDD
MODÈLE - INTENTION #1
Carte des principaux monuments de Paris
DDD
MODÈLE - INTENTION #2
Carte des moyens de transport de Paris
DDD
UN MODÈLE UTILE ?
Plusieurs cas d’utilisation au sein d’un même modèle
DDD
RESTER PRAGMATIQUE !
ALL MODELS ARE WRONG, SOME ARE USEFULGeorges Box, statisticien
DDD
ON CONTEXTUALISE POUR LEVER LES AMBIGUÏTÉS
Nous fournissons un contexte pour chaque modèle
DDD
INITIALISATION D’UN MODÈLE CLIENT
DDD
UN MODÈLE CLIENT QUI SE COMPLEXIFIE AU FIL DU TEMPS
DDD
UN MODÈLE CLIENT QUI SE COMPLEXIFIE AU FIL DU TEMPS
DDD
SÉPARATION EN DES CONTEXTES SÉPARÉS
Chaque contexte contient un modèle séparé
DDD
CONTEXTUALISATION & RENOMNAGE
Chaque contexte est une frontière linguistique afin d’enlever de l’ambiguïté
DDD
MICROSERVICES
Nous utilisons le DDD pour trouver la granularité des Microservices
DDD
DOMAINE BANCAIRE - LES SERVICES ASSOCIÉS
DDD
UNE APPLICATION : UNE COMPOSITION DE CONTEXTE
DDD
APPLICATION DES MICROSERVICES CHEZ AMAZON
CLEAN ARCHITECTURE
DDD
DES PROPRIÉTÉS COMMUNES
▸ Maintenance dans le temps
▸ Des composants conçus indépendant
du mécanisme de persistance
▸ Isolation des responsabilités
▸ logique métier
▸ infrastructure
▸ orchestration
▸ Facile à tester
DDD
CLEAN ARCHITECTURE - LA LOGIQUE MÉTIER D’ABORD
DDD
CLEAN ARCHITECTURE - LA COMPLEXITÉ ACCIDENTELLE EST RELAYÉE
DDD
CLEAN ARCHITECTURE - SÉPARATION DE LA LOGIQUE D’UTILISATION
DDD
CLEAN ARCHITECTURE - LES CONTROLLERS REST SONT DES CLIENTS
DDD
CLEAN ARCHITECTURE - USECASE / USECASE HANDLER
DDD
CLEAN ARCHITECTURE - CQS (COMMAND QUERY SEPARATION)
Séparation des lectures et des écritures
DDD
CLEAN ARCHITECTURE - CQS
DDD
CLEAN ARCHITECTURE - MISE À PLAT
DDD
SÉPARATION EN PACKAGES
JAVA
DDD
ONION ARCHITECTURE
CODE MODELING
DDD
DOMAIN MODELING - CODE MODELING
DDD
UTILISER DES TERMES DU MÉTIER
ANY FOOL CAN WRITE CODE THAT A COMPUTER CAN UNDERSTAND,

GOOD PROGRAMMERS WRITE CODE THAT HUMANS CAN UNDERSTAND
Matin Fowler
DDD
VS
DOMAIN MODEL DANS LE CODE : QUEL LANGUE ?
Il faut préserver le langage métier du modèle
Évite le coût de traduction !!
DDD
DOCUMENTATION NATURELLE DE LA NATURE DES OBJETS
Annotations fournies par un kernel DDD
JAVA
DDD
DOMAIN - DES OBJETS RICHES AU LIEU DE DAO
JAVA
TERME MÉTIER
OPÉRATION MÉTIER
DDD
DOMAIN - DES OBJETS RICHES AU LIEU DE DAO
JAVA
UN CONTRAT MÉTIER
DDD
DOMAIN - ALIGNEMENT DU CODE ET DU MÉTIER
LOGIQUE MÉTIER RICHE
JAVA
DDD
ON FAVORISE LES BONNES PRATIQUES
IMMUABLE
JAVA
OBJET MÉTIER TYPÉ
ENCAPSULATION
DE L’ÉTAT
PAS DE GETTER / SETTER
DDD
ON FAVORISE LES BONNES PRATIQUES
VALEUR TYPÉE
OPÉRATION MÉTIER
JAVA
DDD
COMMAND HANDLER
LOGIQUE D’ORCHESTRATION

1. CHARGEMENT DE L’ENTITÉ RACINE
2. MODIFICATION EN APPELANT L’OPÉRATION MÉTIER
3. MISE À JOUR DU REPOSITORY
INTENTION MÉTIER
JAVA
MANIPULATION D’UNE
ENTITÉ RACINE
DDD
REST CONTROLLER
JAVA
OBJET D’EXPOSITION
RATTACHÉ AU CAS D’UTILISATION
CRÉATION D’UN OBJET COMMAND 

ET ENVOIE DANS UN BUS DE COMMAND
DTO
DOMAIN DRIVEN 

REFACTORING
DDD
LE DDD INDUIT DES BONNES PRATIQUES POUR RÉSOUDRE DES PROBLÈMES
▸ Magic Number
▸ Duplications
▸ Primitive obsession
▸ Mixed Concerns
▸ Fuzzy Terminology
DDD
LEGACY - TROUVER LES SEAMS
DDD
LA SÉPARATION DES DEUX MONDES
DDD
LEGACY - COHABITATION AVEC LE DDD
Besoin d’une couche ACL (Anticorruption Layer)
DDDD

DISTRIBUTED DOMAIN DRIVEN DESIGN
CQRS
Event Sourcing
Event-Driven
DDD
EVENT-DRIVEN - EMISSION D’ÉVÉNEMENTS SIGNIFICATIFS
PUBLICATION
ÉVÉNEMENT MÉTIER
ACCÈS AU
BUS D’ÉVÉNEMENT
DDD
EVENT-DRIVEN - EMISSION D’ÉVÉNEMENTS SIGNIFICATIFS
PUBLICATION
ÉVÉNEMENT MÉTIER
DDD
CQRS (COMMAND QUERY RESPONSABILITY SEGREGATION)
PROJECTIONS
DDD
EVENT SOURCING
LE DDD, AU NIVEAU
ENTREPRISE
DDD
ATTENTION À LA SUR UTILISATION DU DDD
DDD
CONTEXT MAP
DDD
CONTEXT MAP & AUTONOMY CONTEXT
LE SOCLE
DDD
SOCLE - MÉCANISME DE BUS
Une mécanique de bus apporte une souplesse de connectivité
APPORTE
FLEXIBILITÉ
DDD
SOCLE - COMMAND BUS & QUERY BUS
Capacité de personaliser les intercepteurs en fonction des Command & Query
EN RÉSUMÉ

DDD, LE BON RÉFLEXE
DDD
APPRENDRE LE VOCABULAIRE DDD
DDD
LE DDD, DES BONNES HABITUDES AVANT TOUT !
▸ Être curieux du métier
▸ Multiplier les ateliers avec les personnes du métier
▸ Piloter vos modèles par les cas d’utilisation
▸ Ne pas se précipiter sur des architectures Microservices / CQRS /
Event Sourcing sans une approche DDD

Contenu connexe

PPT
Introduction au Domain Driven Design
PDF
Domain Driven Design
PPTX
Domain Driven Design: Zero to Hero
PPTX
Domain Driven Design (DDD)
PDF
Event Storming and Saga
PPT
Domain Driven Design (DDD)
PPTX
Domain Driven Design
PPTX
Domain Driven Design
Introduction au Domain Driven Design
Domain Driven Design
Domain Driven Design: Zero to Hero
Domain Driven Design (DDD)
Event Storming and Saga
Domain Driven Design (DDD)
Domain Driven Design
Domain Driven Design

Tendances (20)

PPTX
Domain Driven Design(DDD) Presentation
PPTX
Domain Driven Design
PDF
Domain Driven Design
PDF
Domain Driven Design (Ultra) Distilled
PDF
Big Data Modeling
PDF
Microservices architecture
PPTX
Domain driven design
PPSX
Domain Driven Design
PPTX
Domain driven design
PDF
2.2 cycles de vie
PPTX
Domain Driven Design Quickly
PDF
Beyond the Spotify model - Team Topologies - Keynote at JAX DevOps 2019-05-16...
PPTX
Continuous Delivery
PDF
Apache Hadoop YARN
PDF
Deconstructing Monoliths with Domain Driven Design
PPTX
MSA ( Microservices Architecture ) 발표 자료 다운로드
PPTX
Introduction to DDD
PPTX
DDD架構設計
PPSX
Agile, User Stories, Domain Driven Design
PDF
Support cours angular
Domain Driven Design(DDD) Presentation
Domain Driven Design
Domain Driven Design
Domain Driven Design (Ultra) Distilled
Big Data Modeling
Microservices architecture
Domain driven design
Domain Driven Design
Domain driven design
2.2 cycles de vie
Domain Driven Design Quickly
Beyond the Spotify model - Team Topologies - Keynote at JAX DevOps 2019-05-16...
Continuous Delivery
Apache Hadoop YARN
Deconstructing Monoliths with Domain Driven Design
MSA ( Microservices Architecture ) 발표 자료 다운로드
Introduction to DDD
DDD架構設計
Agile, User Stories, Domain Driven Design
Support cours angular
Publicité

Similaire à DDD Introduction (20)

PPTX
Domain_Driven_Design
PPT
Alt.Net France - Domain Driven Design - 2 Dec 2008
PDF
Tech days2015 cedricderue_samirarezki_approche_devops_pour_builder_une_soluti...
PDF
Microsoft TechDays Tour 2015 - Approche DevOps Open Source pour les applicati...
PDF
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
PDF
Migrer vers le cloud grace au Model-Driven
PDF
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
PPTX
MD Day 2009 - Cédric Vidal - 1.0
PPTX
Dynamics NAV 2013 R2, l'ERP Microsoft pour Office 365 dans le Cloud Azure !
PDF
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
PPTX
TechDays 2012 - Windows Azure
PDF
Mockito - Design + tests par Brice Duteil
DOCX
WINDOWS SERVEUR ET ADDS
PPTX
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
PDF
Carnet de Route du Développeur - ENSIMAG 2012
PPTX
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
PDF
BDD (Behavior Driven Development) - Une voie vers l'agilité
PDF
Sw 100 fr docker conteneurisation des applications
PPTX
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
PPTX
Microsoft TechDays 2012 France - BPOS301 La réversibilité des données dans le...
Domain_Driven_Design
Alt.Net France - Domain Driven Design - 2 Dec 2008
Tech days2015 cedricderue_samirarezki_approche_devops_pour_builder_une_soluti...
Microsoft TechDays Tour 2015 - Approche DevOps Open Source pour les applicati...
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
Migrer vers le cloud grace au Model-Driven
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
MD Day 2009 - Cédric Vidal - 1.0
Dynamics NAV 2013 R2, l'ERP Microsoft pour Office 365 dans le Cloud Azure !
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
TechDays 2012 - Windows Azure
Mockito - Design + tests par Brice Duteil
WINDOWS SERVEUR ET ADDS
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Carnet de Route du Développeur - ENSIMAG 2012
Migration vers Active Directory 2012 et 2012 R2 : les meilleures pratiques
BDD (Behavior Driven Development) - Une voie vers l'agilité
Sw 100 fr docker conteneurisation des applications
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Microsoft TechDays 2012 France - BPOS301 La réversibilité des données dans le...
Publicité

Plus de Gregory Boissinot (20)

PDF
Practical Software Architecture DDD
PDF
SOAT Agile Day 2017 DDD
PDF
DevDay2017 ESGI Essential DDD
PDF
Beyond Relational Databases
PDF
Paris Redis Meetup Introduction
PDF
Paris Redis Meetup Starting
PDF
PZ_Microservices101_20150210
PDF
Spring Integration JUG SummerCamp 2013
PDF
gradle_nantesjug
PDF
gradle_lavajug
PDF
Jenkins-meetup
PDF
JENKINS_BreizhJUG_20111003
PDF
JENKINS_OWF11_OSDC_PARIS20110924
PDF
Gradle_Paris2010
PDF
Gradle_LyonJUG
PDF
Gradle_NormandyJUG
PDF
Gradle_BreizJUG
PDF
Gradle_BordeauxJUG
PDF
Gradle_ToulouseJUG
PDF
Jenkins_UserMeetup_Paris_201105
Practical Software Architecture DDD
SOAT Agile Day 2017 DDD
DevDay2017 ESGI Essential DDD
Beyond Relational Databases
Paris Redis Meetup Introduction
Paris Redis Meetup Starting
PZ_Microservices101_20150210
Spring Integration JUG SummerCamp 2013
gradle_nantesjug
gradle_lavajug
Jenkins-meetup
JENKINS_BreizhJUG_20111003
JENKINS_OWF11_OSDC_PARIS20110924
Gradle_Paris2010
Gradle_LyonJUG
Gradle_NormandyJUG
Gradle_BreizJUG
Gradle_BordeauxJUG
Gradle_ToulouseJUG
Jenkins_UserMeetup_Paris_201105

Dernier (16)

PPTX
Logique séquentielle : les fondamentaux
PPTX
FormationFormation e pFormationour HC .pptx
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PDF
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
PDF
Visite de chantier – Projet de Polyclinique à Laghouat
PPTX
mon_expose_de_geophysique_disposotif_de_wener.pptx
PDF
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PDF
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
PDF
TP de La Masse Volumique apparente et absolue
PPTX
Introduction aux Systèmes temps réel.pptx
PDF
TP L’analyse granulométrique par tamisage
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PPTX
UMAPON Cours de traitement des minerais 2.pptx
PPTX
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx
Logique séquentielle : les fondamentaux
FormationFormation e pFormationour HC .pptx
A Recurrent Neural Network (RNN)s a type of artificial neural network
Arouna Toure - Senior Ingénieur Logiciel Et Chef De Produit
Visite de chantier – Projet de Polyclinique à Laghouat
mon_expose_de_geophysique_disposotif_de_wener.pptx
Expansion du Réseau de Gazoducs de Gaz Naturel au Brésil _ Analyse Technique ...
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
FAQ_FORAGE_EAU_SUNRISE_ENGINEERING_GROUP_SARL2025.pdf
TP de La Masse Volumique apparente et absolue
Introduction aux Systèmes temps réel.pptx
TP L’analyse granulométrique par tamisage
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
UMAPON Cours de traitement des minerais 2.pptx
COURS DE PROSPECTION MINIERE UTMSIRI - Copie.pptx

DDD Introduction