Zero-downtime supergraph migration for a global retailer
:::note Sample content Placeholder structure — swap in the real engagement details, with client approval on all numbers. :::
The situation
Dozens of product teams shipping against a monolithic GraphQL server that had become the org's bottleneck: every schema change queued behind a single deploy train, p95 latency degrading quarter over quarter, and peak trading events requiring change freezes measured in weeks.
What we did
- Ownership mapping before any code. Workshopped the entity ownership model with every domain team — who owns
Product,Order,Customer, and who merely contributes (why this matters). - Supergraph architecture. Router topology, subgraph boundaries aligned to team boundaries, schema governance and composition checks in CI.
- Staged migration. Strangler pattern: the monolith graph became "subgraph zero" behind the new router on day one, then domains peeled off one at a time — no big-bang cutover, no client changes.
- Plan engineering. Query-plan reviews for the top operations killed the gateway-level N+1s before launch (the gotcha).
The result
- 40+ subgraphs federated across regions
- p95 latency down 35% against the monolith baseline
- Zero downtime through the migration, including a peak trading season mid-programme
- Schema change lead time from weeks (shared deploy train) to same-day, per-team
What made it work
Boring discipline, not clever tech: ownership decided before directives, composition checks blocking bad merges, and query plans read by humans before every domain cutover.