Rely on infrastructure for discovery/coordination and keep service code simple and failure-aware.
Distributed coordination is where microservices go to die. The more your application logic depends on “who is leader?” and “who owns the lock?”, the more time you’ll spend on incidents.
This section focuses on practical patterns: discovery via registries/DNS, coordination via queues and leases, and keeping state ownership clear so services don’t fight each other.
The Clojure-specific lesson is simple: keep coordination at the edge, keep the core deterministic, and treat distributed calls as unreliable by default.