Gayathri Thiyagarajan Lead Software Engineer - Capgemini
Andrew Harmel-Law Principal Software Engineer - Capgemini
Eric Evans’ Domain Driven Design (DDD) is a core text for all developers, and it's experiencing a renaissance due to the rise of microservices. But are most of us really applying DDD when we're "doing" distributed systems development? Gayathri and Andrew are going to argue that we're not, but we should be – we need to recalibrate.
We'll begin by laying out what DDD means to us based on experiences we've had building microservices with distributed teams over the last two years. We'll touch lightly on the well-understood elements such as "ubiquitous language", "intention revealing interfaces" and "hands on architects", before clarifying and explaining the much misapplied concept of "bounded contexts".
Finally we'll draw up in front of the largely ignored ones, such as the many patterns for inter-team communication which derive from "context maps". As we move away from the well-understood to the disregarded, we'll illustrate why these later ones are by far the most important to successful microservice-based projects.
We'll explain why they matter, and the bene ts you'll see from applying them. You will leave ready to apply the full power of DDD, and you'll have more fun as you do it.
13. “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
14. 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
50. 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
51. 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
52. 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
53. 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
54. 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
72. 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
73. 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
74. 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
75. 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
76. And Finally...
cc: oatsy40 - https://www.flickr.com/photos/68089229@N06
@gaythu_rajan / @al94781#harnessing_ddd