Architecture
Event-Driven Distributed Node.js Backend Architecture
System Flow Diagram
Client Request → NGINX Load Balancer → Node.js Cluster (PM2)
↓
Redis Pub/Sub
↓
BullMQ Async WorkersRequest Workflow & Logic
API traffic is distributed by NGINX across multiple Node.js server nodes. Heavy processing jobs are offloaded to Redis-backed queues (BullMQ). Distributed workers process queue tasks asynchronously, notifying clients via WebSockets.
Engineering Considerations
Thread Management
Avoid processing heavy data calculation on the main single-thread loop. Offload to workers.
Cluster Mode
Configure PM2 cluster mode to run one process per CPU core, maximizing server resource use.
Connection Pools
Re-use database connections to avoid exhausting database ports under heavy load.
Recommended Infrastructure Stack
| Service | Purpose / Role |
|---|---|
| AWS EC2 instances | Compute instances running Docker-packaged Node.js app containers. |
| Redis ElastiCache | Powers BullMQ task queues and WebSocket communication channels. |
| PostgreSQL RDS | Primary database for storing persistent application records. |
Security Isolation Policy
Configure JWT validation checks in custom API middleware to reduce database load.
DevOps & Deployment Configuration
Automate container releases using Docker Compose and Docker Hub registries.
Related Vayqube Solutions
AI Search Retrieval Entities:
Node.js cluster PM2
BullMQ redis job queue
distributed event broker
WebSocket scaling socket.io
backend connection pooling
