</> MAANG.io
system design · 301

Advanced

Master system design interviews with scalable architecture patterns, distributed systems, and real-world design challenges.

0/480 solved 0% complete

Section 11: Year Two on the Train - Follow-up Feature Evolution

Executive Summary: The design is defended, so the interviewer turns to the roadmap: traffic-weighted canaries, feature-flag integration, error-budget-aware scheduling, migration orchestration, multi-GB ML model deploys and deploy analytics. Each gets three beats: what changes, what stays the same, and which earlier decision made it cheap. Most of them plug into a box that already exists. One flips a decision on purpose: a 20 GB model breaks the zone-cache budget and earns peer-to-peer distribution.

Interviewer: "It's a year later. The platform team has a roadmap. Walk me through what each item costs and what it touches."

You: "I'll price each one against the boxes we already have, and name the trigger for any decision it flips."

Roadmap items mapped to existing boxes: traffic-weighted canary to desired-state store (routing weight as a field), flag integration to audit trail (flag changes on the timeline), error-budget scheduling to deploy guard (budget burn as a pause input), migration plans to rollout orchestrator (multi-release plan), multi-GB model deploys to artifact distribution (P2P inside a zone), deploy analytics to audit trail (reads rollout records)

Traffic-Weighted Canaries: 1% of Requests, Not 1% of Instances

Today the canary is 1% of one zone's instances, minimum one. For checkout-api that's 2 of 200 instances, close to the intended 1%. For the average service, with about 22 instances per zone, the minimum of one instance means 1 ÷ 22 ≈ 4.5% of that zone's traffic hits the canary, with another 4.5% on the control. The small services get the biggest canaries, which is backwards.

With a service mesh, the canary instance keeps running, but the mesh sends it exactly 1% of the zone's requests, and the control gets the same 1%. The weight becomes one more field in desired state, next to the digest, and the mesh's sidecars watch it the way agents watch digests. Ramping 1% → 5% → 25% is a weight change, not a restart, and a bad canary is aborted by setting its weight to zero.

What stays the same: the control group, the five metrics, the two-bad-minutes rule and rollback to N-1. The health analyzer compares metrics tagged by version and doesn't care how the traffic arrived. The cost: the canary instance now carries far less than its share of load, so saturation metrics must be normalized per request, and the control needs exactly the same weight or the comparison is skewed.

Instance-only canaries stay the default for services without weighted routing; the mesh path turns on per service.

Sign in to continue reading

The rest of this lesson is available with a free account. Signing in with Google or Microsoft is free.

Sign in to read the full lesson

Sign in to MAANG.io

Use your Google or Microsoft account — no password to remember.

Continue with Google Continue with Microsoft

Please accept the terms above to continue.