Synchrony Levels Across Boundaries
Choose appropriate call semantics based on latency, reliability, and coupling needs.

When services interact across boundaries, selecting the right synchrony level—synchronous, asynchronous, or eventual—balances responsiveness, durability, and complexity. Synchronous calls (e.g., HTTP/HTTPS requests) wait for immediate responses and suit low-latency, tightly coupled operations. Asynchronous calls defer work via messages queues or events, decoupling services and tolerating failures better.
Synchronous communication is simpler to reason about but exposes callers to latency and cascading failures if the callee is slow or down. Asynchronous methods reduce coupling and improve scalability, especially for fire-and-forget tasks like sending notifications or batch processing. Eventual consistency is appropriate when data consistency can be relaxed temporarily, such as analytics updates or cache warming.
A hybrid approach is often best: synchronously acknowledge an operation immediately (e.g., return a 202 Accepted with a job ID) while processing the workload asynchronously in the background. This prevents callers from blocking on slow work and gives visibility into operation status via polling or callbacks. Choose based on SLAs, tolerance for delay, and how critical real-time feedback is.
Key points
- Synchronous: immediate response, tight coupling
- Asynchronous: deferred work, looser coupling
- Hybrid: quick ack + background processing