Search for ’natural folding lines’ in the domain Try to find the “natural folding lines” between areas in the domain. how: ask domain experts: “Can you imagine that changing data x ever impact data y” eg. “[hospital] Would the patient changing family name impact which doctor they get treated by” eg. “[webshop] Would changing the description of a product cause the price to change?”
When the domain expert looks at you like
- "You don't get it at all do you?"
Then you know you've got a 'natural folding line'
Technique: Discover service boundaries
-
Apply use cases one by one
-
Grow your data model + messages between
-
Limit the amount of data that needs to be exchanged between services
-
cluster data into services (’needs to be’ together)
-
make a decision
-
most decisions will be wrong
-
every wrong decision will lead you astray
-
do it anyway
-
-
don’t name the clusters!
- only meaningless names allowed for conciseness
- random colors: the green cluster, the purple cluster
- random letters: cluster A, cluster B
- meaningful names attract ‘data related to the name’
- bad!
- even when it does not need to be together
- bad!
- only meaningless names allowed for conciseness
-
once you get stuck with too much coupling, reset (or revisit a clustering decision)
You'll know when you have found the 'right' boundaries.
But you can't predict how many attempts it will take...
Pattern: Global ID share the global ID between services
(src: Course: Advanced Distributed System Design - Udi Dahan)