✅ 1. Microservices Architecture
Breaks an application into small, independent services
Each service:
Owns its own data
Has its own deployment lifecycle
Communicates over lightweight protocols (typically HTTP/REST or messaging)
Pros: Scalability, independent deployment
Cons: Complexity in distributed coordination
✅ 2. API Gateway Pattern
A single entry point for all client requests
Handles routing, authentication, rate limiting, caching, etc.
Benefits:
Centralized access control
Reduces client complexity
✅ 3. Service Discovery Pattern
Helps microservices find and communicate with each other dynamically
Client-side discovery: e.g., Netflix Eureka
Server-side discovery: via API Gateway or service mesh
✅ 4. Database per Service Pattern
Each microservice manages its own database schema
Prevents tight coupling through shared databases
Challenge: Handling cross-service queries (often resolved with CQRS or event-driven approaches)
✅ 5. Event-Driven Architecture
Services communicate asynchronously via events (e.g., Kafka, RabbitMQ)
Promotes loose coupling and reactive design
✅ 6. Circuit Breaker Pattern
Prevents cascading failures by breaking communication to a failing service temporarily
Libraries: Netflix Hystrix, Resilience4j
✅ 7. Bulkhead Pattern
Isolates failures in one part of the system from affecting others
Example: Use separate thread pools for different services
✅ 8. Strangler Pattern
Used for gradual migration from a monolith to microservices
Incrementally replace parts of the monolith with new services
✅ 9. Saga Pattern
Manages distributed transactions across microservices
Types:
Choreography: each service knows what to do next
Orchestration: a central orchestrator coordinates the flow
✅ 10. Sidecar Pattern
Deploy helper components (e.g., logging, monitoring, proxy) alongside services in containers
Common in service meshes like Istio
🔧 Tooling & Technologies to Know:
API Gateway: Kong, NGINX, Spring Cloud Gateway
Service Discovery: Eureka, Consul, Kubernetes DNS
Messaging: Kafka, RabbitMQ, AWS SNS/SQS
Resilience: Resilience4j, Hystrix
Observability: Prometheus, Grafana, ELK, OpenTelemetry
Deployment: Docker, Kubernetes, Helm