SOFTWARE-DELIVERY

Canary deployment pipeline

A canary deployment reduces the initial exposure of a release by sending only a small share of production traffic to it. This diagram starts with pre-release tests, then deploys the candidate to five percent of traffic. The team watches explicit guardrails instead of treating deployment as the final step. Passing guardrails permits an expansion to twenty-five percent and a second observation period. Failing guardrails trigger removal of the canary and restoration of the prior version. A hold path gives the team time to investigate when the expanded rollout is not ready to continue. Replace the traffic percentages and measurements with the limits that match the service and its release policy.

UPDATED 2026-09-24
EXAMPLECanary deployment pipeline
Make this diagram your own.

Open it in the AI editor with a prompt pre-filled — keep what works, change what doesn't.

CASE ANALYSIS

Scenario

A platform team wants to control the exposure of a new version while measuring its production behavior.

Key decisions

  • Initial exposure: Limit the first deployment to a small traffic share.
  • Guardrails: Define which error, latency, and conversion changes are acceptable.
  • Expansion: Increase traffic only after the first observation period passes.
  • Recovery: Remove a failing canary and restore the prior version.

When to reuse this

Use this for releases that can be routed to a controlled share of production traffic.

FAQ

Frequently asked questions

What is a canary deployment?01
It is a release approach that sends a new version to a limited share of production traffic before making it available to everyone.
What are deployment guardrails?02
They are measurable limits, such as error rate or latency, that determine whether the rollout can continue.
Why monitor after expansion?03
A version can behave differently under more traffic, so a second observation period checks the release before full rollout.
Open this example in the editor →

Tweak it with chat, export PNG/SVG, or fork it for your own use case.