To scale beyond a monolith, modern Node.js backends often adopt microservices architecture, communicating via message queues (RabbitMQ, Kafka, Redis, NATS). This decouples services, increases fault tolerance, and allows horizontal scaling.
| Component | Role |
|---|---|
| Microservices | Independent, single-purpose services communicating over network |
| Message Queue | Buffers and dispatches messages asynchronously between services |
| Pub/Sub | Publisher emits events; subscribers react independently |
| API Gateway | Routes, authenticates, and aggregates APIs |
| Service Registry | Keeps track of active service instances |
You're building an e-commerce platform. Instead of a monolith:
This allows:
const { Queue } = require('bullmq');
const orderQueue = new Queue('orders');
await orderQueue.add('send-email', { to: '[email protected]', orderId: 123 });