A Service Mesh is an infrastructure layer that handles service-to-service communication in microservices. It provides service discovery, load balancing, encryption, observability, retries, and circuit breaking—without changing application code. Think of it as networking autopilot for microservices. Common tools: Istio, Linkerd, Consul. Only needed when you have 10+ microservices and networking complexity is painful.
Use a service mesh when you have many microservices (10+) and managing service-to-service communication is painful, when you need consistent observability across services, or when implementing security/retry logic in every service is tedious. Don't use until microservices complexity justifies it—adds operational overhead. Most startups never need a service mesh.
System Design Patterns
Microservice communication layer