Opens in a new tab
Guide

Make the canary exercise the change before expanding it

In brief

A small audience limits exposure. Relevant work, comparable controls and a usable recovery path determine what the release actually learned.

5 min read

Is this the right starting point?
Before you read
Basic software deployment, service metrics and shared-state concepts; familiarity with your actual routing and rollout stack.
What you will take away
Design a canary that exercises the changed path, compares meaningful workloads and preserves a usable hold, stop and recovery route.
Sources
Round tokens travel through two test lanes while triangular work waits beside the candidate’s untouched write press.
On this page4 sections

The canary has been running for an hour without errors. The team is ready to expand, until someone notices that the change affects writes and the canary has handled only reads. The small audience reduced exposure, but the quiet chart never answered the release question.

A canary sends part of production work to a candidate while retaining the existing version as a comparison. The learning comes from what that work exercises, not just its percentage.

Send the work that reaches the changed path

Give the hypothetical canary a write to follow. A customer submits a payment: did the transaction complete correctly, how long did it take, and did the required asynchronous follow-on work finish? A successful response alone does not answer all three. Counts and workload mix then show whether this was one reassuring write among mostly reads or a useful sample of the changed behavior.

The Google canarying chapter develops candidate/control comparisons. Give the observation interval enough time for the failure of interest. A leak or daily-batch interaction can remain invisible during a short otherwise representative trial.

Now follow that customer’s next request. Assigning users may keep the session on one version; assigning individual requests may send it to the other. If the candidate serves only a few tenants, their payment patterns may differ from the baseline’s. A slower write is harder to interpret when the two groups do different work, and shared state can let one group affect the other. The comparison needs to account for those differences, not just count two sets of requests.

Know what remains after withdrawing the candidate

Suppose the team withdraws the candidate after that payment. The baseline artifact and enough capacity to take work back must still be available, but returning traffic is only part of recovery. Can the old code read the schema the candidate left behind? What will consume an already-published message? Sending traffic to old code does not reverse the payment, restore deleted data or undo an incompatible migration. Those effects remain after the request has moved.

The traffic count can mislead in a different way. In a hypothetical ten-replica deployment, one candidate replica does not establish that it handled ten percent of requests, much less ten percent of writes. Kubernetes rolling updates do not by themselves supply exact weighted routing or automated canary analysis; those may need ingress, service-mesh or rollout tooling. Inspect the actual stack and the requests it delivered before treating a replica percentage as an observed request percentage.

For this release, we therefore need two different observations: the candidate handled the changed writes, and the team has a usable way to withdraw it. Completing a rollout stage establishes neither. Even a representative small group cannot reproduce every time-dependent, large-scale or cross-system failure; those limits still need their additional controls.

Leave room to hold the release

Suppose the writes now reach both versions, but a shared database slows them equally. Matching latency does not mean either meets the service objective. The team needs the absolute service-health check as well as the candidate-versus-baseline comparison; otherwise two bad results can look reassuringly alike.

That is why “hold” belongs beside “pass” and “fail.” If too few writes arrived, the team still lacks an answer. If the service objective failed, a small relative difference does not make the result a pass. An hour elapsed is not a write test, a daily batch or a leak test; asking for more evidence need not claim that the candidate is broken.

An unrelated incident may also spoil the baseline or change the workload. Preserve what you observed and pause if the comparison no longer answers its original question.

A canary needs both relative and absolute checks
A canary needs both relative and absolute checks. Candidate and baseline must receive comparable, meaningful work. A shared database can degrade both, so check the service objective as well as the difference. Insufficient evidence means hold; failure means stop or mitigate.
Candidate and baseline must receive comparable, meaningful work. A shared database can degrade both, so check the service objective as well as the difference. Insufficient evidence means hold; failure means stop or mitigate.
Read diagram description

Candidate and baseline must receive comparable, meaningful work. A shared database can degrade both, so check the service objective as well as the difference. Insufficient evidence means hold; failure means stop or mitigate. Diagram labels: Bounded representative traffic: Choose assignment and preserve recovery capacity; Candidate: New artifact; Baseline: Known comparison artifact; Compare outcomes: User signals, counts, workload mix and absolute SLO; Decision: Promote in steps · hold · stop / mitigate.

Before admitting that limited work, agree on the changed behavior, expected result, candidate population, baseline and stop criteria, and check instrumentation and recovery in a safe test. Those choices give the team a question it can actually answer over the agreed period. Expand in steps only as the observations support it.

Carry the tested scope forward

A successful canary establishes monitored behavior under its tested conditions. It does not prove every customer configuration, rare failure or full-scale interaction safe. Continue appropriate monitoring and retain recovery after promotion.

Review what was missed and improve later trials where the added evidence is worth the delay. The release-gate guide connects the choice to policy, and the AI release-engineering article separates assistance from independent checks.

Back at the opening release, representative writes make the hour meaningful. The team can inspect whether they completed correctly, how long they took and what they left behind. The green chart now accompanies evidence about the change it is being asked to approve.

Sources & context

Sources linked in this article. Read alongside the author’s analysis; a citation does not independently verify a publisher’s claims.

Report an error or outdated detail

Keep reading

Where to go next