SlideShare une entreprise Scribd logo
1  sur  208
Télécharger pour lire hors ligne
Prague, 18-19 October 2018
Domain-Driven Design
Beyond the infamous
repository pattern
Cyrille Martraire
@cyriux
Once upon a time
2001
DAO
With DTO
And DAO Factory!
But now we got better…
8
2003
DAO
Repository
DAO
Generic Repository
DDD
NOT!
So what is DDD?
Passionate
developer
PARIS
Since 1999
@cyriux
Cyrille Martraire
Paris Software Crafters
Community
http://www.meetup.com/paris-software-craftsmanship/
TDD
BDD
DDD
Legacy
DDD?
h#p://www.virtual-genius.com/blog/post/Domain-Driven-Design-Immersion-Course-e28093-Part-5.aspx
Seniors	Developers
h#p://www.thisisio.ie/blog/arDcle/149/hiring_senior_developer
OFTENMISTAKEN
No Tool Needed
CQRS: most popular
WELL-respected
@yanaga
@zpapierski
@@mtnygard
My DDD Map
29
Modeling == Code
Strategic Design
Bounded Context
Context Mapping
CQRS / EC
large-scale structures
Tactical Design
Value Object
Entities
Repository
Aggregate
(patterns)
Domain Events
Focus on Core Domain
Ubiquitous Language
(BDD)
Hexagonal Architecture
FP + OO style
Immutable
Side-Effect-Free
Patterns
Monoids
Bubble Context & Legacy
Emerging Design
DDD Map
30
Modeling == Code
Strategic Design
Bounded Context
Context Mapping
CQRS / EC
large-scale structures
Tactical Design
Value Object
Entities
Repository
Aggregate
(patterns)
Domain Events
Focus on Core Domain
Ubiquitous Language
(BDD)
Hexagonal Architecture
FP + OO style
Immutable
Side-Effect-Free
Patterns
Monoids
Bubble Context & Legacy
Emerging Design
DDD Essentials
Curious about the domain
Talking the Domain Language
Focus on Core Domain
Modeling == Code
Strategic Design
(+ techniques to achieve that)
31
Example
PLZ!
Domain Experts!
Please add a
discount code to the
purchase!
You mean the
shopping cart?
Yes, this is what I
meant
(of course)
Ok, so let’s add a
voucher field to the
class ”BasketModel”
Purchase
Shopping Cart
BasketModel
39
problem
Systematic
Translation
(waste of time + confusion as-a-service)
solution
Ubiquitous
Language
talk the domain language
Ubiquitous Language
• Naming
•Searchable
•Easy to pronounce
•No abbreviation
• Definitions
•Shared definition
•Understand, not just a vocabulary
h#p://www.visualdicDonaryonline.com/house/structure-house/stairs.php
Everyone
talking the
Domain Language
44
Everyone
talking the
Domain Language
Everywhere
45
Everyone
talking the
Domain Language
Everywhere
(even in the code)
46
90%
Business
Domain
Language
here
Extract a word cloud
from your code BAD
Extract a word cloud
from your code Better
null
DDD style of code?
• No technical pollu5on	
• Spring,	Hibernate,	logger	
• javax.*	
• SQL
[Object Calisthenics]
1. Wrap all primitives and strings
2. Use only one dot per line
3. Don’t abbreviate
4. Keep all classes small
5. Don’t use any classes with more
than two instance variables
6. Use first-class collections
7. Don’t use any getters/setters/
properties
Ubiquitous Language
everywhere
52
So you mean
DDD is primarily just
talking business
domain?
53
Ubiquitous Language
everywhere
55
https://leanpub.com/livingdocumentation
BUY MY BOOK!
When to apply DDD?
57
WeWant:
WeWant:
Anapptodetect
paymentfrauds
Rich business domain
60
Risk is in the domain
Apply DDD!
61
WeWant:
Afeaturetobeatour
competition
Differentiating business
domain
63
Value is in the domain
Apply DDD!
64
WeWant:
AnotherTODOlistapp
Go CRUD!
66
Focus on the
Core Domain
67
Differentiating to
the business?
Apply DDD!
69
Not differentiating?
BUY
Domain
Curiosity
72
I only care about
Kubernetes
Hey!
Finance
is cool!
Oh, this
domain is
really cool!
Oh, this
domain is
really cool!
I’d like to
know it
better!
Start with
Examples
79
Scenarios
Intent
Scenarios
Concrete examples
BDD: probably your best
friend to start DDD
Domain
Language
(you can be dogmatic on that)
Modeling == Code
85
Example
PLZ!
*NOT* UML!
h#p://depinfo.u-cergy.fr/projets/close2u/fr/tag/uml/
Kitten kitty = new Kitten(Attitude.ROCK_STAR);
Microphone mike = new Microphone();
kitty.sing(mike);
system.out.println(mike.playBack());
//”mew mew meeew”
Good modeling?
91
Learn the business domain
by reading the code
92
Learn the business domain
by reading the code
93
and running the code
Domain
Modeling
(invest where it matters)
HOW?
Domain modeling toolbox
(not the important stuff)
96
Tactical Patterns
97
3 kinds of classes:
Value Objects
Entities
Services
98
Equality by value
Value Object
« DayShi= by -2
WORKING days »
No geGer/seGer
Immutable
Value Object
Behavior!
Perfect Value Objects:
Java Enums
Scala Case Classes
Arbitrary	IdenDty	
NoDon	of	conDnuity	
over	Dme
Entities
Not	a	value	
Not	an	enDty	
”Giving the illusion of an
in-memory collec6on”
Domain Services
h#p://www.andeka.co.cc/2011/07/postbox-251.html
Repository
h#p://www.andeka.co.cc/2011/07/postbox-251.html
Interface
DAO
Repository
h#p://www.andeka.co.cc/2011/07/postbox-251.html
Catalog
ItemListDAO
Repository
h#p://www.andeka.co.cc/2011/07/postbox-251.html
Catalog
ItemListDAO
Domain Language
Implementation
Language
Persistence Ignorance
•You	can	oYen	defer	decisions	about	
persistence		
•Your	domain	must not care
Repository
Strategic Design
112
Strategic
Design(usefull all the time)
Bounded Contexts
Explicitly define the context within which a model
applies. Explicitly set boundaries in terms of team
organization, usage within specific parts of the
application, and physical manifestations such as code
bases and database schemas. Keep the model strictly
consistent within these bounds, but don’t be distracted
or confused by issues outside.
Bounded Contexts
Explicitly define the context within which a model
applies. Explicitly set boundaries in terms of team
organization, usage within specific parts of the
application, and physical manifestations such as code
bases and database schemas. Keep the model strictly
consistent within these bounds, but don’t be distracted
or confused by issues outside.
Example
PLZ!
Please add a new
discount mode
Where do I add that?
I know: I’ll add
the code in the
MainController
class!
MainController
28 fields here
…
245 methods here
…
6422 lines
problem
Code Gravity
big stuff attracts even more stuff and gets bigger
@carlopescio
solution
Domain
Boundariesbusiness domain as code modules, literally
Payment
…
Discounting
…
Add the
feature
only here
Refactor based on your
domain understanding
124
Domain-Driven
Refactoring
125
We want IT
alignment blabla…
We want IT
alignment blabla…
I know how to do
that!
Once you know DDD…
Functional Area
|
Code Module
130
1-to-1
Pre-NegotiationListing)
B2BOrdering
Fraud
Détection
Payment
Sourcing
Distribution
Rates	Grid
RealTime
Prices
Gift Cards
Content &
Comparators
Sales
Promotion
Acquisition
TV	Campaigns	
Online	Ads
Company	
Rating	
Product	Reviews
Shopping Cart
Catalogue
Search
Categories
Tags
PartnershipsSecondary
Listing
Internal
Purchasing
Rates
CrossSales Navigation
SEO
Marketing
Customer
addressLine
zipcode
city
…
Hey!
Companies have a
different billing
address!
I know: let’s add it
with a flag!
Purchase
addressLine
zipcode
city
has2AddressesFlag
addressLine2
zipcode2
city2
Customer
addressLine
zipcode
city
has2AddressesFlag
addressLine2
zipcode2
city2
If (! has2AddressesFlag)
billing address line = …
billing zip code =
billing city =
else
billing address line = …
billing zip code =
billing city =
Customer
addressLine
zipcode
city
has2AddressesFlag
addressLine2
zipcode2
city2
If (! has2AddressesFlag)
billing address line = …
billing zip code =
billing city =
else
billing address line = …
billing zip code =
billing city =
Everywhere
problem
Code Mess
by lack of domain understanding
solution
Bounded
Contexts
split 1 big model by sub-domains
Split by business domains
141
Customer
addressLine
zipcode
city
date
amount
user
Account
addressLine
zipcode
city
Recipient
+
+
Shipping
BillingShopping Cart
Shipping
BillingShopping Cart
Shipping
BillingShopping Cart
Bounded Contexts
by domain
Customer
addressLine
zipcode
city
date
amount
user
Account
addressLine
zipcode
city
Recipient
+
+
New names
customer
≠
account
≠
recipient
146
Near Synonyms
Customer
addressLine
zipcode
city
date
amount
user
Account
addressLine
zipcode
city
Recipient
+
+
Suggest Contexts
Customer
addressLine
zipcode
city
date
amount
user
Account
addressLine
zipcode
city
Recipient
+
+
Default value:
billing address =
shipping address
But… that’s
massive duplication!
”No Duplication”
means ”Coupling”
Evolve differently in the
long term
151
addressLine
zipcode
city
Account
Billing
addressLine
zipcode
city
Recipient
Shipping
addressLine
zipcode
city
postbox
Account
Billing
addressLine
zipcode
city
Recipient
Shipping
addressLine
zipcode
city
postbox
Account
Billing
addressLine
zipcode
city
doorCode
Recipient
Shipping
Purchase BillingUnit
DeliveryRequest
*
*
e.g. marketplace
What is a book at Amazon?
•Catalog: Picture, title, authors, rating, format
(ebook or paper), category
•Recommandation: List of books often bought
together with it
•Shipping: Dimensions, weight, international
restrictions due to content
•Shopping cart: Price, discount eligible
•Customer review: List of (rating, review,
review rating)
•Book Search: title, isbn, authors
•Search Inside!: full-text content, copyright-
dealing policy
Different perspectives
My book is not your book
Fragmenting your model
Separate models = simpler than single model
@zpapierski
Conflicting views
suggest several contexts
“I don’t need all these data for my
use-case, I just need these 3 fields”
Polyglot persistence (random
examples)
•Catalog: NoSQL
•Recommandation: Batch + GraphDB
•Shipping: RDBMS
•Shopping cart: RDBMS
•Customer review: Cassandra
•Book Search: Elastic Search
•Search Inside!: Redis + CDN
Team organization
•Catalog: Team 1
•Recommandation: Team 2
•Shipping: Team 3
•Shopping cart: Team 4
•Customer review: Team 5
•Book Search: Team 6
•Search Inside!: Team 7
— @zpapierski
by the way...
loosely-coupled,
service-oriented
architecture with
bounded context.
loosely-coupled,
service-oriented
architecture with
bounded context.
Adrian Cockcroft
Microservices!
DDD Framework?
DDD Framework?
What language?
What language?
Does not matter
(but easier with F#)
Is DDD for you?
• Do you feel close to XP?
• Do you love distributed caches?
How to go further?
Read the blue book
Read Martin Fowler
Try Event Storming
h#p://cathy313.centerblog.net/539-bisounours
Micro-Services
+
Event-Driven
Architecture
Micro-Services
WHY microservices?
INDEPENDENT Work Streams
GRANULAR Independent Deployments
Plus recent history has proven we don’t
have the DECOUPLING discipline
FAULT-isolation
Partioning by domains
Partioning	the	world	into	interconnected	platforms	
of	services	partitioned	by	business	sub-domains
185
Sub-Domains
Init
CP purpose &
EC Date
Team &
Collaboration
StrucKyc
FATCA
Embargo
Bundle
Limit
Check
Integration
Risk
Sharing
Federation
Pricing
Integration
CO
IFRS9
classification
Volcker
classification
Mandate
NDA
internal
billing
PoA
AML
Liq
Integration
Legal
Blacklist
Hedging
Approval
Pre
KyC
Closing
Prospects
Ref
WH Tax,
Margin,
Fees
tags: ReadModel, WriteModel,
Projection, Service, BFF, Infra
Microservices in practice
Each microservice has its own private logical ”database”:
CREATE DATABASE microservicename;
Microservices expose API’s and consume other services
http / REST / Json
Most microservices are built on a Microservice Chassis
Spring Boot / Spring Cloud Suite
Shopping
Cart
Shipping
insurance
Anti
Fraud
Discount
Shipping
Cost
Estimation
Federated Micro-services
…
XX Id,
& Version,
XX Id,
YY Id
Z-specific data & behaviors,
for each Y of X
T-specific data & behaviors,
for each Y of X
U-specific data & behaviors,
for each Y of X
V-specific config (input)
for each Y of X
Easy to extend by addition of a
new federated service
Production-ready Microservices
Each service exposes health checks & metrics
/health
/metrics
/info
(built-in Spring Boot Actuator)
Each service produces semlogs used by monitoring
ELK + Worker
Each service is instrumented for distributed tracing
ZIPKIN (Sleuth)
Zipkin - your new debugger
Event-Driven
Architecture
WHY Event-Driven
Architecture?
DISTRIBUTE data across services for fast
Eventual Consistency
TEMPORAL Decoupling between services
(reduced failure area)
Events Senders and Receivers DON’T
KNOW each other (Decoupling)
Event-Driven Architecture in practice
One event bus with one shared topic
RabbitMQ
Everyone Broadcasts to Everyone
Exchange type: Fanout (or Headers)
Choreography over Orchestration
No central coordinator, control is
decentralized
Choreography over
orchestration
Init Pricing
V
UX
T
Update Amt Command
Amt
Updated
X
Updated
Pricing
Failed
T
Planed
V
ToReview
Event-Driven
Architecture
≠
Event Sourcing
Event Sourcing: a
persistence style
(events as private schema)
Event-Driven Architecture:
an integration style
(events as published contracts)
Can change whenever I want
Can never change once used
Contracts are forever!
Robustness rules
• MUST_IGNORE events & fields
you don’t know
• NEVER_REMOVE an existing
field or event
• ALWAYS_ADD new fields for
changes
protobuf, avro Consumer-Driven
Contracts
Which language in the events?
B
ACL
B
Events
A
Events
See: DDD /Context Mapping
Passenger safety
Propulsion
Car to ground link
Passenger safety
Propulsion
Car to ground link
DDD / Bounded
Contexts!
DDD beyond the infamous repository pattern - GeeCon Prague 2018

Contenu connexe

Similaire à DDD beyond the infamous repository pattern - GeeCon Prague 2018

GoDaddy Customer Success Dashboard Using Apache Spark with Baburao Kamble
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao KambleGoDaddy Customer Success Dashboard Using Apache Spark with Baburao Kamble
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao KambleDatabricks
 
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...Jad DELLEL
 
CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...
CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...
CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...Kevin Reynen
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven ArchitecturesLalit Kale
 
Old code doesn't stink - Detroit
Old code doesn't stink - DetroitOld code doesn't stink - Detroit
Old code doesn't stink - DetroitMartin Gutenbrunner
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixVictor Rentea
 
Domain Driven Design in an Agile World
Domain Driven Design in an Agile WorldDomain Driven Design in an Agile World
Domain Driven Design in an Agile WorldLorraine Steyn
 
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...IngridBuenaventura
 
Mandeep2 Chopra
Mandeep2 ChopraMandeep2 Chopra
Mandeep2 Chopragood1989
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Scott Wlaschin
 
Sirius Web 101 : Create a Modeler With No Code
Sirius Web 101 : Create a Modeler With No CodeSirius Web 101 : Create a Modeler With No Code
Sirius Web 101 : Create a Modeler With No CodeObeo
 
Lilypad @ Labweek, Istanbul, 2023.pdf
Lilypad @ Labweek, Istanbul, 2023.pdfLilypad @ Labweek, Istanbul, 2023.pdf
Lilypad @ Labweek, Istanbul, 2023.pdfAlly339821
 
Leverage the power of machine learning on windows
Leverage the power of machine learning on windowsLeverage the power of machine learning on windows
Leverage the power of machine learning on windowsJosé António Silva
 
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...Rien van den Bosch
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at MyplanetDaniel Zivkovic
 

Similaire à DDD beyond the infamous repository pattern - GeeCon Prague 2018 (20)

Serverless ddd
Serverless dddServerless ddd
Serverless ddd
 
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao Kamble
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao KambleGoDaddy Customer Success Dashboard Using Apache Spark with Baburao Kamble
GoDaddy Customer Success Dashboard Using Apache Spark with Baburao Kamble
 
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
 
CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...
CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...
CiviCRM for Drupal Developers, Designers, and Site Builders - DrupalCamp Colo...
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven Architectures
 
Old code doesn't stink - Detroit
Old code doesn't stink - DetroitOld code doesn't stink - Detroit
Old code doesn't stink - Detroit
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflix
 
Domain Driven Design in an Agile World
Domain Driven Design in an Agile WorldDomain Driven Design in an Agile World
Domain Driven Design in an Agile World
 
Dell merged
Dell mergedDell merged
Dell merged
 
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
 
Mandeep2 Chopra
Mandeep2 ChopraMandeep2 Chopra
Mandeep2 Chopra
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)
 
Sirius Web 101 : Create a Modeler With No Code
Sirius Web 101 : Create a Modeler With No CodeSirius Web 101 : Create a Modeler With No Code
Sirius Web 101 : Create a Modeler With No Code
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Lilypad @ Labweek, Istanbul, 2023.pdf
Lilypad @ Labweek, Istanbul, 2023.pdfLilypad @ Labweek, Istanbul, 2023.pdf
Lilypad @ Labweek, Istanbul, 2023.pdf
 
ObjectId in Mongodb
ObjectId in MongodbObjectId in Mongodb
ObjectId in Mongodb
 
D3js
D3jsD3js
D3js
 
Leverage the power of machine learning on windows
Leverage the power of machine learning on windowsLeverage the power of machine learning on windows
Leverage the power of machine learning on windows
 
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
 
Serverless projects at Myplanet
Serverless projects at MyplanetServerless projects at Myplanet
Serverless projects at Myplanet
 

Plus de Cyrille Martraire

Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Cyrille Martraire
 
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...Cyrille Martraire
 
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Cyrille Martraire
 
Refactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionRefactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionCyrille Martraire
 
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Cyrille Martraire
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Cyrille Martraire
 
Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014Cyrille Martraire
 
Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Cyrille Martraire
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)Cyrille Martraire
 
I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"Cyrille Martraire
 
Domain-Driven Design in legacy application
Domain-Driven Design in legacy applicationDomain-Driven Design in legacy application
Domain-Driven Design in legacy applicationCyrille Martraire
 
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Cyrille Martraire
 

Plus de Cyrille Martraire (13)

Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
Domain modeling for Digital Transformations (FlowCon Paris 2019 edition)
 
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
Hexagonal at Scale, with DDD and microservices! - Voxxed Days microservices 2...
 
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
Les effets inattendus du passage en Features Teams à grande échelle -ScrumDay...
 
Refactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionRefactor your Specs - 2017 Edition
Refactor your Specs - 2017 Edition
 
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
Interviewing Domain Experts - Heuristics From the Trenches (DDD Europe 2016 M...
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?
 
Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014Ur Domain Haz Monoids DDDx NYC 2014
Ur Domain Haz Monoids DDDx NYC 2014
 
Ur Domain Haz Monoids
Ur Domain Haz MonoidsUr Domain Haz Monoids
Ur Domain Haz Monoids
 
Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013Refactor your specs! Øredev 2013
Refactor your specs! Øredev 2013
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
 
I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"
 
Domain-Driven Design in legacy application
Domain-Driven Design in legacy applicationDomain-Driven Design in legacy application
Domain-Driven Design in legacy application
 
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
Tour d'horizon de Domain-Driven Design Avril 2012 autour d'un retour d'expéri...
 

Dernier

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 

Dernier (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 

DDD beyond the infamous repository pattern - GeeCon Prague 2018