SlideShare a Scribd company logo
Harnessing Domain Driven Design
Gayathri Thiyagarajan
Lead Software Engineer Capgemini
Andrew Harmel
Law Principal Software Engineer Capgemini
@YourTwitterHandle#YourSessionHashtag
Harnessing Domain Driven
Design for Distributed Systems
Gayathri Thiyagarajan &
Andrew Harmel-Law,
Capgemini UK
http://capgemini.github.io
@gaythu_rajan / @al94781#harnessing_ddd
cc: kennymatic - https://www.flickr.com/photos/99472898@N00
@gaythu_rajan / @al94781#harnessing_ddd
Who are we?
Who are we?
@gaythu_rajan / @al94781#harnessing_ddd
“Microservice”?
@gaythu_rajan / @al94781#harnessing_ddd
“Microservice”? (cont.)
@gaythu_rajan / @al94781#harnessing_ddd
“Microservice”? (cont.)
@gaythu_rajan / @al94781#harnessing_ddd
“Microservice”? (cont.)
@gaythu_rajan / @al94781#harnessing_ddd
“Microservice”? (cont.)
@gaythu_rajan / @al94781#harnessing_ddd
“Microservice”? (cont.)
@gaythu_rajan / @al94781#harnessing_ddd
Microservices ROCK!
cc: RaeAllen - https://www.flickr.com/photos/30628871@N00
@gaythu_rajan / @al94781#harnessing_ddd
Microservices are HARD
@gaythu_rajan / @al94781#harnessing_ddd
“Getting service boundaries wrong
can result in having to make lots
of changes in service-service
collaboration. An expensive
operation.”
from Sam Newman, “Building Microservices”
(section: When shouldn’t you use Microservices)
Boundaries are HARDEST
@gaythu_rajan / @al94781#harnessing_ddd
Microservices LOVE DDD
cc: {AndreaRenee} - https://www.flickr.com/photos/30282864@N02
“Despite the hype
[microservices] probably giv[e]
us the best environment we
have ever had for doing
Domain-Driven Design”
(Interview with Eric Evans at 2015 DDD Exchange)
@gaythu_rajan / @al94781#harnessing_ddd
cc: taberandrew - https://www.flickr.com/photos/88442983@N00
@gaythu_rajan / @al94781#harnessing_ddd
Unfortunately...
Some steps...
@gaythu_rajan / @al94781#harnessing_ddd
cc: marsupium photography - https://www.flickr.com/photos/43405950@N07
The Core
How DDD helps our CODE
cc: Laurence Vagner - https://www.flickr.com/photos/86078191@N00
@gaythu_rajan / @al94781#harnessing_ddd
Ubiquitous Language
cc: mag3737 - https://www.flickr.com/photos/50318388@N00
@gaythu_rajan / @al94781#harnessing_ddd
Hands-On Modellers
cc: jovike - https://www.flickr.com/photos/49503078599@N01
@gaythu_rajan / @al94781#harnessing_ddd
The Misapplied
How DDD helps our overall Architecture
cc: juhansonin - https://www.flickr.com/photos/38869431@N00
@gaythu_rajan / @al94781#harnessing_ddd
The Important Bits
• Models
• Aggregates
• Contexts
• Bounded Contexts
• Context Maps
@gaythu_rajan / @al94781#harnessing_ddd
Shared Payment Services
Our Case Study:
cc: Khánh Hmoong - https://www.flickr.com/photos/7997148@N05
@gaythu_rajan / @al94781#harnessing_ddd
Shared Payment Services
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Shared Payment Services
@gaythu_rajan / @al94781#harnessing_ddd
Shared Payment Services
@gaythu_rajan / @al94781#harnessing_ddd
Shared Payment Services
Models
cc: Rob Swatski - https://www.flickr.com/photos/50946274@N02
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Aggregates
cc: J-W Brown - https://www.flickr.com/photos/13797487@N00
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Contexts
cc: petitshoo - https://www.flickr.com/photos/29426084@N00
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Bounded Contexts
cc: bryce_edwards - https://www.flickr.com/photos/98185064@N00
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Context Maps
cc: roger4336 - https://www.flickr.com/photos/24736216@N07
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Why Aggregates?
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Aggregate == Microservice
@gaythu_rajan / @al94781#harnessing_ddd
Aggregate == Microservice
But, Aggregate !=
Microservice (not always)
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
But, Aggregate !=
Microservice (not always)
@gaythu_rajan / @al94781#harnessing_ddd
1. Draw a Model and begin to implement it
cc: Muffet - https://www.flickr.com/photos/53133240@N00
An Approach
@gaythu_rajan / @al94781#harnessing_ddd
1. Draw a Model and begin to implement it
2. As you draw it and code it, listen to the Language and
cultivate your Model accordingly
cc: Muffet - https://www.flickr.com/photos/53133240@N00
An Approach
@gaythu_rajan / @al94781#harnessing_ddd
1. Draw a Model and begin to implement it
2. As you draw it and code it, listen to the Language and
cultivate your Model accordingly
3. Identify your Aggregates - these are your starter
Microservices
cc: Muffet - https://www.flickr.com/photos/53133240@N00
An Approach
@gaythu_rajan / @al94781#harnessing_ddd
cc: Muffet - https://www.flickr.com/photos/53133240@N00
An Approach
@gaythu_rajan / @al94781#harnessing_ddd
1. Draw a Model and begin to implement it
2. As you draw it and code it, listen to the Language and
cultivate your Model accordingly
3. Identify your Aggregates - these are your starter
Microservices
4. When you hit pain points (indicated by the Language) split
into different Bounded Contexts to resolve
1. Draw a Model and begin to implement it
2. As you draw it and code it, listen to the Language and
cultivate your Model accordingly
3. Identify your Aggregates - these are your starter
Microservices
4. When you hit pain points (indicated by the Language) split
into different Bounded Contexts to resolve
5. Revisit your Bounded Contexts now you know more about
how each Aggregate - you may end up splitting them
cc: Muffet - https://www.flickr.com/photos/53133240@N00
An Approach
@gaythu_rajan / @al94781#harnessing_ddd
Done?
cc: WarzauWynn - https://www.flickr.com/photos/94246031@N00
@gaythu_rajan / @al94781#harnessing_ddd
The Ignored
How DDD helps our Teams Organise
cc: aha42 | tehaha - https://www.flickr.com/photos/31549162@N05
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Customer-Supplier
Partnership Anti-Corruption Layer
Upstream
Downstream
Shared
Kernel
Separate
Ways
Anti-
Corruption
Layer
Partner-
ship
Conform-
ist
Open
Host
Service
Customer
/
Supplier
ControlOverAssociatedTeams
Communications Commitment / Capability of Teams
@gaythu_rajan / @al94781#harnessing_ddd
Shared
Kernel
Separate
Ways
Anti-
Corruption
Layer
Partner-
ship
Conform-
ist
Open
Host
Service
Customer
/
Supplier
ControlOverAssociatedTeams
Communications Commitment / Capability of Teams
@gaythu_rajan / @al94781#harnessing_ddd
Shared
Kernel
Separate
Ways
Anti-
Corruption
Layer
Partner-
ship
Conform-
ist
Open
Host
Service
Customer
/
Supplier
ControlOverAssociatedTeams
Communications Commitment / Capability of Teams
@gaythu_rajan / @al94781#harnessing_ddd
Upstream/Downstream
cc: archer10 (Dennis) (73M Views) - https://www.flickr.com/photos/22490717@N02
@gaythu_rajan / @al94781#harnessing_ddd
Partnership
cc: practicalowl - https://www.flickr.com/photos/55046645@N00
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Partnership
@gaythu_rajan / @al94781#harnessing_ddd
Customer-Supplier
cc: TheeErin - https://www.flickr.com/photos/27073477@N00
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Customer-Supplier
@gaythu_rajan / @al94781#harnessing_ddd @gaythu_rajan / @al94781#harnessing_ddd
Anti-Corruption Layer
@gaythu_rajan / @al94781#harnessing_ddd
@gaythu_rajan / @al94781#harnessing_ddd
Anti-Corruption Layer
Upstream
Downstream
@gaythu_rajan / @al94781#harnessing_ddd
Done Done
cc: jayneandd - https://www.flickr.com/photos/8180853@N07
@gaythu_rajan / @al94781#harnessing_ddd
Take Home Messages
cc: Manoj Kengudelu - https://www.flickr.com/photos/11767573@N02
• Find the right Microservices - or you’ll pine for
the Monolith
@gaythu_rajan / @al94781#harnessing_ddd
Take Home Messages
cc: Manoj Kengudelu - https://www.flickr.com/photos/11767573@N02
• Find the right Microservices - or you’ll pine for
the Monolith
• Don’t get confused about BCs - they will fall
out if you listen to the Language
@gaythu_rajan / @al94781#harnessing_ddd
Take Home Messages
• Find the right Microservices - or you’ll pine for
the Monolith
• Don’t get confused about BCs - they will fall
out if you listen to the Language
• Organise around your services better - apply
the Strategic Patterns
cc: Manoj Kengudelu - https://www.flickr.com/photos/11767573@N02
@gaythu_rajan / @al94781#harnessing_ddd
Take Home Messages
• Find the right Microservices - or you’ll pine for
the Monolith
• Don’t get confused about BCs - they will fall
out if you listen to the Language
• Organise around your services better - apply
the Strategic Patterns
• Be inspired to do more Domain Driven Design
cc: Manoj Kengudelu - https://www.flickr.com/photos/11767573@N02
@gaythu_rajan / @al94781#harnessing_ddd
And Finally...
cc: oatsy40 - https://www.flickr.com/photos/68089229@N06
@gaythu_rajan / @al94781#harnessing_ddd
Questions Please
cc: Derek Bridges - https://www.flickr.com/photos/84949728@N00
@gaythu_rajan / @al94781#harnessing_ddd
Oh, and we (Capgemini ) are hiring!
(visit bit.ly/cg-jvm-jobs-ddd)
cc: ptrlx - https://www.flickr.com/photos/58615912@N05
@gaythu_rajan / @al94781#harnessing_ddd
Read More...
• https://capgemini.github.io/architecture/
microservices-reality-check/
• https://capgemini.github.io/architecture/
why-microservices-are-right-for-us-pt1/
• https://capgemini.github.io/architecture/
microservices-like-change/
• https://capgemini.github.io/architecture/
microservices-gotchas/
cc: Manoj Kengudelu - https://www.flickr.com/photos/11767573@N02
@gaythu_rajan / @al94781#harnessing_ddd

More Related Content

PPTX
Ddd cqrs - Forat Latif
PPTX
Agile Yaklaşımlar
PDF
BTS Education - Du học hè Philippines 2017
PDF
Rural Hospital Turnaround Case Example
PDF
DDD Basics: Bounded Contexts, Modelling - Kortrijk Edition
PDF
Strategic Appplication Development with Domain-Driven Design (DDD)
PPTX
DDD Modeling Workshop
PPTX
Inversores
Ddd cqrs - Forat Latif
Agile Yaklaşımlar
BTS Education - Du học hè Philippines 2017
Rural Hospital Turnaround Case Example
DDD Basics: Bounded Contexts, Modelling - Kortrijk Edition
Strategic Appplication Development with Domain-Driven Design (DDD)
DDD Modeling Workshop
Inversores

Viewers also liked (19)

PDF
Common ddd pitfalls
PDF
DDD Basics - Context mapping
PDF
Solar PV - Environmental Due Diligence
PPTX
The Accessible Office: Making Your Documents More Accessible to Users with Di...
PPTX
Applying Domain-Driven Design to APIs and Microservices - Austin API Meetup
KEY
Strategic design using ddd
PDF
gtFace: Salesforce (presentation)
PDF
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
PDF
From legacy to DDD (slides for the screencast)
PDF
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
PDF
Ddd reboot (english version)
PDF
Domain Driven Design
PDF
Evolving legacy to microservices and ddd
PDF
I T.A.K.E. talk: "When DDD meets FP, good things happen"
PPTX
Domain driven design
PPTX
Akka Clusterの耐障害設計
PDF
CQRS and Event Sourcing with Akka, Cassandra and RabbitMQ
PPTX
Node.js'e Hızlı Bir Bakış
PDF
Domain Driven Design Development Spring Portfolio
Common ddd pitfalls
DDD Basics - Context mapping
Solar PV - Environmental Due Diligence
The Accessible Office: Making Your Documents More Accessible to Users with Di...
Applying Domain-Driven Design to APIs and Microservices - Austin API Meetup
Strategic design using ddd
gtFace: Salesforce (presentation)
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
From legacy to DDD (slides for the screencast)
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Ddd reboot (english version)
Domain Driven Design
Evolving legacy to microservices and ddd
I T.A.K.E. talk: "When DDD meets FP, good things happen"
Domain driven design
Akka Clusterの耐障害設計
CQRS and Event Sourcing with Akka, Cassandra and RabbitMQ
Node.js'e Hızlı Bir Bakış
Domain Driven Design Development Spring Portfolio
Ad

Similar to Harnessing Domain Driven Design (20)

PDF
Principles of Microservices - NDC 2014
PPTX
Full stack automation - TIAD 2015
PPTX
TIAD : Full stack automation
PPTX
IMGeospatial: FME World Tour 2018 Nottingham: Welcome
PDF
ML Zoomcamp 2.1 - Car Price Prediction Project
PPTX
IMGeospatial: FME World Tour 2018 London: Welcome
PPTX
Implementing ChatOps using Microsoft Power Platform - M365 Saturday Ahmedabad...
PPTX
From fire fighting to fire insurance
PDF
A Taxonomy of Clustering, or, No Container is an Island
PPT
Five Whys - Devoxx UK 2014
PDF
Principles of microservices XP Days Ukraine
PDF
AT&T Hack-o-ween
PDF
Velocity London - Chaos Engineering Bootcamp
PDF
JoomlaDay Conference_September 2023 PDF.pdf
PPTX
DevOps Pipelines and Metrics Driven Feedback Loops
PDF
Data Pipeline Plumbing
PDF
AT&T IoT Hackathon - Dallas (hosted by The DEC)
PDF
Fall 22: "From Kubernetes to PaaS to... err, what's next"
PDF
SRECon Europe - Chaos Engineering Bootcamp | August 2018
PDF
Challenges of building a search engine like web rendering service
Principles of Microservices - NDC 2014
Full stack automation - TIAD 2015
TIAD : Full stack automation
IMGeospatial: FME World Tour 2018 Nottingham: Welcome
ML Zoomcamp 2.1 - Car Price Prediction Project
IMGeospatial: FME World Tour 2018 London: Welcome
Implementing ChatOps using Microsoft Power Platform - M365 Saturday Ahmedabad...
From fire fighting to fire insurance
A Taxonomy of Clustering, or, No Container is an Island
Five Whys - Devoxx UK 2014
Principles of microservices XP Days Ukraine
AT&T Hack-o-ween
Velocity London - Chaos Engineering Bootcamp
JoomlaDay Conference_September 2023 PDF.pdf
DevOps Pipelines and Metrics Driven Feedback Loops
Data Pipeline Plumbing
AT&T IoT Hackathon - Dallas (hosted by The DEC)
Fall 22: "From Kubernetes to PaaS to... err, what's next"
SRECon Europe - Chaos Engineering Bootcamp | August 2018
Challenges of building a search engine like web rendering service
Ad

More from Capgemini (20)

PPTX
Top Healthcare Trends 2022
PPTX
Top P&C Insurance Trends 2022
PPTX
Commercial Banking Trends book 2022
PPTX
Top Trends in Payments 2022
PPTX
Top Trends in Wealth Management 2022
PPTX
Retail Banking Trends book 2022
PPTX
Top Life Insurance Trends 2022
PPTX
キャップジェミニ、あなたの『RISE WITH SAP』のパートナーです
PPTX
Property & Casualty Insurance Top Trends 2021
PPTX
Life Insurance Top Trends 2021
PPTX
Top Trends in Commercial Banking: 2021
PPTX
Top Trends in Wealth Management: 2021
PPTX
Top Trends in Payments: 2021
PPTX
Health Insurance Top Trends 2021
PPTX
Top Trends in Retail Banking: 2021
PDF
Capgemini’s Connected Autonomous Planning
PPTX
Top Trends in Retail Banking: 2020
PPTX
Top Trends in Life Insurance: 2020
PPTX
Top Trends in Health Insurance: 2020
PPTX
Top Trends in Payments: 2020
Top Healthcare Trends 2022
Top P&C Insurance Trends 2022
Commercial Banking Trends book 2022
Top Trends in Payments 2022
Top Trends in Wealth Management 2022
Retail Banking Trends book 2022
Top Life Insurance Trends 2022
キャップジェミニ、あなたの『RISE WITH SAP』のパートナーです
Property & Casualty Insurance Top Trends 2021
Life Insurance Top Trends 2021
Top Trends in Commercial Banking: 2021
Top Trends in Wealth Management: 2021
Top Trends in Payments: 2021
Health Insurance Top Trends 2021
Top Trends in Retail Banking: 2021
Capgemini’s Connected Autonomous Planning
Top Trends in Retail Banking: 2020
Top Trends in Life Insurance: 2020
Top Trends in Health Insurance: 2020
Top Trends in Payments: 2020

Recently uploaded (20)

PDF
oil_refinery_presentation_v1 sllfmfls.pdf
PPTX
MERISTEMATIC TISSUES (MERISTEMS) PPT PUBLIC
PPTX
Human Mind & its character Characteristics
PPTX
Project and change Managment: short video sequences for IBA
PPTX
The Effect of Human Resource Management Practice on Organizational Performanc...
PPTX
Anesthesia and it's stage with mnemonic and images
PPTX
Primary and secondary sources, and history
PPTX
nose tajweed for the arabic alphabets for the responsive
PDF
COLEAD A2F approach and Theory of Change
DOCX
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
PPTX
Effective_Handling_Information_Presentation.pptx
PPTX
chapter8-180915055454bycuufucdghrwtrt.pptx
PPTX
Intro to ISO 9001 2015.pptx wareness raising
PDF
Presentation1 [Autosaved].pdf diagnosiss
DOC
学位双硕士UTAS毕业证,墨尔本理工学院毕业证留学硕士毕业证
DOCX
ENGLISH PROJECT FOR BINOD BIHARI MAHTO KOYLANCHAL UNIVERSITY
PPTX
Introduction-to-Food-Packaging-and-packaging -materials.pptx
PPTX
worship songs, in any order, compilation
PPTX
water for all cao bang - a charity project
PPTX
Self management and self evaluation presentation
oil_refinery_presentation_v1 sllfmfls.pdf
MERISTEMATIC TISSUES (MERISTEMS) PPT PUBLIC
Human Mind & its character Characteristics
Project and change Managment: short video sequences for IBA
The Effect of Human Resource Management Practice on Organizational Performanc...
Anesthesia and it's stage with mnemonic and images
Primary and secondary sources, and history
nose tajweed for the arabic alphabets for the responsive
COLEAD A2F approach and Theory of Change
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
Effective_Handling_Information_Presentation.pptx
chapter8-180915055454bycuufucdghrwtrt.pptx
Intro to ISO 9001 2015.pptx wareness raising
Presentation1 [Autosaved].pdf diagnosiss
学位双硕士UTAS毕业证,墨尔本理工学院毕业证留学硕士毕业证
ENGLISH PROJECT FOR BINOD BIHARI MAHTO KOYLANCHAL UNIVERSITY
Introduction-to-Food-Packaging-and-packaging -materials.pptx
worship songs, in any order, compilation
water for all cao bang - a charity project
Self management and self evaluation presentation

Harnessing Domain Driven Design