Spring Boot Microservices Standards
Priority: P0
Implementation Guidelines
Sync Communication (REST & API Interface)
- Clients: Use Spring Cloud OpenFeign or HTTP Interfaces (Spring 6/Java 21).
- Resilience: Implement Resilience4j with Circuit Breaker, Retry (Exponential Backoff), and RateLimiter.
- Contracts: Share DTO Records via a Maven BOM or API Contract module.
- Tracing: Ensure Micrometer propagation for Distributed Tracing.
See implementation examples for a Feign client with Circuit Breaker fallback.
Async Communication (Spring Cloud Stream)
- Architecture: Use Message-Driven patterns with Spring Cloud Stream.
- Functions: Define message handlers as
java.util.function.Function,Consumer, orSupplier. - Serialization: Use JSON or Avro for events.
- Reliability: Implement Dead Letter Queues (DLQ) and idempotent consumers.
See implementation examples for a Spring Cloud Stream event consumer with idempotency.
Data & Isolation
- DB per Service: NEVER share databases between microservices.
- Shared Libs: Minimize shared logic to shared DTOs/Clients only.
- Discovery: Use Spring Cloud Gateway for routing and auth.
Anti-Patterns
- No Shared DB: Services must communicate via APIs or Events only.
- No Shared Entities: Share DTOs via Maven BOM, never JPA entities.
- No Sync Call Chains: Use async messaging to prevent distributed monolith.