Spring Cloud
What changes when one service becomes several: service discovery, an API gateway, client-side load balancing, circuit breakers, centralised configuration, and tracing across the whole system.
Service Discovery: Eureka, Consul — or Neither
Why hardcoded hostnames fail at scale, how a registry works, Eureka's self-preservation mode, and why Kubernetes may already have solved this for you.
Spring Cloud Gateway: Routing, Filters and Rate Limiting
Predicates and filters, what belongs at the edge versus in every service, distributed rate limiting with Redis, and why the gateway is reactive.
Client-Side Load Balancing with Spring Cloud LoadBalancer
What @LoadBalanced actually does, how client-side differs from server-side balancing, and writing a zone-aware or weighted strategy.
Circuit Breakers and Resilience4j: Failing Fast on Purpose
The state machine, why a bulkhead matters as much as the breaker, fallbacks that degrade instead of erroring, and the order to stack the decorators in.
Centralised Config: Config Server or ConfigMaps
Git-backed configuration served over HTTP, refresh without restart, encrypted values — and an honest comparison with what your platform already offers.
Distributed Tracing End to End
How trace context crosses service boundaries, sampling strategies that keep the traces you need, and correlating traces with logs and metrics.