Full Stack / 3 min read
Part 7: Only 2 Out of 30 Devs Could Answer This Simple Microservices Question in Node.js
Interview Question: How Would You Set Up Communication Between Two Node.js Services?
Part 7: Only 2 Out of 30 Devs Could Answer This Simple Microservices Question in Node.js
Interview Question: How Would You Set Up Communication Between Two Node.js Services?

This was the question I asked to multiple developers in interviews.
“You’ve split your Node.js app into two services
— one for authentication
— one for user profiles.
How will they talk to each other?”
Only 2 developers gave a clear, structured answer.
The rest? Either went silent or answered with “I’d just use Axios.”
Let’s unpack this — clearly and practically.

First: Why Split Your App into Services?
Let’s say your app is growing. Your login logic, profile pages, payments — everything lives in a single repo. Updating one part means testing the whole thing.
That’s where microservices help.
They allow you to:
- Separate responsibilities
- Deploy features independently
- Scale parts of the app differently
But here’s the catch — services need a way to talk.

So, How Do Microservices Communicate in Node.js?
There are two common ways:
🧩 1. HTTP Communication (Easy & Direct)
You expose APIs in each service and use tools like fetch() or Axios to call them.
// Auth Service
app.post('/login', (req, res) => {
// Authenticate
});
// User Service calling Auth
const axios = require('axios');
await axios.post('http://auth-service/login', { email, password });✅ Simple setup, easy to debug.
❌ But tightly coupled and fragile if services go down.
2. Message Queues (Recommended for Decoupling)
Use tools like:
- Redis Queue (Bull/BullMQ)
- RabbitMQ
- Amazon SQS — Read more here
Your services send events into a queue and other services listen for them.
Example:
Login triggers an event → User service listens → Sends welcome email.
✅ Reliable and async
❌ Slightly more setup, but much more scalable and reliable

What You Should Say in an Interview
Here’s a solid beginner-friendly answer:
“I’d expose REST endpoints in both services. For loose coupling, I’d also consider using a message queue like Redis or RabbitMQ for event-driven tasks like emails or notifications.”
That’s it.
You’ve just shown awareness of microservice communication patterns. 💥

🧪 Quiz Time
Q: Which of these is the most reliable way to connect Node.js microservices?
A. Use require() to import one service into another
B. Send API calls using Axios only
C. Use a message broker like RabbitMQ or Redis queues
D. Store all user data in a JSON file
✅ Let me know your answer in the comments.

Real-World Example
Netflix uses event-driven communication to trigger subtitles, translations, and recommendations — all in separate services. They don’t sync every call with every service in real-time.
Even your startup app can benefit from this structure.

Final Thoughts
The goal isn’t to make things more complex — it’s to make them more modular and resilient.
And next time someone asks you how services talk — you’ll know exactly what to say.
At Dev Simplified, We Value Your Feedback 📊
👉 Follow us to not miss any updates.
👉 Have any suggestions? Let us know in the comments!