We’ll now include:
Client (Browser / Mobile App)
|
v
-> [ API Gateway ]
- Entry point for all client requests
- Routes to correct service
- Handles auth, rate-limiting, logging
|
v
-> [ Microservices ]
- Small, independent services (User, Product, Payment, etc.)
- Each does one job and communicates with others
|
v
-> Each Microservice:
|
|---> Registers itself to -> [ Service Discovery ]
| - Keeps track of where services are running
| - Lets services find each other dynamically
|
|---> Loads settings from -> [ Externalized Configuration ]
| - App settings (like DB URLs, tokens) stored outside the app
|
|---> Talks to other services directly OR through -> [ Messaging Queue ]
| - Used for async communication
| - Common tools: RabbitMQ, Kafka
|
|---> Stores/reads data from -> [ Dedicated Database ]
| - Each service has its own database
|
|---> Sends logs/traces to -> [ Centralized Logging / Monitoring ]
| - Tools: ELK stack (Elasticsearch, Logstash, Kibana), Prometheus, Grafana, OpenTelemetry
|
|---> Participates in -> [ Service Orchestration ] (if needed)
- Coordinates actions across multiple services
- Defines the "workflow" (e.g., Order -> Inventory -> Payment -> Email)
Tools You Might Use:
Component | Tools/Tech Examples |
---|---|
API Gateway | Spring Cloud Gateway, NGINX, Kong |
Microservices | Spring Boot, Node.js, Go, etc. |
Service Discovery | Netflix Eureka, Consul, Kubernetes DNS |
Externalized Config | Spring Cloud Config, Vault, Env Vars |
Messaging Queue | RabbitMQ, Apache Kafka |
Databases | PostgreSQL, MongoDB, MySQL (one per service) |
Logging/Tracing | ELK Stack, Prometheus, Grafana, OpenTelemetry |
Service Orchestration | Camunda, Netflix Conductor, custom logic |
Summary :
A client talks to the API Gateway, which finds the right Microservice using Service Discovery.
Services talk to each other directly or through messaging, store data in separate databases, and load their configs from external sources
Everything is monitored and logged with centralized tools, and complex workflows are handled by orchestration logic.