API Gateway Platform · View 07 of 21 · Structure
The critical decision, drawn
- Request plane: every per-request decision is made from state already inside the pod — the signed config snapshot, the credential cache, the denylist, the local counters.
- Control plane: config API, credential store, product catalogue, rollout controller, audit. An outage here stops change and changes nothing about traffic.
- Shared runtime state: the counter store is the single deliberate exception, and it is designed to be degradable rather than highly available (ADR-05).
Realisation
- Envoy on GKE regional node pools; Google-managed global ALB and Cloud Armor at the edge.
- Spanner for versioned global configuration; signed snapshots in a dual-region bucket; Memorystore for counters; Pub/Sub and BigQuery for evidence.
- 10,000 requests/s per instance at ≤ 70% CPU (assumption) — the figure that sets fleet size.
Risks
- The counter store is on the hot path and can be made slow rather than absent — a partially degraded Redis is harder to handle than a dead one, which is why the call carries a 5 ms timeout and not a retry.
- Filter logic lives in the proxy. Filters are code on the request path and must be released with the same canary discipline as configuration (ADR-11).