Delivery & Operations

Canary Release

Also known as: canary deployment, progressive rollout

Definition

A canary release routes a small fraction of production traffic to a new version, compares its error and latency metrics against the stable version, and promotes or rolls back based on the result. It bounds the blast radius of a bad change to the canary's share of users.

Last reviewed · Part of the Architecture Glossary

In practice

A canary without automated analysis is just a slow deploy. The parts that make it work:

  1. A comparison baseline. Compare canary against the stable version running now, not against yesterday's dashboard — traffic mix changes hour to hour.
  2. Metrics with thresholds. Error rate, p99 latency, and at least one business metric (checkout completion), each with a fail condition.
  3. Enough traffic and enough time. 1% of traffic for two minutes on a low-volume service is statistically nothing. Size the step from the request rate needed to detect the regression you care about.
  4. Automatic rollback, because a human watching a dashboard at 2 a.m. is not a control.

A typical schedule: 1% for 10 minutes, 10% for 20, 50% for 20, then 100% — aborting at any step on a threshold breach.

Canaries catch what staging cannot: real traffic shapes, real data skew, real cache states, real third-party behaviour.

When it matters

Any service with enough traffic to make a small percentage statistically meaningful, and any change whose failure mode is not caught by tests.

Common mistake

Canarying a stateless service while shipping the schema migration to everything at once. The database change has no canary; expand-migrate-contract is what protects it, and forgetting that is how a "safe" rollout takes the whole system down.

See also

Go deeper