microservice cheat sheet
Absolutely! Here’s a Microservices Interview One-Liners Cheat Sheet — built for real-world Java/Spring Boot microservices interviews (3–6 years experience), especially useful for last-minute revision.
⚡ Microservices Interview One-Liners (Spring Boot Focused)
🔹 Microservices Basics
- Microservices = independent, small, loosely-coupled services focused on a single business capability.
- Communication is via REST APIs, gRPC, messaging queues, etc.
- They can be developed, deployed, and scaled independently.
- Avoid shared DB — use database-per-service pattern.
🔹 Service Communication
- Synchronous: REST, gRPC.
- Asynchronous: Kafka, RabbitMQ, JMS.
- DTOs (Data Transfer Objects) are used for API request/response.
🔹 API Gateway
- Handles routing, authentication, rate limiting, and logging.
- Common tools: Spring Cloud Gateway, Zuul, Kong, NGINX.
- Reduces coupling between clients and services.
🔹 Service Discovery
- Services register with Eureka or Consul.
- Other services discover them using logical names, not hardcoded URLs.
- @EnableEurekaClient and @LoadBalanced RestTemplate for Spring Cloud.
🔹 Load Balancing
- Client-side: Ribbon (deprecated), Spring Cloud LoadBalancer (new).
- Server-side: handled by API Gateway or Kubernetes services.
🔹 Configuration Management
- Spring Cloud Config Server externalizes configuration.
- Configs stored in Git, File System, or Vault.
- Use @RefreshScope to refresh beans at runtime on config update.
🔹 Fault Tolerance
- Resilience4j, Hystrix (deprecated) handle retries, circuit breaking.
- Circuit Breaker avoids repeated failures by temporarily cutting the flow.
- @CircuitBreaker, @Retry, @RateLimiter in Resilience4j.
🔹 Distributed Tracing
- Tools: Zipkin, Sleuth, Jaeger.
- TraceId and SpanId help track requests across services.
- Use Sleuth with Zipkin in Spring Boot: spring-cloud-starter-sleuth.
🔹 Centralized Logging
- Tools: ELK Stack (Elasticsearch, Logstash, Kibana), EFK, Graylog.
- Helps in tracing errors and debugging across microservices.
- Logs typically include service name, timestamp, trace ID.
🔹 Security in Microservices
- Use OAuth2 + JWT for stateless authentication.
- Gateway handles authentication, downstream services do authorization.
- @PreAuthorize("hasRole('ADMIN')") for role-based access.
🔹 Data Management Patterns
- Database per service — recommended for loose coupling.
- Shared database — not recommended, breaks service independence.
- SAGA Pattern handles distributed transactions via local transactions + event-based coordination.
🔹 Inter-Service Communication
- RESTTemplate (deprecated) → replaced by WebClient.
- FeignClient simplifies REST calls between services (declarative client).
- Use @FeignClient(name="order-service") in Spring Cloud.
🔹 Event-Driven Architecture
- Services publish/subscribe via Kafka, RabbitMQ, etc.
- Promotes loose coupling and asynchronous behavior.
- Best for high throughput, non-blocking, decoupled communication.
🔹 CI/CD & DevOps
- Containerized via Docker, orchestrated using Kubernetes.
- Pipelines (Jenkins, GitHub Actions, GitLab CI) automate build-deploy-test cycle.
- Use Helm Charts for Kubernetes deployments.
🔹 Testing in Microservices
- Unit Tests for components using JUnit/Mockito.
- Integration Tests use @SpringBootTest.
- Contract Testing: ensures API compatibility between services (Spring Cloud Contract).
- End-to-End Testing simulates real user behavior across multiple services.
🔹 Versioning & Backward Compatibility
- URL versioning (/api/v1/users) or header-based versioning.
- Always maintain backward compatibility when updating APIs.
🔹 Observability & Metrics
- Expose /actuator/metrics with Micrometer.
- Integrate with Prometheus and Grafana for monitoring.
- Health checks: /actuator/health
🔹 Best Practices
- Each service should be autonomous, independently deployable, and resilient.
- Avoid shared state — use stateless services where possible.
- Handle failures gracefully with timeouts, retries, and circuit breakers.
- Prefer API Gateway, centralized logging, and distributed tracing in production.
✅ You’re now covered for:
- Microservices architecture
- Spring Cloud components
- Resilience and observability
- Secure, scalable service-to-service interaction
- DevOps and testing strategies
Comments
Post a Comment