Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Domain Driven Design
Search
Romain TOUZE
July 25, 2017
Technology
0
76
Domain Driven Design
FR - une rapide présentation sur le domain driven design.
Romain TOUZE
July 25, 2017
Tweet
Share
More Decks by Romain TOUZE
See All by Romain TOUZE
Python the good parts
rtouze
0
130
Au secours ! On n'a pas de projet en Python dans ma boite !
rtouze
0
100
Un editeur de texte pourquoi pas Vim (reprise)
rtouze
0
200
Un éditeur de texte ? Pourquoi pas Vim ?
rtouze
0
440
Other Decks in Technology
See All in Technology
技術的負債を「戦略的投資」にするためのPdMとエンジニアの連携と実践
satomino
2
290
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
1
520
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
170
チェックツールを導入したけど使ってもらえなかった話 #GAADjp
lycorptech_jp
PRO
0
130
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2025年版)
infiniteloop_inc
14
47k
AWS_MCP_Servers入門.pdf
naotoiso
0
180
ホワイトボックス& SONiC アーキテクチャ(全体像) - SONiC Workshop Japan 2025
ebiken
PRO
1
370
RubyKaigi NOC 近況 2025
sorah
3
1.2k
encoding/json v2を予習しよう!
yuyu_hf
PRO
1
220
Lakehouse в Лемана Тех. От архитектуры до оптимизации
emeremyanina1234
0
330
Tailwind CSS の小話「コンテナークエリーって便利」
yamaday
0
150
インラインRBSコメントに鯛pe checkersもニッコリ
sansantech
PRO
1
190
Featured
See All Featured
A better future with KSS
kneath
239
17k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Building Applications with DynamoDB
mza
94
6.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Rails Girls Zürich Keynote
gr2m
94
13k
Designing for Performance
lara
608
69k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
179
53k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Transcript
DOMAIN DRIVEN DESIGN AKA DDD Romain TOUZÉ
ORIGINES Eric Evans
None
POURQUOI ? Modèle anémique Applications centrées sur la base de
données Structurations techniques Sous utilisation de la POO (primitive obsession)
CONTROLLER, BEAN, SERVICE, IMPL…
QUE FAIT MON OBJET ?
None
None
LA BASE
UBIQUITUOUS LANGUAGE dans les CR de workshop… dans les specs
dans les tests dans le code
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
BOUNDED CONTEXTS ?
BOUNDED CONTEXTS ? Utilisation d'un progiciel… Équipes différentes…
PROPOSITION D'IMPLÉMENTATION
DÉCOUPLER L'INFRASTRUCTURE DU CODE MÉTIER
ARCHITECTURE HEXAGONALE
ANTICORRUPTION LAYER
OBJETS
ENTITÉS Représente les éléments du domaine ayant un cycle de
vie et un identi ant dans le SI. Objets muables
VALEURS (VALUE OBJECTS) Représente une donnée associée aux entités Objet
immuables Évite l'obsession des primitives (primitive obsession)
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 ?
AGRÉGATS Arborescence d'entités et de valeurs Les opérations se font
sur la racine uniquement
SERVICES
EN GÉNÉRAL Les actions qui ne peuvent pas être portées
par les objets eux-mêmes
REPOSITORY Récupération et stockage dans la couche de persistance
FACTORY Traduction des informations envoyées au système
RAPPEL
AUJOURD'HUI
LIMITATIONS Scalabilité ? Contextualisation lecture / écriture ?
SCALABILITÉ
CQRS Command Query Responsibility Segregation
CQRS
CQRS
CQRS
EVENT SOURCING
RÉFÉRENCE DDD Community CQRS, event sourcing, task based UI Hexagonal
architecture
C'EST TOUT POUR MOI !