Boundaries, contracts, and integration styles that survive contact with a real organisation.
Monolith First, Split on Evidence
Distributed systems are a tax you pay for organisational scale, not a design goal.
Service Boundaries That Survive Reorgs
Draw boundaries around what changes together and who owns it, not around nouns in the domain.
Synchronous vs Asynchronous Integration
The caller's behaviour while waiting decides this, not fashion or throughput.
API Contracts and Versioning
A contract lets two teams move at different speeds. Without one, every change is a coordination meeting.
Idempotency and Retries
Anything that can be retried will be retried. Design for the duplicate, because it is coming.