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!
  • 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)