Operating the router — the new tier-0 service
The day you adopt federation, your router becomes the single most critical service you run: 100% of API traffic, every page, every client. Operate it like it.
Deployment
- The router ships like code, not like config. Router version bumps, config changes and supergraph schema updates each get their own rollout with canary + automatic rollback. A bad supergraph publish is a full outage; treat schema rollout with the same ceremony as a binary rollout.
- Pin and stage supergraph versions. The router should pull a specific supergraph artifact (not "latest") per environment, promoted dev → staging → prod like any build artifact.
- Run at least N+2 regionally. The router is stateless — there is no excuse for it being less available than the subgraphs behind it.
Timeouts, retries and traffic protection
- Per-subgraph timeout budgets, not one global number.
searchat p99 800ms andidentityat p99 30ms should not share a timeout. - Retries only on idempotent fetches (queries, entity resolution) and with a retry budget — a slow subgraph plus naive retries is how you turn a brownout into a blackout.
- Circuit-break per subgraph so one failing domain degrades its fields to
null(nullable boundaries — this is why) instead of consuming the connection pool for everyone. - Depth/complexity limits and per-client complexity rate limits live here (security baseline).
Observability — the router is your source of truth
Field-level and plan-level telemetry from the router beats anything the subgraphs can tell you individually:
- Federated traces (waterfall per query plan) for the top operations — this is where gateway N+1s become visible.
- Per-subgraph SLIs as seen from the router: latency, error rate, timeout rate. Subgraph teams' own dashboards measure their service; the router measures the customer experience of their service. When they disagree, the router is right.
- Field usage stats feeding deprecation decisions (versioning).
- Alert on the
errorsarray and field error rates — a federated graph returns HTTP 200 while a whole domain is down.
Schema-update runbook (have one before you need it)
- Composition check passed and published — registry shows new supergraph version.
- Canary router instances pick it up; automated diff of error/latency metrics vs baseline for M minutes.
- Fleet-wide rollout; previous supergraph version kept hot for instant rollback.
- Rollback = repoint to previous artifact — seconds, not a redeploy. If your schema rollback requires redeploying subgraphs, you don't have rollback.