Where to divide.
WHAT DETERMINES A GOOD BOUNDARY
Data ownership Rate of change Team ownership Business capability
WHAT A SERVICE SHOULD OWN
Its own data, exclusively.
WHY EXCLUSIVELY
Shared databases couple services, and defeat the point entirely.
WHAT THAT MEANS
No service reads another's tables directly.
WHAT THEY DO INSTEAD
Call the owning service, or consume events it publishes.
WHAT INDICATES A BAD BOUNDARY
Services that must always be deployed together Frequent calls between two services for one operation A change requiring modifications to several services
WHAT TO DO ABOUT THAT
Reconsider the boundary, and possibly merge.
WHAT TO AVOID
Splitting by technical layer rather than by capability Services too small to justify their overhead Circular dependencies between services
WHAT TO ESTABLISH FOR EACH SERVICE
What it owns What it depends on What it publishes Who maintains it
WHAT TO DOCUMENT
The map of services and their relationships.