SlideShare une entreprise Scribd logo
1  sur  47
Daily DDD
Les pratiques du quotidien qui peuvent changer une équipe
http://www.ouarzy.com
@ouarzy
Emilien Pecoul
Domain Driven Design
520 pages (!)
@ouarzy
Que signifie concevoir un logiciel?
@ouarzy
@ouarzy
Abstraire
De A à Z
Que signifie concevoir un logiciel?
Domain Driven Design
@ouarzy
Domain Driven Design
@ouarzy
Domain Driven Design
@ouarzy
Domain Driven Design
@ouarzy
Le monde du DDD
Anemic Domain ModelUbiquitous Language
Bounded Context
CQS
Domain Services
Event Sourcing
CQRS
Event Storming
Entities
Value Objects
Aggregate
@ouarzy
Le DDD c’est compliqué
Par quel bout on le prend?
#DDDReboot!
@ouarzy
Stratégie VS Tactique
-Domain/SubDomain
-Bounded Context
-Context Maps
-Composite
-Shared Kernel
-Conformist
-Anti Corruption
-…
-Aggregate
-Entities
-Value Objects
-Repositories
-Factories
-Domain Services
-Application Services
-…
Où aller ? Comment y aller ?
@ouarzy
Le DDD c’est compliqué
@ouarzy
Le DDD c’est compliqué
@ouarzy
Le DDD peut me servir ?
@ouarzy
Anti DDD expressions
« C’est juste une base de données »
@ouarzy
Anti DDD expressions
« Ce n’est pas mon problème si les specs sont fausses»
« J’ai codé ce qui était demandé »
@ouarzy
Anti DDD expressions
« Ils ne savent pas ce qu’ils veulent ! »
@ouarzy
Anti DDD expressions
« On ne peut pas avancer tant que l’équipe X n’a pas terminée »
« Il faut une équipe Backend et une équipe Frontend !»
@ouarzy
DDD et micro-services
« Mais on fait déjà des micro-services ! »
@ouarzy
DDD et micro-services
@ouarzy
Prenons des exemples
au quotidien
@ouarzy
Bounded Context
Vente Support Envoi Recommandation
@ouarzy
Bounded Context
@ouarzy
Bounded Context
@ouarzy
Créer un modèle c’est abstraire la réalité.
Cette abstraction ne peut être valable que dans un
contexte bien borné!
Bounded Context
@ouarzy
N’ayez pas peur de dupliquer la donnée pour créer une
abstraction clair par contexte.
Merci
@ouarzy
Comment on trouve les contextes?
@ouarzy
Interview d’ExpertEvent Storming
Analyser les dépendances
Impact Mapping
Ne pas jouer au téléphone arabe !
« C’est ce que comprend (ou pas) le développeur qui ira en production, 
pas votre compréhension du métier... » 
@ouarzy
Comment on trouve les contextes?
Chef de projet
Expert métier
Problème
Expert métier
Développeuse
Testeur
@ouarzy
Résoudre les problèmes ensemble
Résoudre les problèmes ensemble
Rencontrer les utilisateurs!
@ouarzy
Résoudre les problèmes ensemble
Pair/Mob Programming Code Review
@ouarzy
Aligner le code et le métier
Ubiquitous Language
- 2 mots identiques doivent avoir le même sens métier
- 2 mots différents ne doivent pas désigner un même concept
@ouarzy
Domain Infrastructure
- Bases de Données (ORM)
- Controller web
- Vues
-API Distantes
- Logique métier
- Ubiquitous Language
Aligner le code et le métier
@ouarzy
Aligner le code et le métier
Architecture hexagonale
@ouarzy
Aligner le code et le métier
Montrez votre code aux experts métier…
…Ils ne comprennent pas?
Vous êtes le problème.
@ouarzy
Documentation vivante
Aligner le code et le métier
@ouarzy
Changelog à partir des commits
Aligner le code et le métier
@ouarzy
Tester, car le métier va évoluer...
Automatiquement, car vous n’aurez jamais le temps...
Un code simple à modifier
No time for testing death spiral
Pressure
TestingErrors + -
+
+-
-
@ouarzy
Des bonnes pratiques pour un Feedback rapide
Un code simple à modifier
@ouarzy
Du code lisible
Un code simple à modifier
Trop de personnes supposent qu’un problème majeur de l’industrie logiciel
est d’écrire du code,
alors qu’il se trouve dans la lecture du code
await Task.WhenAll(t1, t2, t3, t4);
@ouarzy
Le DDD c’est surtout des bonnes habitudes au quotidien…
Bref 1/3
…Pour toute l’entreprise!
@ouarzy
Et le respect de l’expertise de chacun
Bref 2/3
@ouarzy
Dans un contexte bien défini
Bref 3/3
@ouarzy
References
https://leanpub.com/livingdocumentationLiving Documentation
Event Storming
@cyriux
https://leanpub.com/introducing_eventstorming
@ziobrando
Domain Driven Design:Tackling Complexity In The
Heart of Software@ericevans0
@ScottMillett
Patterns, Principles and Practices of DDD
References
Hexagonal Architecture
#DDDReboot
@TotherAlistair
@tpierrain et jgrodziski
Impact Mapping
@gojkoadzic
Domain Modeling Made Functional
@ScottWlaschin
http://www.ouarzy.com
Merci !
@ouarzy
Emilien Pecoul

Contenu connexe

Similaire à Daily ddd

DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?Ludovic Piot
 
SPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsSPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsMicrosoft
 
Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010François Wauquier
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Recruter et travailler avec un développeur
Recruter et travailler avec un développeurRecruter et travailler avec un développeur
Recruter et travailler avec un développeurCamille Roux
 
La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code OCTO Technology
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & opsQuentin Adam
 
Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Alexandre Morgaut
 
SRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdfSRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdfHenri Gomez
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)Neo4j
 
Qui ne voudrait pas gagner 1 million avec Drupal ?
Qui ne voudrait pas gagner 1 million avec Drupal ?Qui ne voudrait pas gagner 1 million avec Drupal ?
Qui ne voudrait pas gagner 1 million avec Drupal ?golchi
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Technology
 
Jabes 2019 - Session parallèle "La grande aventure Autorites : tout est supe...
Jabes 2019 - Session parallèle "La grande  aventure Autorites : tout est supe...Jabes 2019 - Session parallèle "La grande  aventure Autorites : tout est supe...
Jabes 2019 - Session parallèle "La grande aventure Autorites : tout est supe...ABES
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)Cyrille Martraire
 
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Microsoft Technet France
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineDenis Voituron
 

Similaire à Daily ddd (20)

DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?
 
SPA avec SignalR et Angular Js
SPA avec SignalR et Angular JsSPA avec SignalR et Angular Js
SPA avec SignalR et Angular Js
 
Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
NodeJs in real life
NodeJs in real lifeNodeJs in real life
NodeJs in real life
 
Recruter et travailler avec un développeur
Recruter et travailler avec un développeurRecruter et travailler avec un développeur
Recruter et travailler avec un développeur
 
DDD FOR POs.pdf
DDD FOR POs.pdfDDD FOR POs.pdf
DDD FOR POs.pdf
 
La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & ops
 
Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012
 
SRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdfSRE - Mythes et Réalités - Volcamp 2023.pdf
SRE - Mythes et Réalités - Volcamp 2023.pdf
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)
 
Qui ne voudrait pas gagner 1 million avec Drupal ?
Qui ne voudrait pas gagner 1 million avec Drupal ?Qui ne voudrait pas gagner 1 million avec Drupal ?
Qui ne voudrait pas gagner 1 million avec Drupal ?
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeurs
 
Jabes 2019 - Session parallèle "La grande aventure Autorites : tout est supe...
Jabes 2019 - Session parallèle "La grande  aventure Autorites : tout est supe...Jabes 2019 - Session parallèle "La grande  aventure Autorites : tout est supe...
Jabes 2019 - Session parallèle "La grande aventure Autorites : tout est supe...
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
 
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
Retour d’expérience sur ‘TFS Online’ (VSTS) dans une solution industrielle (c...
 
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS OnlineMicrosoft Experieces 2016 - Retour d’expériences sur TFS Online
Microsoft Experieces 2016 - Retour d’expériences sur TFS Online
 

Plus de Emilien Pecoul

Lancer sa carrière en Freelance
Lancer sa carrière en FreelanceLancer sa carrière en Freelance
Lancer sa carrière en FreelanceEmilien Pecoul
 
Consultant: la vie de freelance est elle faite pour moi ?
Consultant: la vie de freelance est elle faite pour moi ?Consultant: la vie de freelance est elle faite pour moi ?
Consultant: la vie de freelance est elle faite pour moi ?Emilien Pecoul
 
Event Modeling by Example
Event Modeling by ExampleEvent Modeling by Example
Event Modeling by ExampleEmilien Pecoul
 
The software evolution hasn't happened yet
The software evolution hasn't happened yetThe software evolution hasn't happened yet
The software evolution hasn't happened yetEmilien Pecoul
 
Université EventSourcing CQRS Devoxx fr 2017
Université EventSourcing CQRS Devoxx fr 2017Université EventSourcing CQRS Devoxx fr 2017
Université EventSourcing CQRS Devoxx fr 2017Emilien Pecoul
 
Pourquoi les evenements sont importants
Pourquoi les evenements sont importantsPourquoi les evenements sont importants
Pourquoi les evenements sont importantsEmilien Pecoul
 

Plus de Emilien Pecoul (12)

Lancer sa carrière en Freelance
Lancer sa carrière en FreelanceLancer sa carrière en Freelance
Lancer sa carrière en Freelance
 
Consultant: la vie de freelance est elle faite pour moi ?
Consultant: la vie de freelance est elle faite pour moi ?Consultant: la vie de freelance est elle faite pour moi ?
Consultant: la vie de freelance est elle faite pour moi ?
 
Event Modeling by Example
Event Modeling by ExampleEvent Modeling by Example
Event Modeling by Example
 
Developer entropy
Developer entropyDeveloper entropy
Developer entropy
 
The software evolution hasn't happened yet
The software evolution hasn't happened yetThe software evolution hasn't happened yet
The software evolution hasn't happened yet
 
Université EventSourcing CQRS Devoxx fr 2017
Université EventSourcing CQRS Devoxx fr 2017Université EventSourcing CQRS Devoxx fr 2017
Université EventSourcing CQRS Devoxx fr 2017
 
Event storming
Event stormingEvent storming
Event storming
 
Pourquoi les evenements sont importants
Pourquoi les evenements sont importantsPourquoi les evenements sont importants
Pourquoi les evenements sont importants
 
Code retreat
Code retreatCode retreat
Code retreat
 
Bref
BrefBref
Bref
 
Mocks vs stubs
Mocks vs stubsMocks vs stubs
Mocks vs stubs
 
Mieux secomprendrebdd
Mieux secomprendrebddMieux secomprendrebdd
Mieux secomprendrebdd
 

Daily ddd