Skip to content
Devgo

Service mesh

A dedicated infrastructure layer for service-to-service communication, providing mTLS, traffic control, observability, and resilience via sidecars. Istio and Linkerd are examples. Adds capabilities without app code changes.

When to use
  • Large microservice estates needing uniform security/observability/routing.
  • Zero-trust networks.
When not to
  • Small service counts (overhead not justified).
  • Teams without mesh expertise.

Definition

A intercepts all east-west traffic via proxies (Envoy) and manages it via a control plane. It provides , retries, timeouts, circuit breaking, traffic splitting (canaries), and /tracing uniformly.

Why it exists

Service-to-service concerns (security, resilience, observability, routing) are needed everywhere and shouldn't be reimplemented per app/language. A mesh centralizes them, decoupling them from app code.

How it works

proxies sit beside each service; all traffic flows through them. The control plane configures policies, certificates, and routes. is automatic; traffic shifts enable canaries; telemetry is uniform.

Scaling limits

overhead (CPU/memory/latency) per pod. Control plane complexity. Debugging through an extra proxy layer is harder. Misconfiguration affects all traffic.

Cost shape

Per-pod resources + control plane + ops. Blow-ups: sidecar overhead at scale and the operational cost of running the mesh.

Alternatives

  • In-app libraries — No proxy overhead, but language-specific and duplicative.
  • API gateway only — Handles north-south, not east-west.

Failure modes

  • latency/overhead.
  • Control plane outages.
  • Hard-to-debug routing through proxies.

, , , ,