DEV Community

Chandra Prakash Pal
Chandra Prakash Pal

Posted on

Microservices Architecture

Great! Let’s go step-by-step and thoroughly understand Microservices architecture from the perspective of a Node.js backend developer. I'll explain:


🔍 1. What is Microservices Architecture?

Microservices is an architectural style where an application is divided into a set of loosely coupled, independently deployable services, each handling a specific business capability.

Instead of building one large monolithic application, you break it into small services that communicate over a network.


🏗 Example: eCommerce Platform

Let’s compare Monolith vs Microservices.

🔸 Monolithic App

A single codebase and server handles:

User Authentication

Product Catalog

Orders

Payments

Admin Panel

If something crashes, the whole app fails.

🔸 Microservices App

Each service is a separate app:

Microservice Responsibility Port / DB Language

user-service Login, register, profile MongoDB Node.js
product-service Catalog management PostgreSQL Go
order-service Order placement, status MySQL Node.js
payment-service Payments, refunds Redis Python

Services communicate over the network (TCP/HTTP/gRPC/RabbitMQ/etc).


🧩 2. Key Characteristics

Feature Description

Independent Deploys Each service can be deployed separately
Polyglot Use different languages, databases
Resilience One service failure doesn’t crash the entire app
Scalability Scale only the heavy-loaded services
DevOps Friendly CI/CD is easier with small units


🔌 3. Communication Methods Between Services

There are multiple inter-service communication mechanisms:

Method Description Example Use

HTTP REST Simple APIs over HTTP API Gateway to Microservice
TCP Fast, persistent connections NestJS TCP transport
gRPC Binary, performant RPC calls Real-time apps
Message Bus RabbitMQ / Kafka / NATS Event-driven architecture
WebSockets Bidirectional live connections Chat / real-time systems


🧭 4. What is an API Gateway in Microservices?

An API Gateway is a single entry point for clients to interact with microservices.

🧱 Role of API Gateway

Feature Description

Routing Directs client requests to appropriate services
Aggregation Combines data from multiple services
Security Handles authentication, rate-limiting
Logging/Monitoring Logs requests and errors
Versioning API version control


🔁 Real-World Example

Request: GET /orders

API Gateway:

Validates JWT

Forwards to order-service

Fetches user details from user-service

Merges both

Sends single response to frontend


🧰 5. Do I Build the Gateway or Use Third-Party?

✅ Option 1: Build Your Own (recommended for control/custom logic)

Use:

NestJS with HTTP + TCP clients

Express.js

Fastify

Pros:

Full control

Tailor-made logic

Cons:

You manage load balancing, security, rate-limiting manually

✅ Option 2: Use API Gateway Providers (recommended for production-scale infra)

Gateway Features

Kong Open source, plugins, rate limit, auth
NGINX Lightweight, reverse proxy
AWS API Gateway Fully managed, serverless
Traefik Auto-routing with Docker/K8s
Istio (K8s) Advanced service mesh with observability

Note: These tools often integrate with service discovery (e.g., Consul, Eureka) in large setups.


🏗 6. Development Methodologies for Microservices

There are several ways to design and build microservices:

🔹 A. REST-based Microservices

Services communicate over REST APIs

Lightweight and easy to debug

Ideal for basic CRUD services

🔹 B. Event-Driven Microservices

Communicate via events (Kafka, RabbitMQ, NATS)

Services publish/subscribe events

Useful for loosely coupled and scalable systems

Example: order-service emits order_placed → payment-service listens to it

🔹 C. RPC-based Microservices (TCP/gRPC)

Services talk over Remote Procedure Calls

High performance

Often used in NestJS (TCP) or gRPC (Google)


🧪 Example Architecture in NestJS

Client (React App)
|
v
+-------------------+
| API Gateway | <-- NestJS REST app
+-------------------+
| | |
v v v
+--------+ +--------+ +--------+
| User | | Product| | Orders |
|Service | |Service | |Service |
+--------+ +--------+ +--------+

Communication: REST → Gateway → TCP (NestJS transport) between services.


✅ Summary

Topic Key Point

Microservices Split app into small, independent services
Communication Use TCP, REST, gRPC, or Messaging
API Gateway Front door to your services
Build vs Buy Gateway You can build (NestJS) or use Kong, AWS
Development Styles REST-based, Event-driven, RPC
NestJS Support Built-in support for TCP/gRPC/RMQ/Kafka microservices


Would you like to:

  1. Learn Event-Driven architecture next

  2. Learn gRPC vs TCP vs REST comparison

  3. Set up a message broker (like RabbitMQ) in your microservice system

  4. Learn about Service Discovery and dynamic microservices registration?

Let me know!

Top comments (0)