Canary Release
Also Known As
canary deployment
canary rollout
progressive delivery
TL;DR
Gradually routing a small percentage of traffic to a new release, monitoring for issues before a full rollout.
Explanation
A canary release deploys a new version to a small subset of users or servers first — typically 1–5% — and monitors error rates, latency, and business metrics before progressively increasing traffic. If metrics degrade, the release is rolled back with minimal user impact. Named after the canary in a coal mine. Canary releases require feature-flag infrastructure or a smart load balancer (Nginx, AWS ALB, Kubernetes rollout strategies). Combined with observability tooling, they make production the final test environment without risking the entire user base.
Diagram
flowchart LR
LB[Load Balancer] -->|95 pct traffic| STABLE[Stable v1.2]
LB -->|5 pct traffic| CANARY[Canary v1.3]
CANARY --> MON{Monitor<br/>Errors/Latency}
MON -->|Healthy| EXPAND[Increase to 20 pct<br/>then 50 pct then 100 pct]
MON -->|Problems| ROLLBACK[Route 0 pct to Canary<br/>Rollback complete]
style STABLE fill:#238636,color:#fff
style CANARY fill:#d29922,color:#fff
style EXPAND fill:#238636,color:#fff
style ROLLBACK fill:#f85149,color:#fff
Common Misconception
✗ Canary releases are the same as A/B testing. Canary releases gradually shift traffic to a new version while monitoring for errors — the goal is safe deployment. A/B testing compares two versions to measure user behaviour — the goal is product experimentation. They use similar infrastructure but serve different purposes.
Why It Matters
Canary releases expose a new version to a small percentage of real users before rolling it out fully — real traffic catches bugs that staging environments cannot simulate, with blast radius limited to 1–5% of users.
Common Mistakes
- Not defining success metrics before the canary — you need to know what "healthy" looks like to decide when to proceed.
- Running the canary for too short a time — some bugs only appear under specific conditions or traffic patterns.
- Sending the same users to the canary every time — cookie-based routing biases the sample.
- Forgetting that database schema changes must be backward-compatible during a canary — old and new code run simultaneously.
Code Examples
✗ Vulnerable
// Full deploy to all users at once — no canary:
// v2 deployed to 100% of servers simultaneously
// Bug in v2 affects 100% of users immediately
// Canary:
// v2 deployed to 5% of servers
// Monitor error rate, latency for 30 minutes
// Gradually increase: 5% → 25% → 50% → 100%
// Roll back instantly if metrics degrade
✓ Fixed
# nginx — route 5% of traffic to canary
upstream app {
server stable-app:9000 weight=95;
server canary-app:9000 weight=5;
}
# Monitor error rate and latency on canary before increasing weight
# Rollback: set canary weight=0, redeploy nginx config
# Feature-flag approach (no infra change needed)
if ($this->featureFlags->isEnabled('new_checkout', $user)) {
return $this->newCheckoutService->process($cart);
}
return $this->legacyCheckoutService->process($cart);
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
15 Mar 2026
Edited
22 Mar 2026
Views
27
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
Amazonbot 8
Perplexity 7
Ahrefs 4
Unknown AI 2
Google 1
Also referenced
How they use it
crawler 22
Related categories
⚡
DEV INTEL
Tools & Severity
🟡 Medium
⚙ Fix effort: High
⚡ Quick Fix
Route 5% of traffic to the new version, monitor error rates and latency for 15 minutes, then gradually increase to 25% → 50% → 100% — roll back instantly if metrics degrade
📦 Applies To
PHP 5.0+
web
api
🔗 Prerequisites
🔍 Detection Hints
All-or-nothing deployments with no gradual rollout; no traffic splitting capability; rollback taking 30+ minutes
Auto-detectable:
✗ No
kubernetes
nginx
aws-alb
istio
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: Medium
✗ Manual fix
Fix: High
Context: File