Core Idea
Synchronous communication is an interaction pattern where a caller sends a request and blocks execution, waiting for a response before proceeding—creating temporal coupling between caller and receiver.
Definition
Synchronous communication is an interaction pattern where a caller sends a request and blocks execution, waiting for a response before proceeding. Both parties must be available simultaneously—the caller cannot continue until the receiver returns a result. This creates a direct dependency on receiver availability and response time.
Underpins REST APIs, gRPC, database queries, and traditional function calls.
Key Characteristics
- Blocking operation: Caller suspends execution and waits, unable to perform other work
- Temporal coupling: Both parties must be available simultaneously—receiver unavailability means caller failure
- Additive latency: Response time equals the sum of all service latencies in the call chain
- Strong consistency: Immediate feedback enables atomic-like behavior from the caller’s perspective
- Simpler mental model: Request-response flows are easier to understand and debug
- Error propagation: Downstream failures immediately propagate back as exceptions
Example
Payment processing: An e-commerce checkout calls a payment gateway and waits for confirmation before completing the order—immediate consistency required.
Why It Matters
Service A’s response time becomes A’s latency plus B’s latency plus network overhead. If B is slow or unavailable, A degrades immediately. This cascades—any single failure can propagate throughout the call chain.
Correct choice when immediate feedback is essential: validating user input, checking balances, retrieving data to render a page. For background operations where eventual consistency is acceptable, Asynchronous-Communication is preferred.
Related Concepts
-
Dynamic-Coupling (synchronous calls create tight runtime coupling)
-
Coupling (parent concept covering all dependency types)
-
Software Architecture - The Hard Parts - Ford, Richards, Sadalage & Dehghani - 2022 (primary source material)
-
Asynchronous-Communication - Contrasting pattern enabling decoupling
-
Availability - Quality affected by synchronous dependencies
-
Fault-Tolerance - Resilience impacted by synchronous call chains
-
Orchestration - Workflow pattern often using synchronous coordination
-
Scalability - Growth pattern constrained by synchronous dependencies
-
Elasticity - Burst handling affected by synchronous capacity coupling
Sources
-
Ford, Neal; Richards, Mark; Sadalage, Pramod; Dehghani, Zhamak (2022). Software Architecture: The Hard Parts - Modern Trade-Off Analyses for Distributed Architectures. O’Reilly Media. ISBN: 978-1-492-08689-5.
- Chapter 8: Communication
- Available: https://www.oreilly.com/library/view/software-architecture-the/9781492086888/
-
GeeksforGeeks (2024). “Synchronous vs. Asynchronous Communication - System Design.”
-
Platform Engineers (2024). “A Deep Dive into Communication Styles for Microservices: REST vs. gRPC vs. Message Queues.” Medium.
-
Microsoft Learn (2024). “Interservice communication in microservices - Azure Architecture Center.”
-
TechTarget (2024). “Synchronous vs asynchronous communications: A complete guide.”
-
Three Dots Labs (2024). “Synchronous vs Asynchronous Architecture.”
Note
This note was researched and drafted with AI. How these notes are written →