Design Fundamentals • Communication PatternsEasy⏱️ ~3 min
Synchronous vs Asynchronous Communication: Temporal Coupling and Latency Trade Offs
Definition
Communication patterns describe how services in a distributed system exchange information. The two fundamental approaches are synchronous (caller waits for response) and asynchronous (caller continues without waiting). This choice affects latency, coupling, failure propagation, and scalability of your entire system.
💡 Key Takeaways
✓Netflix allocates 10 to 50 milliseconds per internal hop to maintain end user p95 latencies under a few hundred milliseconds; synchronous fan out to even 5 to 10 services can exceed user experience budgets without hedging or fallbacks
✓LinkedIn publishes over 7 trillion Kafka messages daily with intra datacenter latencies in low milliseconds; asynchronous messaging decouples producer availability from consumer processing and smooths traffic bursts during regional spikes
✓Synchronous calls provide immediate results and strong sequencing but propagate failures; a single slow dependency cascades into timeouts and retries across all callers, requiring circuit breakers and bulkheads for isolation
✓Asynchronous patterns require at least once delivery handling with idempotency keys or versioned upserts; duplicate and out of order messages are inevitable under consumer restarts and partition rebalancing
✓Use synchronous when you need immediate feedback and can afford tight coupling (payments, authorization); use asynchronous when you need high fan out, burst absorption, and can design UX around eventual consistency (notifications, replication, analytics)
✓Observability is harder in async systems; correlation IDs, causality metadata, and monitoring of queue depths, consumer lag, and redelivery counts become mandatory to debug distributed flows
📌 Interview Tips
1Netflix API gateway handles millions of requests per second at peak; internal services use client side load balancing with circuit breakers that execute billions of isolated command executions daily to contain tail latencies during dependency brownouts
2Uber propagates deadlines through synchronous RPC chains for trip creation and pricing to keep p95 under 100ms, while publishing location updates asynchronously to decouple hot paths from downstream fraud detection and analytics processing
3LinkedIn uses Kafka pub sub to fan out profile updates to feed generation, notifications, search indexing, and analytics; each consumer maintains its own offset and processes with seconds of lag under SLO without blocking the profile write path