SlideShare a Scribd company logo
1 of 188
ESSENTIAL DDD
@gboissinot
Dev	Day	ESGI
2017	February	23
SOFTWARE
DESIGN
DOMAIN
DRIVEN
DESIGN
DDD
DDD
IS AN APPROACH
DDD
IS AN APPROACH
TO SOFTWARE DESIGN
DDD
IS AN APPROACH
TO SOFTWARE DESIGN
FOR COMPLEX
BUSINESS NEEDS
THE MOST SIGNIFICANT
COMPLEXITY
OF MANY APPLICATIONS
IS NOT TECHNICAL
WE MUST
FOCUS MORE ON
THE BUSINESS CONCERNS
“Critical Complexity of most
software projects
is in understanding
the domain itself “
Eric Evans
THE DOMAIN
THE PROBLEM
AREA
The reality
THE DOMAIN
IS A
SPHERE OF KNOWLEDGE
THE DOMAIN
IS A SET OF
CONCEPTS EXPRESSING
DISTILLED KNOWLEDGE
THE	DOMAIN	
IS	A	SET	OF
CONCEPTS	EXPRESSING	
DISTILLED	KNOWLEDGE,	RULES,
ASSUMPTIONS, CONCEPTS	
ABOUT	A	BUSINESS	MODEL
THERE ARE
NO BORING
DOMAINS
COMPLEXITY
FROM THE
DOMAIN IS
INHERENT
COMPLEXITY
FROM THE
TECHNICAL
IS ACCIDENTAL
SOLVING COMPLEX
PROBLEMS BY USING
MODELS
A MODEL
A MODEL
REPRESENTS
A VIEW
A MODEL
DESCRIBES THE
OUTSIDE WORLD
A MODEL
IS ABOUT USEFULNESS
AROUND A SPECIFIC
SET OF PROBLEMS
A MODEL
IS ADAPTED
TO AN USAGE
ABSTRACTION
ABSTRACTION
IS TO FORGET THE
NON SIGNIFICANT DETAILS
ABSTRACTION
IS TO FORGET THE
NON SIGNIFICANT DETAILS
AND FOCUS ON
THE ESSENTIALS
AN ABSTRACTION
OF REALITY,
NOT A REFLECTION OF REAL
LIFE
PARIS	TOURIST	MAP
PARIS	METRO	MAP
WRONG MODELS
WRONG MODELS
CAUSE MASSIVE
ACCIDENTAL COMPLEXITY
WHAT
ARE ITS
USAGE ?
PARIS	TOURIST	AND	TRANSPORT	MAP	?
A MODEL
CONTAINS ONLY
WHAT IS RELEVANT
MODELS ARE NEITHER
“RIGHT” OR “WRONG”
BUT SOME ARE
USEFUL THAN OTHERS
DESIGN IS
MAKING
DECISIONS
DESIGN
IS THE ART OF
TRADE-OFF
THE DOMAIN MODEL
THE DOMAIN MODEL
IS AN ABSTRACTION
OF THE
PROBLEM DOMAIN
Domain
Domain Model
The reality
An abstraction of reality
designed to manage
complexity for specific
business cases
A projection
of the Real Domain
THE PROBLEM SPACE THE SOLUTION SPACE
SOFTWARE
DEVELOPMENT
AND ITS PROBLEMS
SCRUM PRODUCT BACKLOG
PRESSURE TO DELIVER
SOFTWARE RELEASES
ON A RELENTLESS
SCHEDULE
LACK	
OF	DESIGN
FOCUS ON SOLUTION SPACE
Language Framework
LibrariesInfra
CV
DRIVEN
APPROACH
POOR
COLLABORATION
UML JAVA / C#
POOR SYNCHRONIZATION
BETWEEN MODELS
Broken,	slow	and	locking	the	database
WRONG
LEVEL OF
ABSTRACTION
WHAT DOES
THE APPLICATION
DO ?
WHAT IS THE
APPLICATION
ABOUT ?
COMPLEX	DOMAINS
CAN	BECOME	
DIFFICULT	TO	MANAGE
It works but no one
knows how
Initial software
incarnation fast to
produce
time
without	care	and	
consideration
DATA
MODELS
INSTEAD OF
DOMAIN
MODELS
MOST DEVELOPERS
HAVE NEVER SEEN
A DOMAIN MODEL
THEY’VE ONLY SEEN
DATA MODELS
Database centric Architecture
BIG BALL OF MUD
IMPROVE YOUR CRAFT
IMPROVE YOUR CRAFT
AND INCREASE
YOUR SUCCESS ON
PROJECTS
CREATE BETTER SOFTWARE
MORE EASILY
CREATE BETTER SOFTWARE
MORE EASILY
BY FOCUSING ON THE
DOMAIN INSTEAD OF
THE TECHNOLOGY
TO FOCUS ON
BUSINESS VALUE
DDD
as	a	
bridge
PROBLEM	
SPACE
SOLUTION
SPACE
A TOOLSET : A COLLECTION OF PATTERNS, PRINCIPLES & PRACTICES
COLLABORATIVE
MODELING
STRATEGIC
DESIGN
(Context Mapping)
TACTICAL
DESIGN
(Building Blocks,
patterns)
DDD BREAKDOWN
PROBLEM SPACE
DOMAIN
COLLABORATIVE
DESIGN
CREATING
A USEFUL MODEL
IS A
COLLABORATIVE
EXPERIENCE
MANY
KNOWLEDGE CRUNCHING
TECHNIQUES
MANY
KNOWLEDGE CRUNCHING
TECHNIQUES
TO EXPLORE DOMAINS
MANY
KNOWLEDGE CRUNCHING
TECHNIQUES
TO EXPLORE DOMAINS
AND LEARN THE INTENT OF
THE BUSINESS
KNOWLEDGE CRUNCHING
IS THE ART
OF DISTILLING
RELEVANT INFORMATION
KNOWLEDGE CRUNCHING
IS THE ART
OF DISTILLING
RELEVANT INFORMATION
FROM
THE PROBLEM DOMAIN
CLARIFYING QUESTIONS
• What do you mean by … ?
• What might lead someone to
do / need .. ?
• What else might happen ...?
THIS LEADS TO
THE DISCOVERY OF
IMPORTANT CONCEPTS
ALLOWS THE TEAM TO
UNDERSTAND
WHAT IS NOT IMPORTANT
AND CAN BE EXCLUDED
FROM THE MODEL
DDD
IS
EXPLORATORY
BUSINESS USERS
ARE BUSY
PEOPLE
BUSINESS USERS
CAN ALSO FIND TIRING
AND DEEM IT
UNPRODUCTIVE
MAKE YOUR
KNOWLEDGE CRUNCHING
SESSIONS
FUN AND INTERACTIVE
INTRODUCE
SOME
FACILITATION GAMES
INTRODUCE SOME
FACILITATION GAMES
AND OTHER
FORMS OF REQUIREMENTS
GATHERING TO ENGAGE
YOUR AUDIENCE
EVENT STORMING
EventCommand
Actor
Question	?
THE GOAL OF
EVENT STORMING
IS TO DISCOVER
THE GOAL OF
EVENT STORMING
IS TO DISCOVER
NOT TO MAKE
A DECISION
DRIVE KNOWLEDGE
CRUNCHING
AROUND THE MOST
IMPORTANT USE CASE
OF THE SYSTEM
Jeff	Patton Alberto	Brandolini Eric	Evans
EMPLOY
KNOWLEDGE CRUNCHING
TECHNIQUES
TO PRODUCE
EFFECTIVE MODELS
CHALLENGE
YOUR MODEL
DON’T STOP
AT YOUR
FIRST IDEA
YOU WON’T GET IT RIGHT
THE FIRST TIME
GOOD DESIGN
IS IMPERFECT DESIGN
THE ONLY WAY
TO LEARN A COMPLEX SYSTEM
IS TO LIVE AND TO INTERACT
WITH IT
EXPERTS
DOESN’T KNOW
EVERYTHING
DON’T WAIT PERFECT TEAM
DON’T WAIT PERFECT TEAM
DON’T WAIT PERFECT PEOPLE
USE BDD
TO FOCUS ON
THE BEHAVIOR OF THE
APPLICATION AROUND
CONCRETE SCENARIOS
UBIQUITOUS
LANGUAGE
UBIQUITOUS LANGUAGE
VARIOUS EXPRESSIONS
OF THE MODEL
ARE BOUND
BY THE SAME LANGUAGE
WHEN MODELING,
EVERYONE SHOULD APPLY
A SHARED LANGAGE RICH
IN DOMAIN SPECIFIC
TERMINOLOGY
UBIQUITOUS	LANGUAGE	
IS	A	
SHARED	LANGUAGE
UBIQUITOUS	LANGUAGE	
IS	A	
SHARED	LANGUAGE
USED	BY	ALL	TEAM	MEMBERS
UBIQUITOUS	LANGUAGE	
IS	A	
SHARED	LANGUAGE
USED	BY	ALL	TEAM	
MEMBERS	TO	CONNECT	
ALL	ACTIVITIES	OF	THE	
TEAM	WITH	THE	SOFTWARE
BOUND BY
LANGUAGE
EXPRESSED AS
DIAGRAMS
EXPRESSED IN
CONVERSATION
EXPRESSED AS
DOCUMENTATION
EXPRESSED AS
CODE
THE
DOMAIN
MODEL
UML JAVA / C#
Ubiquitous
Language
UBIQUITOUS LANGUAGE
IS A KEY TOOL
SUBDOMAINS
DOMAIN	
IS	OFTEN COMPLEX
THE	DOMAIN
NOT	ALL	THE	PART	
OF	THE	PROBLEM	
NEED	PERFECT SOLUTION
DISTILL	LARGE	PROBLEM
DOMAINS	TO	REVEAL
THE	CORE	OPPORTUNITY
DISTILL	IN	SUBDOMAINS
FOCUS	EFFORT	
WHERE	IT	MATTERS
IDENTIFY
THE	CORE	DOMAIN	
AND	THE	CORE	COMPLEXITY
OSS	Lib
COTS
Contarcting
“Secret	Source”
SOLUTION SPACE
MOVE BUSINESS
IN YOUR CODE
DDD IS A PROCESS
THAT ALIGNS
YOUR CODE
WITH THE REALITY OF
YOUR PROBLEM DOMAIN
MAKE
THE IMPLICIT EXPLICIT
THE CODE MODEL IS THE
PRIMARY EXPRESSION OF
THE DOMAIN MODEL
DDD
ONLY REQUIRES
THE MODEL
TO BE KEPT ISOLATED FROM
TECHNICAL COMPLEXITIES
CAR	TIRE	SOLD
Gauranteed
one	year
SEND	A	DISCOUNT	
COUPON	TO		THE	
CUSTOMER
Yes
public class GuaranteedOneYearDeliveryOffer
{
public void after(CarTireSold delivery)
{
if (delivery.TimeTimeTaken.Exceeded(oneYear)
{
sendCarBreakDiscountCouponTo(delivery.Customer) ;
}
}
}
Don’t focus on technical details …
…talk in domain terns.
DDD
IS	TECHNICALLY	AGNOSTIC
THE CODE
AND THE DOMAIN MODEL
ARE KEPT IN SYNERGY
THE CODE
IS THE MODEL
THE CODE
IS THE TRUTH
BOUNDED CONTEXT
DECOMPOSE
THE SOLUTION SPACE
FOR COMPLEX
OR LARGE MODELS
DECOMPOSE
THE SOLUTION SPACE
AND DEVELOP MULTIPLE
MODELS WITHIN EXPLICIT
BOUNDARIES
CUSTOMER
CONTEXT	
<<SALES>>
Center	of	
interest
CONTEXT	
<<Accounting>>
Method	of	
payment
CONTEXT	
<<Order	Shippment>>
Address	Availability
A SINGLE LARGE AMBIGUOUS MODEL
BUSINESS	
USE	CASE
BUSINESS	
USE	CASE
BUSINESS	
USE	CASE
CONTEXT	
MATTERS
CONTEXT
<<SALES>>
Customer: Center of
interest
CONTEXT
<<ACCOUNTING>>
Customer: Method of
payment
CONTEXT
<<ORDER SHIPMENT>>
Customer: Address
Availability
MULTIPLE SMALLER EXPLICIT MODELS
A	BOUNDED	CONTEXT
A	BOUNDED	CONTEXT	
IS	A	SEMANTIC	CONTEXTUAL	
BOUNDARY
A	BOUNDED	CONTEXT	
PROTECTS	THE	DOMAIN	
MODEL AND	DEFINES	THE	
APPLICABILITY	BOUNDARY
DOMAIN	
MODEL
Bounded	
Context
BOUNDED	CONTEXT	
IS	THE	CONDITIONS	
WHICH	
A	PARTICULAR	MODEL
IS	DEFINED AND	APPLICABLE
GENERALLY	
BOUNDED	CONTEXTS	
MATCH	
SUBDOMAINS
ALIGN	BOUNDED	CONTEXTS	TO	SUBDOMAINS
Bounded	
ContextBounded	
Context
Bounded	
Context
Bounded	
Context
ALIGN	TEAMS	
TO	
BOUNDED	CONTEXTS
ARCHITECTURE STYLE
DDD
DOESN’T DICTATE
ANY SPECIAL
ARCHITECTURAL PATTERNS
PATTERNS
USED TO IMPLEMENT
BOUNDED CONTEXTS
SHOULD BE APPROPRIATE
TO THE COMPLEXITY
MANY MODELS
• Rich Domain Model
• CRUD Model
• Anemic Model
• Transaction Script Model
• etc
CHOOSE
THE RIGHT
DOMAIN
MODEL
BOUNDED	CONTEXTS	with	MODELS
CRUD
RICH	
MODEL
ANEMIC ANEMIC
HEURISTICS
PRACTICAL METHOD
NOT GUARANTEED TO BE
OPTIMAL OR PERFECT
PRACTICAL METHOD
NOT GUARANTEED TO BE
OPTIMAL OR PERFECT
BUT SUFFICIENT FOR
IMMEDIATE GOALS
o Favorite	Algorithms
o Favorites	Solutions
o Favorites	Approaches
o Our	Mental	Models
o Patterns
o etc
DO NOT BE BLOCKED ON
YOUR HEURISTICS
• System Layers
• ORM
• IOC
• Anemic Behaviours
HEXAGONAL
ARCHITECTURE
INSIDE
OUTSIDE
DOMAIN
INFRA
(HTTP,	MoM,	Databases,	etc)
DOMAIN
INFRA
(Ports	&	Adapters,	DMZs)
Hexagonal	 /	Onion	/	Ports-And-Adapters	Architecture
STRATEGIC DESIGN
COMPOSE
BOUNDED CONTEXTS
TO CREATE APPLICATIONS
USER	INTERFACE
APPLICATION
BOUNDED	CONTEXT	A BOUNDED	CONTEXT	B
BOUNDED	CONTEXT	C
USER	INTERFACE
INTEGRATE	MODELS
Mapping
INTEGRATION
PATTERNS ENABLE
BOUNDED CONTEXTS
TO COMMUNICATE
TACTICAL PATTERNS
• Value Objects
• Entities
• Aggregates
• Repositories
• Domain Services
• Application
Services
• Domain Events
DDD
IS NOT
A PATTERN LANGUAGE
AGGREGATE
AGGREGATE
IS A CLUSTER OF DOMAIN
OBJECTS
AGGREGATE
IS A CLUSTER OF DOMAIN
OBJECTS
THAT CAN BE TREATED AS
A SINGLE UNIT
AGGREGATE
IS A COLLECTION OF DATA
THAT WE INTERACT WITH
AS A UNIT
CONCLUSION
ALWAYS	
CONNECT		YOUR	
DECISIONS
TO	YOUR	
BUSINESS	
OBJECTIVES
GO FURTHER
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD
DevDay2017 ESGI Essential DDD

More Related Content

What's hot

Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)Thomas Pierrain
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven DesignDavid Berliner
 
Modeling microservices using DDD
Modeling microservices using DDDModeling microservices using DDD
Modeling microservices using DDDMasashi Narumoto
 
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018Paulo Clavijo
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingAraf Karsh Hamid
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledNicola Costantino
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLCAbdul Karim
 
Діма Зубець ” The Zachman Framework for Enterprise Architecture”
Діма Зубець ” The Zachman Framework for Enterprise Architecture”Діма Зубець ” The Zachman Framework for Enterprise Architecture”
Діма Зубець ” The Zachman Framework for Enterprise Architecture”Dakiry
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignAOE
 
Domain driven design
Domain driven designDomain driven design
Domain driven designits_skm
 
GitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect CombinationGitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect CombinationWill Hall
 
An Introduction to AWS
An Introduction to AWSAn Introduction to AWS
An Introduction to AWSIan Massingham
 
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Edureka!
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesRadosław Maziarka
 
Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...Chris Richardson
 

What's hot (20)

Ddd reboot (english version)
Ddd reboot (english version)Ddd reboot (english version)
Ddd reboot (english version)
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
Modeling microservices using DDD
Modeling microservices using DDDModeling microservices using DDD
Modeling microservices using DDD
 
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
DDD Strategic Design - Context Maps - Paulo Clavijo - April 2018
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb Sharding
 
Domain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) Distilled
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Domain Driven Design
Domain Driven Design Domain Driven Design
Domain Driven Design
 
Діма Зубець ” The Zachman Framework for Enterprise Architecture”
Діма Зубець ” The Zachman Framework for Enterprise Architecture”Діма Зубець ” The Zachman Framework for Enterprise Architecture”
Діма Зубець ” The Zachman Framework for Enterprise Architecture”
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
AWS Lambda
AWS LambdaAWS Lambda
AWS Lambda
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
GitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect CombinationGitLab, AWS and Terraform: The Perfect Combination
GitLab, AWS and Terraform: The Perfect Combination
 
Event storming
Event storming Event storming
Event storming
 
An Introduction to AWS
An Introduction to AWSAn Introduction to AWS
An Introduction to AWS
 
AWS Deployment Best Practices
AWS Deployment Best PracticesAWS Deployment Best Practices
AWS Deployment Best Practices
 
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
 
DDD - What, why, how?
DDD - What, why, how?DDD - What, why, how?
DDD - What, why, how?
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 
Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...Saturn 2018: Managing data consistency in a microservice architecture using S...
Saturn 2018: Managing data consistency in a microservice architecture using S...
 

Similar to DevDay2017 ESGI Essential DDD

Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignFrank Levering
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven DesignR-P-Azevedo
 
Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)IT Arena
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introductionwojtek_s
 
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...Yan Justino
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven designRick van der Arend
 
GDSC NIET ORIENTATION ).pdf
GDSC NIET ORIENTATION ).pdfGDSC NIET ORIENTATION ).pdf
GDSC NIET ORIENTATION ).pdfYashiGupta410690
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven ArchitecturesLalit Kale
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPChris Renner
 
Domain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureDomain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureCan Pekdemir
 
DevOps Handbook: Experiments in Accelerating Delivery
DevOps Handbook: Experiments in Accelerating DeliveryDevOps Handbook: Experiments in Accelerating Delivery
DevOps Handbook: Experiments in Accelerating DeliveryJim Grafmeyer
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application growsCarolina Karklis
 
2011 iska - tim m - domain driven design
2011   iska - tim m - domain driven design2011   iska - tim m - domain driven design
2011 iska - tim m - domain driven designTim Mahy
 
IPC07 Talk - Beautiful Code with AOP and DI
IPC07 Talk - Beautiful Code with AOP and DIIPC07 Talk - Beautiful Code with AOP and DI
IPC07 Talk - Beautiful Code with AOP and DIRobert Lemke
 
Event Storming #10 DDDGreece
Event Storming #10 DDDGreeceEvent Storming #10 DDDGreece
Event Storming #10 DDDGreeceAntonios Klimis
 

Similar to DevDay2017 ESGI Essential DDD (20)

SOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDDSOAT Agile Day 2017 DDD
SOAT Agile Day 2017 DDD
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)Domain-Driven Design (Artur Trosin Product Stream)
Domain-Driven Design (Artur Trosin Product Stream)
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
GDSC NIET ORIENTATION ).pdf
GDSC NIET ORIENTATION ).pdfGDSC NIET ORIENTATION ).pdf
GDSC NIET ORIENTATION ).pdf
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven Architectures
 
DDD for POs
DDD for POsDDD for POs
DDD for POs
 
Soliworks presentation
Soliworks presentationSoliworks presentation
Soliworks presentation
 
BDD by example
BDD by exampleBDD by example
BDD by example
 
An Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHPAn Introduction to Domain Driven Design in PHP
An Introduction to Domain Driven Design in PHP
 
Domain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureDomain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal Architecture
 
DevOps Handbook: Experiments in Accelerating Delivery
DevOps Handbook: Experiments in Accelerating DeliveryDevOps Handbook: Experiments in Accelerating Delivery
DevOps Handbook: Experiments in Accelerating Delivery
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application grows
 
2011 iska - tim m - domain driven design
2011   iska - tim m - domain driven design2011   iska - tim m - domain driven design
2011 iska - tim m - domain driven design
 
IPC07 Talk - Beautiful Code with AOP and DI
IPC07 Talk - Beautiful Code with AOP and DIIPC07 Talk - Beautiful Code with AOP and DI
IPC07 Talk - Beautiful Code with AOP and DI
 
Event Storming #10 DDDGreece
Event Storming #10 DDDGreeceEvent Storming #10 DDDGreece
Event Storming #10 DDDGreece
 

More from Gregory Boissinot (20)

Practical Software Architecture DDD
Practical Software Architecture DDDPractical Software Architecture DDD
Practical Software Architecture DDD
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
 
Beyond Relational Databases
Beyond Relational DatabasesBeyond Relational Databases
Beyond Relational Databases
 
Paris Redis Meetup Introduction
Paris Redis Meetup IntroductionParis Redis Meetup Introduction
Paris Redis Meetup Introduction
 
Paris Redis Meetup Starting
Paris Redis Meetup StartingParis Redis Meetup Starting
Paris Redis Meetup Starting
 
PZ_Microservices101_20150210
PZ_Microservices101_20150210PZ_Microservices101_20150210
PZ_Microservices101_20150210
 
Spring Integration JUG SummerCamp 2013
Spring Integration JUG SummerCamp 2013Spring Integration JUG SummerCamp 2013
Spring Integration JUG SummerCamp 2013
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
gradle_lavajug
gradle_lavajuggradle_lavajug
gradle_lavajug
 
Jenkins-meetup
Jenkins-meetupJenkins-meetup
Jenkins-meetup
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Gradle_Paris2010
Gradle_Paris2010Gradle_Paris2010
Gradle_Paris2010
 
Gradle_LyonJUG
Gradle_LyonJUGGradle_LyonJUG
Gradle_LyonJUG
 
Gradle_NormandyJUG
Gradle_NormandyJUGGradle_NormandyJUG
Gradle_NormandyJUG
 
Gradle_BreizJUG
Gradle_BreizJUGGradle_BreizJUG
Gradle_BreizJUG
 
Gradle_BordeauxJUG
Gradle_BordeauxJUGGradle_BordeauxJUG
Gradle_BordeauxJUG
 
Gradle_ToulouseJUG
Gradle_ToulouseJUGGradle_ToulouseJUG
Gradle_ToulouseJUG
 
Jenkins_UserMeetup_Paris_201105
Jenkins_UserMeetup_Paris_201105Jenkins_UserMeetup_Paris_201105
Jenkins_UserMeetup_Paris_201105
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

DevDay2017 ESGI Essential DDD