In a microservices architecture, the whole is indeed greater than the sum of its parts. But in practice, individual microservices can inadvertently impact others and alter the end user experience. Effective microservices architectures require standardization on an organizational level with the help of a platform engineering team. This practical book provides a series of progressive steps that platform engineers can apply technically and organizationally to achieve highly resilient Java applications. Author Jonathan Schneider covers many effective SRE practices from companies leading the way in microservices adoption. You’ll examine several patterns discovered through much trial and error in recent years, complete with Java code examples. Chapters are organized according to specific patterns, including: Application metrics: Monitoring for availability with Micrometer Debugging with observability: Logging and distributed tracing; failure injection testing Charting and alerting: Building effective charts; KPIs for Java microservices Safe multicloud delivery: Spinnaker, deployment strategies, and automated canary analysis Source code observability: Dependency management, API utilization, and end-to-end asset inventory Traffic management: Concurrency of systems; platform, gateway, and client-side load balancing