This document discusses strategies for decomposing monolithic applications into microservices and ensuring resilience of the resulting microservices architecture. It covers decomposing monoliths using API-first and single responsibility principles. Managing the complex microservices architecture requires approaches for cross-cutting concerns like fault tolerance, traffic management, policy enforcement, distributed tracing, and infrastructure concerns like circuit breaking. A service mesh like Istio deployed as sidecars can provide a communications control plane for traffic management, policy enforcement, and distributed tracing between microservices.