What a canary actually is
A canary release runs the new version alongside the current one, sends it a small share of real production traffic, and uses that traffic to decide whether to continue.
The reason it works where testing does not is that it uses the one input no test environment can reproduce: your actual traffic, with its real data, real concurrency, real edge cases and real third-party behaviour. Most production-only bugs are production-only precisely because that input was missing.
A canary has four parts, and skipping any of them turns it into theatre:
- A traffic split, sending a defined percentage to the new version.
- A comparison, between the canary's behaviour and the current version's.
- A decision rule, agreed in advance, for what counts as healthy.
- An action, promote or roll back, ideally automatic.
Gotcha: deploying to five percent of instances and watching a dashboard for a while is not a canary release. It is a deploy with a pause in it. Without an agreed decision rule the outcome depends on whether the person watching is patient, which is exactly the judgement the mechanism exists to replace.

