Book Profile
Spring Microservices in Action, Second Edition
John Carnell Illary Huaylupo Sánchez
A hands-on, pattern-driven guide for Java/Spring developers to design, build, secure, deploy, and operationalize production-ready microservices using Spring Boot, Spring Cloud, Docker, and Kubernetes.
Get the book →Spring Microservices in Action, Second Edition walks practicing Java developers step by step through the full lifecycle of a microservices architecture—from decomposing a monolithic application into bounded services, through containerization with Docker, centralized configuration with Spring Cloud Config, service discovery with Netflix Eureka, client-side resiliency with Resilience4j, API gateway routing with Spring Cloud Gateway, OAuth2/Keycloak security, asynchronous event-driven messaging with Spring Cloud Stream and Apache Kafka, distributed tracing with Sleuth and Zipkin, log aggregation with the ELK Stack, and finally automated build/deployment pipelines to Amazon EKS using Jenkins and Kubernetes. Every chapter introduces concrete design patterns, annotates real Spring Boot and Spring Cloud code, and ties the technology choices back to twelve-factor app principles, giving readers both the conceptual vocabulary and the working codebase needed to build, run, and evolve cloud-native microservices at scale.
What it argues
A causal model describing how architectural design levers and operational engineering decisions in a Spring-based microservices system produce intermediate system-quality states (resilience, observability, security posture, deployment consistency) that in turn drive outcome metrics (system availability, delivery velocity, operational maintainability, and developer productivity).
Key ideas it contributes
- Service Granularity — The scope and size of responsibilities assigned to an individual microservice, reflecting how finely the business domain has been decomposed into independently deployable units.
- Externalized Configuration — The degree to which service configuration is stored and managed outside the deployable artifact, in a centralized, versioned, and environment-specific repository.
- Service Discovery — The architectural capability enabling services to register their runtime location dynamically and consumers to resolve service endpoints by logical name, abstracting physical infrastructure from application code.
- Client-Side Load Balancing — The pattern in which service consumers locally cache and distribute outbound calls across healthy service instances discovered through Eureka, without relying on a centralized load balancer.
- Circuit Breaker Implementation — The application of a stateful interrupt mechanism to remote calls that monitors failure rates and, when thresholds are exceeded, halts further calls to allow the failing service to recover.
- Fallback Strategy — The availability of alternative code paths that execute when a remote call fails or a circuit breaker opens, returning degraded but non-error responses to preserve user-facing functionality.
- Bulkhead Implementation — The compartmentalization of concurrent remote resource calls into isolated thread pools or semaphore limits to prevent a saturated call type from consuming all available execution resources.
- Retry and Rate Limiter Patterns — The combination of automatic call re-attempts on transient failure (Retry) and enforcement of an upper bound on call frequency within a time window (RateLimiter) to handle intermittent faults and prevent service overload.