SlideShare une entreprise Scribd logo
1  sur  149
Télécharger pour lire hors ligne
#DDDREBOOT
LET’S REBOOT DDD!
THOMAS PIERRAIN - JEREMIE GRODZISKI
@TPIERRAIN - @JGRODZISKI
#DDDREBOOT
LET’S REBOOT DDD!
THOMAS PIERRAIN - JEREMIE GRODZISKI
@TPIERRAIN - @JGRODZISKI
#DDDREBOOT
BEFORE WE BEGIN
#DDDREBOOT#DDDREBOOT
#DDDREBOOT
DDD AROUND YOU?
OK, BUT 13 YEARS AFTER…
#DDDREBOOT
#DDDREBOOT
THERE MUST BE A
REASON…
#DDDREBOOT
« TACTICAL PATTERNS », « BOUNDED
CONTEXTS », « UBIQUITOUS LANGUAGE », ETC.
#DDDREBOOT
DOES IT NOT
MEAN ANYTHING
TO YOU?
#DDDREBOOT#DDDREBOOT
#DDDREBOOT
ACTUALLY
DDD…
#DDDREBOOT
DOMAIN DRIVEN
DESIGN, IS…
#DDDREBOOT
TO FOCUS ON
BUSINESS VALUE
#DDDREBOOT
OUR FIRST WORK AS DEVELOPER?
UNDERSTAND THE DOMAIN THAT
WE’LL HAVE TO CODE
#DDDREBOOT
A SET OF CONCEPTS THAT,
THROUGH USE CASES,
ALLOWS US TO SOLVE PROBLEMS
DOMAIN?
#DDDREBOOT
DOMAIN: DOUBLE ENTRY ACCOUNTING
SOLVED PROBLEMS: TRACKING, ROBUSTNESS
CONCEPTS: ACCOUNT, DEBIT, CREDIT, AMOUNT, ETC.
#DDDREBOOT
DOMAIN: IDE
SOLVED PROBLEMS: PRODUCTIVITY, INTEGRATION
CONCEPTS: PROJECTS, FILES, ANALYSIS, REFACTORING,
CVS, DEBUGGER, ETC.
#DDDREBOOT
BUT DDD IS
MOSTLY…
#DDDREBOOT #DDDREBOOT
#DDDREBOOT
#DDDREBOOT
AS DEVELOPERS, WE FACE …
#DDDREBOOT
3 LEVELS
#DDDREBOOT
IS / COMPANY
APPLICATION / TEAM
CODE / PAIR
#DDDREBOOT
IS / COMPANY
APPLICATION / TEAM
CODE / PAIR
#DDDREBOOT
IS / COMPANY
APPLICATION / TEAM
CODE / PAIR
#DDDREBOOT
LEVEL 1
IS / COMPANY
APPLICATION / TEAM
CODE / PAIR
#DDDREBOOT
QUESTION:
WHAT’S THE FOLLOWING CODE DOES?
#DDDREBOOT
#DDDREBOOT
SO?
#DDDREBOOT
#DDDREBOOT
DID YOU SEE SOME
CODE SMELLS?
#DDDREBOOT
Good code / Bad code
#DDDREBOOT
#1 MAGIC
NUMBERS
#DDDREBOOT
#1 MAGIC
NUMBERS
#2 DUPLICATIONS
#DDDREBOOT
#1 MAGIC
NUMBERS
#2 DUPLICATIONS
#3 PRIMITIVE
OBSESSION
#DDDREBOOT
#1 MAGIC
NUMBERS
#2 DUPLICATIONS
#3 PRIMITIVE
OBSESSION
#4 MIXED
CONCERNS 

(TECH-BIZ)
#DDDREBOOT
#1 MAGIC
NUMBERS
#2 DUPLICATIONS
#3 PRIMITIVE
OBSESSION
#4 MIXED
CONCERNS 

(TECH-BIZ)
#5 FUZZY
TERMINOLOGY
(
#DDDREBOOT
AND NOW CONCERNING THE
DOMAIN…
#DDDREBOOT
LET’S FIND
THE IMPLICITS !
#DDDREBOOT
FREE SHIPPING IF GREATER
THAN 100? 100 WHAT?
#DDDREBOOT
FIXED SHIPMENT COST?
FREE SHIPPING IF GREATER
THAN 100? 100 WHAT?
#DDDREBOOT
FIXED SHIPMENT COST?
FREE SHIPPING IF GREATER
THAN 100? 100 WHAT?
WEIGHT IN G? VARIABLE COST FOR
EACH SENT KG?
#DDDREBOOT
CURRENCY IN EUROS?
FIXED SHIPMENT COST?
WEIGHT IN G? VARIABLE COST FOR
EACH SENT KG?
FREE SHIPPING IF GREATER
THAN 100? 100 WHAT?
#DDDREBOOT
CURRENCY IN EUROS?
FIXED SHIPMENT COST?
WEIGHT IN G? VARIABLE COST FOR
EACH SENT KG?
SHIPPING OPTION?
FREE SHIPPING IF GREATER
THAN 100? 100 WHAT?
#DDDREBOOT
CURRENCY IN EUROS?
FIXED SHIPMENT COST?
WEIGHT IN G? VARIABLE COST FOR
EACH SENT KG?
SHIPPING OPTION?
FREE SHIPPING IF GREATER
THAN 100? 100 WHAT?
VARIABLE COST PER PRODUCT CATEGORY?
#DDDREBOOT
MAKE THE IMPLICIT,
EXPLICIT
#DDDREBOOT
DDD VERSION
#DDDREBOOT
#DDDREBOOT
#DDDREBOOT
#DDDREBOOT
#DDDREBOOT
#DDDREBOOT
#DDDREBOOT
VALUE TYPE
#DDDREBOOT
THE VALUE TYPE
EXPRESS YOUR DOMAIN AND
SWALLOW YOUR COMPLEXITY
#DDDREBOOT
-VALUE TYPES-
IT'S WHAT THEY ARE THAT IS IMPORTANT;
NOT WHO THEY ARE
#DDDREBOOT
-VALUE TYPES-
Σ OF ATTRIBUTES MEANING
#DDDREBOOT
-VALUE TYPES-
Example
#DDDREBOOT
-VALUE TYPES-
A COLOR (RGB: 255-255-0)
A SPEED OF 50 KM/H
A BANK NOTE OF 10 €
Examples
#DDDREBOOT
-VALUE TYPES-
IMMUTABLES BY DEFINITION
RICH WITH DOMAIN LOGIC
EQUALITY ON ATTRIBUTES
COMPOSABLES (OPERATORS, FONCTIONS)
AUTO-VALIDATING
Characteristics
#DDDREBOOT
-VALUE TYPES-
“TRANSACTIONAL” CONSTRUCTOR OR OPERATION
CONSTRAINTS ENFORCED BY THE CONSTRUCTOR, NOT BY THE OPERATIONS
FAIL FAST
NO SETTERS !
IMMUTABILITY, AUTO-VALIDATING
Implementation
#DDDREBOOT
-VALUE TYPES-
Implementation
RICH WITH DOMAIN LOGIC
#DDDREBOOT
-VALUE TYPES-
ON ALL THE ATTRIBUTES!
Implementation
STRONG UNICITY
hashCode
STRONG EQUALITY
equals
#DDDREBOOT
-VALUE TYPES-
“SIDE-EFFECT FREE” FUNCTIONS
out of the tar pit
WE COMPOSE, AND PREFER RÉ-ASSIGNING
INSTEAD OF CHANGING THE STATE LIKE BEFORE :-(
#DDDREBOOT
ESSENTIAL COMPLEXITY
ACCIDENTAL COMPLEXITY
#DDDREBOOT
« VALUE OBJECT »
#DDDREBOOT
IN DDD, WE NAME THAT:
#DDDREBOOT
« VALUE OBJECT »
#DDDREBOOT
IN DDD, WE NAME THAT:
OXYMORON
#DDDREBOOT
-VALUE TYPE-
ELECTED BEST R.O.I. OF DDD LAND
#DDDREBOOT
EXPRESS THE DOMAIN
CODEBASE PROGRESSIVE INTRODUCTION / EXEMPLARY
COMPLEXITY SWALLOWER
SIMPLIFY REASONING
(IMMUTABLE, THREAD-SAFE, TESTABLE)
- VALUE TYPE -
AN UNBEATABLE R.O.I.
#DDDREBOOT
PLANT THE SEED OF THE DOMAIN INTO THE CODE
THE VALUE TYPE
#DDDREBOOT
MAKE THE IMPLICIT,
EXPLICIT
#DDDREBOOT
SHIPPING COST DECISION TABLE
#DDDREBOOT
SHIPPING COST DECISION TABLE
DATA LITERALS!
#DDDREBOOT
AND, AS WE TALK ABOUT IMPLICIT…
#DDDREBOOT
"I CAN'T LISTEN TO
THAT MUCH WAGNER.
I START GETTING THE
URGE TO CONQUER
POLAND"
(WOODY ALLEN)
#DDDREBOOT
“I CAN’T SEE THAT MUCH
MANAGERS IN CODE.
I START GETTING TO…»
(JÉRÉMIE)
#DDDREBOOT
SHOOT THE
MANAGERS!
;-)
#DDDREBOOT
MAKE THE IMPLICIT,
EXPLICIT
#DDDREBOOT
ANOTHER PROBLEM
#DDDREBOOT#DDDREBOOT
#DDDREBOOT
LOST IN TRANSLATION #DDDREBOOT
#DDDREBOOT
"IT'S DEVELOPER'S UNDERSTANDING, NOT YOUR
KNOWLEDGE THAT BECOMES SOFTWARE!"
Alberto BRANDOLINI 

(facing non collaborative BAs)
#DDDREBOOT
IN SOME
CASES…
#DDDREBOOT
#DDDREBOOT
SOLUTION?
#DDDREBOOT
SOLUTION?
1 LANGUAGE :
YOUR USERS’S ONE!
#DDDREBOOT
« THE UBIQUITOUS LANGUAGE »
#DDDREBOOT
IN DDD, IT’S NAMED:
#DDDREBOOT
YES BUT,
HOW DO WE DO WHEN…
#DDDREBOOT
A « CUSTOMER »
IT'S…
#DDDREBOOT
SO, HOW DO WE DO?
#DDDREBOOT
CONTEXT MATTERS
#DDDREBOOT
CONTEXT
A GROUP OF PERSONS SHARING THE SAME
MEANING BEHIND WORDS.
#DDDREBOOT
Context
CRM / Sales
Customer => Socio-
Economic group &
Center of Interest
#DDDREBOOT
Context
Accounting
Customer  => Method of & Payment Period
Context
CRM / Sales
Customer => Socio-
Economic group &
Center of Interest
#DDDREBOOT
Context
Order-Shipment
Customer  => addresses, availability
Context
Accounting
Customer  => Method of & Payment Period
Context
CRM / Sales
Customer => Socio-
Economic group &
Center of Interest
#DDDREBOOT
« BOUNDED CONTEXT »
#DDDREBOOT
IN DDD, WE NAME THAT:
#DDDREBOOT
CRM / Sales
Context
Model and Language of Sales
Orders / Shipment
Context
Model & language of Logistics
Accounting Context
Model and Language of Accounting
#DDDREBOOT
CRM / Sales
Context
Model and Language of Sales
Orders / Shipment
Context
Model & language of Logistics
Accounting Context
Model and Language of Accounting
APP UI
WEB API
DATABASES APP UI
APP UI
APP UI DATABASES
WEB API
APP UI
APP UI
DATABASES
BATCH
USERS MANUAL
USERS MANUAL
#DDDREBOOT
#DDDREBOOT
CONTEXT
PRODUCTS
CATALOG
CONTEXT « SEARCH »
CONTEXT CLIENT & ORDERS
ADS CONTEXTCONTEXT “RECOMMANDATIONS"
CONTEXT « PROMOTIONS »
CONTEXT « PRODUCT HIGHLIGHTING »
#DDDREBOOT
LEVEL 2
IS / COMPANY
APPLICATION / TEAM
CODE / PAIR
#DDDREBOOT
PROBLEM
#DDDREBOOT#DDDREBOOT
#DDDREBOOT#DDDREBOOT
ONE THING
CHANGES AND…
#DDDREBOOT
#DDDREBOOT
WHY SO MUCH
DOMAIN TECHNICAL
STUFF IN OUR
CODEBASE?
#DDDREBOOT#DDDREBOOT
#DDDREBOOT
SOLUTION?
HEXAGONAL
ARCHITECTURE
#DDDREBOOT
THE WORLD DIVIDES IN 2
CATEGORIES…
#DDDREBOOT
#DDDREBOOT
OUTSIDE
INSIDE
#DDDREBOOT
DOMAIN
INFRA
(HTTP, Db, MoM,…)
#DDDREBOOT
DOMAIN
CODE
DO NOT ENTER
BUSINESS CODE
ONLY
INFRA CODE
(Ports & Adapters DMZ)
#DDDREBOOT
DOMAIN
CODE
DO NOT ENTER
BUSINESS CODE
ONLY
INFRA CODE
>> playground <<
#DDDREBOOT
OUTSIDE
INSIDE
#DDDREBOOT
HEXAGONAL ≠LAYERS
#DDDREBOOT
LAYERS ARCHITECTURE
+—————————+
| PRESENTATION |
+—————————+
| DOMAIN |
+—————————+
| DATABASE |
+—————————+
#DDDREBOOT
+———————————————+
| PRESENTATION | DATABASE | … |
+———————————————+
| DOMAIN |
+———————————————+
HEXAGONAL ARCHITECTURE
#DDDREBOOT
« Hexagonal
Architecture ?!?
(…)
That pattern is
fucking awesome! »
#DDDREBOOT
ANOTHER PROBLEM
#DDDREBOOT
LEGACY
NAM’
#DDDREBOOT
#DDDREBOOT
LEGACY
NAM’
#DDDREBOOT
#DDDREBOOT
LEGACY
NAM’
(WAGNER’S VERSION)
#DDDREBOOT
THE RECURRING QUESTION:
DO WE REBUILD
EVERYTHING FROM
SCRATCH OR NOT?
#DDDREBOOT
Legacy Application
Context
#DDDREBOOT
Legacy Application
Context
Well-crafted DDD
Bubble Context
#DDDREBOOT
Well-crafted DDD
Bubble Context
ANTI-CORRUPTION
LAYER
Legacy Application
Context
#DDDREBOOT
LEVEL 3
IS / COMPANY
APPLICATION / TEAM
CODE / PAIR
#DDDREBOOT
THE PROBLEM
#DDDREBOOT#DDDREBOOT
#DDDREBOOT#DDDREBOOT
#DDDREBOOT#DDDREBOOT
#DDDREBOOT
EVEN FOR
#DDDREBOOT
RELATIONS BASED ON
POWER
#DDDREBOOT
MAKE THE IMPLICIT,
EXPLICIT
#DDDREBOOT#DDDREBOOT
CONTEXT MAP EXPLICITS THE
RELATIONS OF “POWER”
BETWEEN TEAMS
#DDDREBOOT
UPSTREAM / DOWNSTREAM
« IF YOU ARE UPSTREAM
AND YOU POLLUTE THE
RIVER… … PEOPLE DOWNSTREAM
WILL BE IMPACTED. NOT
THE INVERSE. »
METAPHOR OF THE RIVER FLOW
#DDDREBOOT
« Search »
Context
Upstream
downstream
Products Catalog
Context
CONTEXT MAP
#DDDREBOOT
« Search »
Context
U
d
Products Catalog
Context
CONTEXT MAP
AN
TI-CO
RRU
PTIO
N
LAYER
#DDDREBOOT
UPSTREAM / DOWNSTREAM
CUSTOMER - SUPPLIER
CONFORMIST
ANTI-CORRUPTION LAYER (ACL)
SERVICE HOST
SHARED KERNEL
…
SOME VOCABULARIES AND PATTERNS
#DDDREBOOT
« CONTEXT MAP & STRATEGIC DESIGN »
#DDDREBOOT
IN DDD, WE NAME THAT:
#DDDREBOOT
SO…
#DDDREBOOT
BEFORE LEAVING
#DDDREBOOT
DOMAIN DRIVEN
DESIGN, IS…
#DDDREBOOT
A LOT MORE
ACCESSIBLE & USEFUL
THAN IT MIGHT SEEMS
#DDDREBOOT
STARTING MONDAY
#DDDREBOOT
Ubiquitous Language
Value types
Entities
Aggregates
Repositories
Factories
Services
Domain Events
Model Driven Design
Core Domain / Generic
Subdomains
Hexagonal Architecture*
CQRS*
Event Sourcing*
Bubble Context
Bounded Contexts
Context Maps
Anti-corruption Layer
Event storming
Customer / Supplier
Distillation
Shared Kernel
Conformist
…
CODE LEVEL
APP LEVEL
ENTREPRISE LEVEL
DDD
BUILDING
BLOCKS
* : not DDD but friendly
#DDDREBOOT
ON THE SHOULDERS OF GIANTS
#DDDREBOOT#DDDREBOOT
THANK YOU
ERIC !
#DDDREBOOT
BUT SOMETIMES…
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
AN OPEN COMMUNITY OF PRACTITIONERS
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
AN OPEN COMMUNITY OF PRACTITIONERS
1. POPULARISING DDD BY BEING MORE ACCESSIBLE JARGON
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
AN OPEN COMMUNITY OF PRACTITIONERS
1. POPULARISING DDD BY BEING MORE ACCESSIBLE JARGON
2. CONTINUE TO ENRICH THE DDD TOOLBOX
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
1. POPULARISING DDD BY BEING MORE ACCESSIBLE JARGON
2. CONTINUE TO ENRICH THE DDD TOOLBOX
AN OPEN COMMUNITY OF PRACTITIONERS
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
@DDDreboot +
ALL TOGETHER
LET’S MAKE DDD MAINSTREAM
#DDDREBOOT#DDDREBOOT
LET’S REBOOT DDD!
1. POPULARISING DDD BY BEING MORE ACCESSIBLE JARGON
2. CONTINUE TO ENRICH THE DDD TOOLBOX
@DDDreboot +
AN OPEN COMMUNITY OF PRACTITIONERS

Contenu connexe

Tendances

Tendances (20)

Event storming recipes
Event storming recipesEvent storming recipes
Event storming recipes
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
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
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Clean code
Clean codeClean code
Clean code
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English version
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
Testing RESTful Webservices using the REST-assured framework
Testing RESTful Webservices using the REST-assured frameworkTesting RESTful Webservices using the REST-assured framework
Testing RESTful Webservices using the REST-assured framework
 
Mistakes - I’ve made a few. Blunders in event-driven architecture | Simon Aub...
Mistakes - I’ve made a few. Blunders in event-driven architecture | Simon Aub...Mistakes - I’ve made a few. Blunders in event-driven architecture | Simon Aub...
Mistakes - I’ve made a few. Blunders in event-driven architecture | Simon Aub...
 
Concurrency, Parallelism And IO
Concurrency,  Parallelism And IOConcurrency,  Parallelism And IO
Concurrency, Parallelism And IO
 
BDD for APIs
BDD for APIsBDD for APIs
BDD for APIs
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in php
 
Microservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and KafkaMicroservices Part 3 Service Mesh and Kafka
Microservices Part 3 Service Mesh and Kafka
 
Clean code
Clean codeClean code
Clean code
 
Asynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFutureAsynchronous API in Java8, how to use CompletableFuture
Asynchronous API in Java8, how to use CompletableFuture
 
Code Review Best Practices
Code Review Best PracticesCode Review Best Practices
Code Review Best Practices
 

En vedette

En vedette (20)

.NET Inside - Microservices, .NET Core e Serverless
.NET Inside - Microservices, .NET Core e Serverless.NET Inside - Microservices, .NET Core e Serverless
.NET Inside - Microservices, .NET Core e Serverless
 
TDD is dead?!? Let's do an autospy (ncrafts.io)
TDD is dead?!? Let's do an autospy (ncrafts.io)TDD is dead?!? Let's do an autospy (ncrafts.io)
TDD is dead?!? Let's do an autospy (ncrafts.io)
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
Async await...oh wait!
Async await...oh wait!Async await...oh wait!
Async await...oh wait!
 
Culture craft humantalks
Culture craft humantalksCulture craft humantalks
Culture craft humantalks
 
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with SagasQCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
QCONSF - ACID Is So Yesterday: Maintaining Data Consistency with Sagas
 
Faible latence haut debit Devoxx FR 2014
Faible latence haut debit Devoxx FR 2014Faible latence haut debit Devoxx FR 2014
Faible latence haut debit Devoxx FR 2014
 
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with DockerThe Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
The Velvet Revolution: Modernizing Traditional ASP.NET Apps with Docker
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
 
Docker and Windows: The State of the Union
Docker and Windows: The State of the UnionDocker and Windows: The State of the Union
Docker and Windows: The State of the Union
 
Decouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event stormingDecouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event storming
 
Sortir de notre zone de confort
Sortir de notre zone de confortSortir de notre zone de confort
Sortir de notre zone de confort
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
Coder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architectureCoder sans peur du changement avec la meme pas mal hexagonal architecture
Coder sans peur du changement avec la meme pas mal hexagonal architecture
 
Windows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should CareWindows Containers and Docker: Why You Should Care
Windows Containers and Docker: Why You Should Care
 
Faible latence, haut debit PerfUG (Septembre 2014)
Faible latence, haut debit PerfUG (Septembre 2014)Faible latence, haut debit PerfUG (Septembre 2014)
Faible latence, haut debit PerfUG (Septembre 2014)
 
CQRS without event sourcing
CQRS without event sourcingCQRS without event sourcing
CQRS without event sourcing
 
Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...Solving distributed data management problems in a microservice architecture (...
Solving distributed data management problems in a microservice architecture (...
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
 
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
 

Similaire à Ddd reboot (english version)

Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDEffective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
CODEiD PHP Community
 

Similaire à Ddd reboot (english version) (20)

Conquering International Search Markets: #InternationalSEO at #SMConnect
Conquering International Search Markets: #InternationalSEO at #SMConnectConquering International Search Markets: #InternationalSEO at #SMConnect
Conquering International Search Markets: #InternationalSEO at #SMConnect
 
Codemotion Milan 2018 - AI with a devops mindset: experimentation, sharing an...
Codemotion Milan 2018 - AI with a devops mindset: experimentation, sharing an...Codemotion Milan 2018 - AI with a devops mindset: experimentation, sharing an...
Codemotion Milan 2018 - AI with a devops mindset: experimentation, sharing an...
 
Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...
Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...
Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDD
 
MHI PRESENTATION WITH DUE DILIGENCE PARTNERS - STEVE EDEL
MHI PRESENTATION WITH DUE DILIGENCE PARTNERS - STEVE EDELMHI PRESENTATION WITH DUE DILIGENCE PARTNERS - STEVE EDEL
MHI PRESENTATION WITH DUE DILIGENCE PARTNERS - STEVE EDEL
 
How to Grow your Organic Search Traffic in International Markets #ConnectaBern
How to Grow your Organic Search Traffic in International Markets #ConnectaBernHow to Grow your Organic Search Traffic in International Markets #ConnectaBern
How to Grow your Organic Search Traffic in International Markets #ConnectaBern
 
Codemotion Berlin 2018 - AI with a devops mindset: experimentation, sharing a...
Codemotion Berlin 2018 - AI with a devops mindset: experimentation, sharing a...Codemotion Berlin 2018 - AI with a devops mindset: experimentation, sharing a...
Codemotion Berlin 2018 - AI with a devops mindset: experimentation, sharing a...
 
Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...
Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...
Thiago de Faria - AI with a devops mindset - experimentation, sharing and eas...
 
The SEO Guide to Migrate International Websites #SMProfs
The SEO Guide to Migrate International Websites #SMProfsThe SEO Guide to Migrate International Websites #SMProfs
The SEO Guide to Migrate International Websites #SMProfs
 
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDEffective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
 
resolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bddresolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bdd
 
Using BDD to Solve communication problems
Using BDD to Solve communication problemsUsing BDD to Solve communication problems
Using BDD to Solve communication problems
 
Designing for Real-Time Marketing - SXSW 2013
Designing for Real-Time Marketing - SXSW 2013Designing for Real-Time Marketing - SXSW 2013
Designing for Real-Time Marketing - SXSW 2013
 
devopsdays Kiel 2018 - Can the AI hype & ML algorithms harm your devops initi...
devopsdays Kiel 2018 - Can the AI hype & ML algorithms harm your devops initi...devopsdays Kiel 2018 - Can the AI hype & ML algorithms harm your devops initi...
devopsdays Kiel 2018 - Can the AI hype & ML algorithms harm your devops initi...
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
Lecture about "Enterprise Architecture @ ING" given at Solvay Brussels School...
Lecture about "Enterprise Architecture @ ING" given at Solvay Brussels School...Lecture about "Enterprise Architecture @ ING" given at Solvay Brussels School...
Lecture about "Enterprise Architecture @ ING" given at Solvay Brussels School...
 
BDD in Action - Devoxx 2014
BDD in Action - Devoxx 2014BDD in Action - Devoxx 2014
BDD in Action - Devoxx 2014
 
BrightonSEO 2016 - Domain Strategies for International Success
BrightonSEO 2016 - Domain Strategies for International SuccessBrightonSEO 2016 - Domain Strategies for International Success
BrightonSEO 2016 - Domain Strategies for International Success
 
How to Develop International SEO Audits for Success #IntSS
How to Develop International SEO Audits for Success #IntSSHow to Develop International SEO Audits for Success #IntSS
How to Develop International SEO Audits for Success #IntSS
 
3 Steps to Establish a Successful International Digital Marketing Process #MN...
3 Steps to Establish a Successful International Digital Marketing Process #MN...3 Steps to Establish a Successful International Digital Marketing Process #MN...
3 Steps to Establish a Successful International Digital Marketing Process #MN...
 

Plus de Thomas Pierrain

Plus de Thomas Pierrain (17)

The scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarineThe scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarine
 
Hexagonal And Beyond
Hexagonal And BeyondHexagonal And Beyond
Hexagonal And Beyond
 
La scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaireLa scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaire
 
De l'autre côté du miroir
De l'autre côté du miroirDe l'autre côté du miroir
De l'autre côté du miroir
 
eXtreme
eXtremeeXtreme
eXtreme
 
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDDWrite Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD
 
Beyond Hexagonal architecture
Beyond Hexagonal architectureBeyond Hexagonal architecture
Beyond Hexagonal architecture
 
The 9 rules of debugging
The 9 rules of debuggingThe 9 rules of debugging
The 9 rules of debugging
 
Hexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shellHexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shell
 
Une nuit dans l'hexagone
Une nuit dans l'hexagoneUne nuit dans l'hexagone
Une nuit dans l'hexagone
 
Equiper sa voie
Equiper sa voieEquiper sa voie
Equiper sa voie
 
As time goes by (episode 2)
As time goes by (episode 2)As time goes by (episode 2)
As time goes by (episode 2)
 
Et si on parlait Éthique ?
Et si on parlait Éthique ?Et si on parlait Éthique ?
Et si on parlait Éthique ?
 
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettreL'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
 
Legacy club (english version)
Legacy club (english version)Legacy club (english version)
Legacy club (english version)
 
The art of Software Design
The art of Software DesignThe art of Software Design
The art of Software Design
 
Culture Craft Devoxx 2015
Culture Craft Devoxx 2015Culture Craft Devoxx 2015
Culture Craft Devoxx 2015
 

Dernier

Final DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manualFinal DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manual
BalamuruganV28
 
Seizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networksSeizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networks
IJECEIAES
 

Dernier (20)

Independent Solar-Powered Electric Vehicle Charging Station
Independent Solar-Powered Electric Vehicle Charging StationIndependent Solar-Powered Electric Vehicle Charging Station
Independent Solar-Powered Electric Vehicle Charging Station
 
NO1 Best Powerful Vashikaran Specialist Baba Vashikaran Specialist For Love V...
NO1 Best Powerful Vashikaran Specialist Baba Vashikaran Specialist For Love V...NO1 Best Powerful Vashikaran Specialist Baba Vashikaran Specialist For Love V...
NO1 Best Powerful Vashikaran Specialist Baba Vashikaran Specialist For Love V...
 
15-Minute City: A Completely New Horizon
15-Minute City: A Completely New Horizon15-Minute City: A Completely New Horizon
15-Minute City: A Completely New Horizon
 
Augmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptxAugmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptx
 
Software Engineering Practical File Front Pages.pdf
Software Engineering Practical File Front Pages.pdfSoftware Engineering Practical File Front Pages.pdf
Software Engineering Practical File Front Pages.pdf
 
UNIT-2 image enhancement.pdf Image Processing Unit 2 AKTU
UNIT-2 image enhancement.pdf Image Processing Unit 2 AKTUUNIT-2 image enhancement.pdf Image Processing Unit 2 AKTU
UNIT-2 image enhancement.pdf Image Processing Unit 2 AKTU
 
Raashid final report on Embedded Systems
Raashid final report on Embedded SystemsRaashid final report on Embedded Systems
Raashid final report on Embedded Systems
 
Worksharing and 3D Modeling with Revit.pptx
Worksharing and 3D Modeling with Revit.pptxWorksharing and 3D Modeling with Revit.pptx
Worksharing and 3D Modeling with Revit.pptx
 
21scheme vtu syllabus of visveraya technological university
21scheme vtu syllabus of visveraya technological university21scheme vtu syllabus of visveraya technological university
21scheme vtu syllabus of visveraya technological university
 
Final DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manualFinal DBMS Manual (2).pdf final lab manual
Final DBMS Manual (2).pdf final lab manual
 
Autodesk Construction Cloud (Autodesk Build).pptx
Autodesk Construction Cloud (Autodesk Build).pptxAutodesk Construction Cloud (Autodesk Build).pptx
Autodesk Construction Cloud (Autodesk Build).pptx
 
What is Coordinate Measuring Machine? CMM Types, Features, Functions
What is Coordinate Measuring Machine? CMM Types, Features, FunctionsWhat is Coordinate Measuring Machine? CMM Types, Features, Functions
What is Coordinate Measuring Machine? CMM Types, Features, Functions
 
Seizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networksSeizure stage detection of epileptic seizure using convolutional neural networks
Seizure stage detection of epileptic seizure using convolutional neural networks
 
Theory of Time 2024 (Universal Theory for Everything)
Theory of Time 2024 (Universal Theory for Everything)Theory of Time 2024 (Universal Theory for Everything)
Theory of Time 2024 (Universal Theory for Everything)
 
Artificial Intelligence in due diligence
Artificial Intelligence in due diligenceArtificial Intelligence in due diligence
Artificial Intelligence in due diligence
 
Research Methodolgy & Intellectual Property Rights Series 1
Research Methodolgy & Intellectual Property Rights Series 1Research Methodolgy & Intellectual Property Rights Series 1
Research Methodolgy & Intellectual Property Rights Series 1
 
Dynamo Scripts for Task IDs and Space Naming.pptx
Dynamo Scripts for Task IDs and Space Naming.pptxDynamo Scripts for Task IDs and Space Naming.pptx
Dynamo Scripts for Task IDs and Space Naming.pptx
 
handbook on reinforce concrete and detailing
handbook on reinforce concrete and detailinghandbook on reinforce concrete and detailing
handbook on reinforce concrete and detailing
 
Maximizing Incident Investigation Efficacy in Oil & Gas: Techniques and Tools
Maximizing Incident Investigation Efficacy in Oil & Gas: Techniques and ToolsMaximizing Incident Investigation Efficacy in Oil & Gas: Techniques and Tools
Maximizing Incident Investigation Efficacy in Oil & Gas: Techniques and Tools
 
engineering chemistry power point presentation
engineering chemistry  power point presentationengineering chemistry  power point presentation
engineering chemistry power point presentation
 

Ddd reboot (english version)