On this page
What is Synchronous Communication?
What is Asynchronous Communication?
Pros
Cons
When to Use Synchronous vs Asynchronous
How This Comes Up in System Design Interviews
Frequently asked questions
Related Reading
Synchronous vs Asynchronous Communication in System Design Interviews


On This Page
What is Synchronous Communication?
What is Asynchronous Communication?
Pros
Cons
When to Use Synchronous vs Asynchronous
How This Comes Up in System Design Interviews
Frequently asked questions
Related Reading
Synchronous communication means the caller sends a request and waits for the response before doing anything else. Asynchronous communication means the caller sends a message and moves on, and the receiver processes it later.
In a system design interview, this choice decides how your design fails, scales, and recovers. Interviewers ask about it directly, and they expect the trade-off, not just the definition.
A phone call is synchronous: you ask a question and wait for the answer. An email is asynchronous: you send it and carry on with your day.
This post explains both styles, their costs, and when to use each in an interview answer.
What is Synchronous Communication?
Synchronous communication is like a live conversation.
One service sends a request and waits for a response – a blocking call where the caller is on hold until the callee finishes the work, meaning both systems must be available at the same time.
A common example is an API call: Service A calls Service B (say via REST or gRPC ) and can't move on until B sends back the result.
Pros: Synchronous calls are straightforward and feel immediate. The flow is easy to follow – request in, response out – making debugging simpler. It's ideal when an instant answer is needed (like logging in or fetching page data) because the user isn't left waiting.
Cons: Synchronous simplicity comes with a cost. If a downstream service is slow or fails, the whole experience stalls. A chain of sync calls means one hiccup can cascade failures through the system. Under heavy load, synchronous calls tie up resources until completion, which can quickly become a bottleneck.
What is Asynchronous Communication?
Asynchronous communication is like sending a text or email – you send a message and don't wait for an immediate reply.
In system design, it's non-blocking: the sender moves on to other tasks while the request is handled in the background.
Common implementations include message queues or event buses (e.g. RabbitMQ, Kafka; my RabbitMQ vs Kafka vs ActiveMQ guide compares them).
Service A might publish an event or place a message on a queue, and Service B will process it later when it can, instead of A sitting idle.
Pros
Asynchronous communication offers flexibility and resilience. The sender isn't held up, so it can handle other tasks or many requests in parallel.
If a receiving service is slow or offline, the system still works – messages queue up instead of breaking everything.
It's great for scalability; for instance, Netflix uses asynchronous messaging so hundreds of microservices can work independently, enabling massive scale.
Cons
All that flexibility comes at the cost of added complexity.
Without an instant response, data consistency becomes eventual (updates take time to propagate), which can make debugging trickier.
It's harder to trace a user's action through an async system since work is split across queues and background tasks, and errors aren't immediately obvious (you may need retries or dead-letter queues to catch failures).
In short, async trades immediacy for flexibility – you get a more fault-tolerant, elastic system at the expense of more complex management.
When to Use Synchronous vs Asynchronous
Knowing when to use each approach is a crucial skill in system design. Here are some general guidelines:
-
Use synchronous communication for immediate results and user-facing actions. If a user or client needs a result now (e.g. login authentication or payment confirmation), use synchronous calls – especially for quick operations or small systems.
-
Use asynchronous communication for heavy tasks and loose coupling. If a job can be done in the background without the user waiting (sending notifications, generating reports, batch processing), go async. Async shines in distributed systems or microservices where you need to isolate failures and scale easily. For example, an online store could place inventory, payment, and shipping steps into a queue instead of making the user wait for each to finish. The user gets an immediate confirmation while each service works in the background.
In practice, most systems use a mix of both: start simple with sync, then add async as needed for scale or resilience.
The main questions to ask are: do you need the answer immediately, or can it wait?
How much complexity will you trade for more flexibility and fault tolerance?
Mastering synchronous vs asynchronous communication will make you a better system designer and help you in interviews.
If you want to explore these concepts further and see them in action, check out courses by DesignGurus.io like the System Design Fundamentals course, Grokking the System Design Interview, and Grokking the System Design Interview II.
How This Comes Up in System Design Interviews
The question rarely arrives as "define asynchronous communication". It arrives inside a design:
-
"Why did you put a queue there?" Answer with the trade-off: the caller stops waiting, spikes get absorbed, and a slow consumer no longer blocks the user. The cost is eventual consistency and harder debugging.
-
"What happens if the payment service is down?" A synchronous chain fails the whole request. An asynchronous design queues the work and retries it, so name the queue, the retry policy, and the dead-letter queue (the holding place for messages that keep failing).
-
"Where would you keep it synchronous?" Anywhere the user needs the result to continue: login, checkout confirmation, loading a page. Saying this shows judgment, not just enthusiasm for queues.
Frequently asked questions
What is the difference between synchronous and asynchronous communication in system design? Synchronous means the caller blocks until the response arrives, so both services must be available at the same time. Asynchronous means the caller hands the message to a queue or broker and continues, and the receiver processes it later.
Is a REST API synchronous or asynchronous? A plain REST call is synchronous: the client waits for the HTTP response. You make it asynchronous by returning immediately (for example, a 202 Accepted status) and doing the work in the background, usually through a message queue.
When should I use asynchronous communication in a microservices design? Use it for work the user does not need to wait for: notifications, report generation, order fulfillment steps, and fan-out to many services. It isolates failures and absorbs traffic spikes.
What are the downsides of asynchronous communication? Eventual consistency, harder tracing and debugging, and more infrastructure to run. You also need retries, idempotent consumers (consumers that can process the same message twice safely), and dead-letter queues for failures.
Related Reading
What our users say
MO JAFRI
The courses which have "grokking" before them, are exceptionally well put together! These courses magically condense 3 years of CS in short bite-size courses and lectures (I have tried Grokking System Design Interview, OODI, and Coding patterns). The Grokking courses are godsent, to be honest.
Steven Zhang
Just wanted to say thanks for your Grokking the system design interview resource (https://lnkd.in/g4Wii9r7) - it helped me immensely when I was interviewing from Tableau (very little system design exp) and helped me land 18 FAANG+ jobs!
pikacodes
I've tried every possible resource (Blind 75, Neetcode, YouTube, Cracking the Coding Interview, Udemy) and idk if it was just the right time or everything finally clicked but everything's been so easy to grasp recently with Grokking the Coding Interview!
Access to 50+ courses
New content added monthly
Certificate of completion
$31.08
/month
Billed Annually
Recommended Course

Grokking the Object Oriented Design Interview
60,422+ students
4.2
Learn how to prepare for object oriented design interviews and practice common object oriented design interview questions. Master low level design interview.
View Course