Lesson 7 · Traffic, the edge & resilience
Resilience
Timeouts, retries, and circuit breaking — the mesh features that stop one slow service taking down the rest.
Your win: explain the four resilience tools Istio gives you for free — timeouts, retries, circuit breaking, outlier detection — and be honest about which ones this repo actually turns on.
Why the mesh is the right place for this
In a microservice call graph, one slow or failing dependency can cascade: callers pile up waiting, exhaust connections, and fall over in turn. Istio lets you add resilience declaratively, without app code — the Envoy sidecar enforces it.1
| Tool | Where | Does |
|---|---|---|
| timeout | VirtualService | bound how long a call may take; fail fast instead of hanging |
| retries | VirtualService | re-attempt failed calls (with per-try timeout, retry conditions) |
| circuit breaking | DestinationRule connectionPool | cap concurrent connections/requests; shed load past the limit |
| outlier detection | DestinationRule | eject Pods that error too often from the LB pool, temporarily |
connectionPool limits (reject new load when saturated) and
outlierDetection (pull a consistently-failing Pod out of rotation so healthy
ones absorb the traffic). Together they stop a struggling backend from dragging everything
down. A favourite interview question — name both halves.
perTryTimeout and specific retryOn conditions
(e.g. only connect-failure, not application 500s). Retries are a tool, not a
default-on freebie.
What this repo actually does (the honest part)
- The VirtualService route tables (backend/bob/values.yaml
apiHttp) setmatch/route/rewrite/faultbut notimeoutorretries— calls use Envoy's defaults. - tom's DestinationRule (Lesson 6) sets a load-balancer but no
connectionPooloroutlierDetection— so no mesh-level circuit breaking is configured.
fault.abort — but for access control,
not chaos testing: bob returns 403 to block Internal RPCs at the edge
(bob/values.yaml:42-46, Lesson 4). Same primitive, different
purpose.
Istio docs — Circuit breaking + request timeouts
The outlier-detection/connection-pool circuit breaker and how timeouts/retries are set on a VirtualService.
Check yourself (from memory)
Q1. Istio's circuit breaking is built from…
Q2. A risk of aggressive retries is…
Q3. In this repo, mesh timeouts/retries/circuit breaking are…
perTryTimeout + retryOn; beware RETRY STORMS); CIRCUIT BREAKING =
connectionPool limits (shed load when saturated) + outlierDetection
(eject failing Pods) — both in the DestinationRule; these two together ARE the circuit
breaker. REPO (honest): route tables set NO timeout/retries (Envoy defaults); tom's DR has NO
connectionPool/outlier → no mesh circuit breaking configured. The only fault use is
fault.abort 403 to BLOCK Internal RPCs at the edge (access control, not chaos).
Line: "the mesh gives us these free, but we rely on Envoy defaults + app-level handling."