Envoy is an L4/L7 proxy written in C++, designed to run either at the edge of a network or as a sidecar beside every service. It is not a service mesh — it is the data plane that meshes and gateways are built from. Istio, Contour, Gloo, Emissary, Kuma and several cloud load balancers all ship Envoy and differ mainly in the control plane that configures it, which is why learning Envoy directly makes all of them legible.
The configuration model is the thing worth learning. A listener binds an address and runs a filter chain; network filters such as tcp_proxy and http_connection_manager operate on bytes and connections; HTTP filters such as router, ext_authz, jwt_authn, rate limit, Lua and Wasm operate on requests. The connection manager holds a route configuration of virtual hosts and matchers that select a cluster. A cluster is a group of upstream endpoints with a discovery type — STATIC, STRICT_DNS, LOGICAL_DNS, EDS or ORIGINAL_DST — plus a load balancing policy, active health checks, circuit breaker thresholds and outlier detection for passive ejection.
The second half is xDS, the discovery protocol that makes Envoy dynamic. LDS, RDS, CDS, EDS and SDS deliver listeners, routes, clusters, endpoints and secrets over gRPC or REST, so configuration changes take effect without a restart and without dropping connections. Envoy's observability is unusually good for a proxy: thousands of per-cluster and per-listener statistics, configurable access log formats, native distributed tracing propagation, and an admin interface exposing the exact configuration the process is running.
Why this skill matters now
Traffic management moved out of application code and into the network layer, and Envoy is where most of it landed. Retries, timeouts, circuit breaking, mTLS, authorization and telemetry that once lived in a per-language client library now live in a proxy that every service shares, which means the behaviour is uniform and the configuration is operational rather than something a release ships.
That concentration makes Envoy knowledge disproportionately valuable. Teams running Istio, Contour, Gloo or a cloud gateway are running Envoy whether they know it or not, and when something misbehaves the answer is almost always in the generated Envoy configuration rather than in the abstraction above it. Being able to read a config dump, follow a request through a filter chain and interpret upstream_rq statistics turns an opaque mesh incident into an ordinary debugging session.
The Gateway API and the general move toward standardised ingress have made this more relevant, not less. The abstractions keep changing; the data plane underneath them has been stable for years, and the skills transfer intact across every control plane built on it.