PATTERN Cited by 2 sources
Proxyless service mesh¶
Proxyless service mesh delivers service-mesh capabilities — service discovery, L7 load balancing, health-aware routing, mTLS, observability — via a shared client library linked into every service, rather than a sidecar proxy. The control plane (typically xDS) talks directly to the library instead of to a per-pod Envoy.
Canonical comparison axis vs. sidecar meshes:
| Sidecar mesh (Istio) | Proxyless (Databricks / gRPC-xDS) | |
|---|---|---|
| Data plane | Envoy sidecar per pod | Client library in-process |
| Language support | Any — sidecar intercepts traffic | One library per language |
| Per-pod cost | Extra CPU / mem / latency per pod | No extra process; library overhead only |
| Blast radius of upgrades | Sidecar rollout; rolling and independent | Library version bump; couples with app release |
| Request-aware routing | Limited (proxy sees HTTP, not app context) | Full — runs in the app's process |
| Ops complexity | High: thousands of sidecars, control plane + data plane | Lower: just the control plane |
When proxyless wins¶
- Mono-lingual or near-mono-lingual fleet. You only have to ship / maintain the library in one or two languages. Databricks is "predominantly Scala" — that's the enabling condition.
- Monorepo + fast CI/CD. A library bump propagates fleet-wide without per-team ceremony.
- Scale where sidecar CPU/mem cost matters. Per-pod overhead × thousands of pods is real money.
- You want request-aware LB. Routing decisions driven by in-process signals (app's own observed error rates, request tags, shard metadata) are hard through an out-of-process proxy.
- Existing proprietary infra for typical mesh side-features (e.g. cert distribution) — one of the reasons Databricks rejected Istio Ambient too.
When sidecar meshes win¶
- Polyglot fleets. Envoy intercepts traffic for everyone; you don't have to maintain LB libraries in 8 languages.
- Org structure with many independent teams. Centralized resilience policy without asking every team to dep-bump a library.
- Non-library callers (jobs, cron tasks, external service hops) still need to participate in the mesh.
Operational caveats of proxyless¶
- Library becomes a coordination bottleneck. Routing/discovery bugs blast the fleet; upgrades couple with app release cadence.
- Non-library traffic stays out of the mesh. Ingress, non-supported-language services still need conventional LB / discovery.
- Control-plane freshness = correctness. EDS lag directly becomes client routing error; no DNS-style slow-decay fallback.
- Cold-start visibility. Because clients can take fresh pods immediately after they register, you need patterns/slow-start-ramp-up and warmup tooling — a problem the sidecar model mostly papered over by keeping long-lived connections.
Seen in¶
- sources/2025-10-01-databricks-intelligent-kubernetes-load-balancing — Databricks' architecture is the canonical modern proxyless mesh: custom xDS control plane (systems/databricks-endpoint-discovery-service) → Armeria-embedded client library → patterns/power-of-two-choices + patterns/zone-affinity-routing. Explicitly framed as the alternative to Istio and Istio Ambient Mesh for their use case. Impact: ~20% pod-count reduction, stabilized P90, uniform QPS.
- sources/2024-10-28-dropbox-robinhood-in-house-load-balancing — Dropbox's Robinhood is a second canonical example, independently converged: custom xDS/EDS control plane over ZK/etcd, Envoy / gRPC as embedded client libraries doing weighted round-robin. Validates the pattern from a different organizational direction (a ~2020 deployment that predates the "proxyless service mesh" name by years) and adds two contributions: PID-feedback-computed weights (rather than topology-only metadata) and a fanout-reducing proxy tier protecting the LBS from TLS-connection storms.
- gRPC's
xds:resolver is the open-source reference implementation of the same pattern.
Related¶
- concepts/client-side-load-balancing — the load-balancing side of the same architecture
- concepts/xds-protocol — the usual control-plane contract
- systems/istio — the sidecar counterpart
- patterns/slow-start-ramp-up — typical corollary problem