canary-deployment

star 3

Vercel and Cloudflare canary deployment patterns with traffic splitting, gradual rollout automation, and rollback strategies. Use when deploying with canary releases, implementing progressive rollouts, managing traffic splitting, configuring A/B deployments, or when user mentions canary deployment, blue-green deployment, gradual rollout, traffic shifting, or deployment rollback.

vanman2024 By vanman2024 schedule Updated 11/6/2025

name: canary-deployment description: Vercel and Cloudflare canary deployment patterns with traffic splitting, gradual rollout automation, and rollback strategies. Use when deploying with canary releases, implementing progressive rollouts, managing traffic splitting, configuring A/B deployments, or when user mentions canary deployment, blue-green deployment, gradual rollout, traffic shifting, or deployment rollback. allowed-tools: Bash, Read, Write, Edit

Canary Deployment Skill

This skill provides comprehensive canary deployment capabilities for Vercel and Cloudflare platforms, enabling gradual traffic shifting, deployment validation, and automated rollback strategies.

Overview

Canary deployment is a progressive rollout strategy that reduces deployment risk by gradually shifting traffic from the stable version to the new version. This skill covers:

  1. Traffic Splitting - Configure percentage-based traffic routing between versions
  2. Gradual Rollout - Automated progressive traffic increase (5% → 25% → 50% → 100%)
  3. Health Monitoring - Real-time metrics and error rate tracking during rollout
  4. Automated Rollback - Instant reversion if error thresholds are exceeded
  5. A/B Testing Integration - Use canary deployments for controlled experiments

Supported Platforms

Vercel

  • Edge Config for traffic splitting rules
  • Deployment Protection for staged rollouts
  • Analytics Integration for real-time monitoring
  • Instant Rollback via deployment promotion/demotion

Cloudflare

  • Workers for traffic splitting logic
  • KV Storage for deployment state
  • Analytics Engine for metrics collection
  • Gradual Rollout via route weight configuration

Available Scripts

1. Canary Deploy to Vercel

Script: scripts/canary-deploy-vercel.sh <project-path> <canary-percentage>

Purpose: Deploy new version to Vercel and configure canary traffic split

Actions:

  • Validates Vercel CLI authentication
  • Deploys new version to preview environment
  • Creates Edge Config for traffic splitting
  • Configures percentage-based routing rules
  • Monitors deployment health metrics
  • Provides rollback command if needed

Usage:

# Deploy with 10% canary traffic
./scripts/canary-deploy-vercel.sh /path/to/app 10

# Deploy with 25% canary traffic
./scripts/canary-deploy-vercel.sh /path/to/app 25

# Skip health check (for testing)
SKIP_HEALTH_CHECK=true ./scripts/canary-deploy-vercel.sh /path/to/app 10

# Use custom project name
PROJECT_NAME=my-app ./scripts/canary-deploy-vercel.sh /path/to/app 10

Environment Variables:

  • VERCEL_TOKEN: Vercel authentication token (required)
  • VERCEL_ORG_ID: Organization ID (optional for personal accounts)
  • PROJECT_NAME: Custom project name (auto-detected if not set)
  • SKIP_HEALTH_CHECK: Set to true to skip initial health validation

Exit Codes:

  • 0: Canary deployment successful
  • 1: Deployment failed or validation errors

2. Canary Deploy to Cloudflare

Script: scripts/canary-deploy-cloudflare.sh <project-path> <canary-percentage>

Purpose: Deploy new version to Cloudflare Workers and configure traffic split

Actions:

  • Validates Cloudflare credentials (API token, account ID)
  • Deploys new Worker version
  • Updates KV storage with deployment metadata
  • Configures route weights for traffic splitting
  • Sets up analytics tracking
  • Monitors error rates and latency

Usage:

# Deploy with 10% canary traffic
./scripts/canary-deploy-cloudflare.sh /path/to/worker 10

# Deploy with custom worker name
WORKER_NAME=my-worker ./scripts/canary-deploy-cloudflare.sh /path/to/worker 15

# Skip route update (manual routing)
SKIP_ROUTES=true ./scripts/canary-deploy-cloudflare.sh /path/to/worker 20

Environment Variables:

  • CLOUDFLARE_API_TOKEN: Cloudflare API token (required)
  • CLOUDFLARE_ACCOUNT_ID: Account ID (required)
  • WORKER_NAME: Custom worker name (auto-detected from wrangler.toml)
  • SKIP_ROUTES: Set to true to skip automatic route configuration

Exit Codes:

  • 0: Canary deployment successful
  • 1: Deployment failed or credential errors

3. Gradual Rollout

Script: scripts/gradual-rollout.sh <platform> <project-name> <schedule>

Purpose: Automate progressive traffic increase according to schedule

Actions:

  • Executes multi-stage rollout plan (e.g., 5% → 25% → 50% → 100%)
  • Monitors health metrics at each stage
  • Automatic rollback if error rate exceeds threshold
  • Configurable wait time between stages
  • Sends notifications at each stage

Rollout Schedules:

  • fast: 10% → 50% → 100% (5 min intervals)
  • standard: 5% → 25% → 50% → 100% (15 min intervals)
  • safe: 5% → 10% → 25% → 50% → 75% → 100% (30 min intervals)
  • custom: Custom stages via environment variable

Usage:

# Standard rollout to Vercel
./scripts/gradual-rollout.sh vercel my-app standard

# Fast rollout to Cloudflare
./scripts/gradual-rollout.sh cloudflare my-worker fast

# Safe rollout with monitoring
./scripts/gradual-rollout.sh vercel my-app safe

# Custom rollout schedule
ROLLOUT_STAGES="5,15,35,65,100" ./scripts/gradual-rollout.sh vercel my-app custom

# Custom error threshold (default: 5%)
ERROR_THRESHOLD=3 ./scripts/gradual-rollout.sh vercel my-app standard

Environment Variables:

  • ROLLOUT_STAGES: Comma-separated percentage stages for custom schedule
  • STAGE_WAIT_TIME: Minutes to wait between stages (default varies by schedule)
  • ERROR_THRESHOLD: Error rate percentage triggering automatic rollback (default: 5)
  • SLACK_WEBHOOK: Slack webhook URL for notifications (optional)

Exit Codes:

  • 0: Rollout completed successfully
  • 1: Rollout failed or rollback triggered
  • 2: Health check failure during rollout

4. Rollback Canary

Script: scripts/rollback-canary.sh <platform> <project-name>

Purpose: Instantly rollback canary deployment to previous stable version

Actions:

  • Identifies current canary and stable deployments
  • Routes 100% traffic back to stable version
  • Updates Edge Config or Worker routes
  • Captures rollback event for audit trail
  • Preserves canary deployment for investigation

Usage:

# Rollback Vercel deployment
./scripts/rollback-canary.sh vercel my-app

# Rollback Cloudflare Worker
./scripts/rollback-canary.sh cloudflare my-worker

# Rollback and delete canary
DELETE_CANARY=true ./scripts/rollback-canary.sh vercel my-app

# Rollback with notification
SLACK_WEBHOOK=your_webhook_url_here ./scripts/rollback-canary.sh vercel my-app

Environment Variables:

  • DELETE_CANARY: Set to true to delete canary deployment after rollback
  • SLACK_WEBHOOK: Slack webhook URL for rollback notifications

Exit Codes:

  • 0: Rollback successful
  • 1: Rollback failed
  • 2: Unable to identify stable version

5. Monitor Canary

Script: scripts/monitor-canary.sh <platform> <project-name>

Purpose: Real-time monitoring of canary deployment health metrics

Actions:

  • Fetches error rates, latency, and request volume
  • Compares canary metrics vs stable version
  • Alerts if metrics exceed threshold
  • Logs metrics history for analysis
  • Provides rollback recommendation if needed

Usage:

# Monitor Vercel deployment (runs continuously)
./scripts/monitor-canary.sh vercel my-app

# Monitor with custom interval
MONITOR_INTERVAL=30 ./scripts/monitor-canary.sh cloudflare my-worker

# One-time health check
ONE_SHOT=true ./scripts/monitor-canary.sh vercel my-app

# Monitor with custom error threshold
ERROR_THRESHOLD=3 ./scripts/monitor-canary.sh vercel my-app

Environment Variables:

  • MONITOR_INTERVAL: Seconds between health checks (default: 60)
  • ERROR_THRESHOLD: Error rate percentage triggering alert (default: 5)
  • ONE_SHOT: Set to true for single health check instead of continuous monitoring

Exit Codes:

  • 0: Metrics within acceptable range
  • 1: Metrics exceed threshold (rollback recommended)

Available Templates

1. Vercel Edge Config

File: templates/vercel-edge-config.json

Purpose: Edge Config template for traffic splitting rules

Features:

  • Percentage-based traffic routing
  • Deployment version tracking
  • Rollout state management
  • Feature flag integration

Template Variables:

  • {{CANARY_PERCENTAGE}}: Traffic percentage for canary (0-100)
  • {{CANARY_DEPLOYMENT_URL}}: Canary deployment URL
  • {{STABLE_DEPLOYMENT_URL}}: Stable deployment URL
  • {{ROLLOUT_STAGE}}: Current rollout stage identifier

2. Cloudflare Worker Canary Logic

File: templates/cloudflare-worker-canary.js

Purpose: Cloudflare Worker with traffic splitting logic

Features:

  • Request-based routing algorithm
  • Sticky sessions with cookies
  • A/B testing support
  • Analytics integration
  • Automatic failover

Template Variables:

  • {{CANARY_PERCENTAGE}}: Traffic percentage for canary
  • {{CANARY_WORKER_NAME}}: Name of canary worker
  • {{STABLE_WORKER_NAME}}: Name of stable worker
  • {{KV_NAMESPACE}}: KV namespace for state storage

3. Vercel Middleware Canary

File: templates/vercel-middleware-canary.ts

Purpose: Next.js middleware for canary traffic splitting

Features:

  • Edge runtime execution
  • Cookie-based sticky sessions
  • Geographic routing support
  • Custom routing rules

Template Variables:

  • {{CANARY_PERCENTAGE}}: Traffic percentage for canary
  • {{CANARY_REWRITE_URL}}: URL to rewrite canary traffic to
  • {{ENABLE_STICKY_SESSIONS}}: Enable/disable sticky sessions

4. Health Check Configuration

File: templates/health-check-config.json

Purpose: Health check thresholds and monitoring configuration

Features:

  • Error rate thresholds
  • Latency limits
  • Request volume requirements
  • Rollback trigger rules

Template Variables:

  • {{ERROR_RATE_THRESHOLD}}: Max error rate percentage (default: 5)
  • {{LATENCY_P95_THRESHOLD}}: Max P95 latency in ms (default: 1000)
  • {{MIN_REQUEST_VOLUME}}: Minimum requests before validation (default: 100)

5. Rollout Schedule Configuration

File: templates/rollout-schedule.json

Purpose: Predefined and custom rollout schedule templates

Schedules:

  • Fast: 10% → 50% → 100% (5 min intervals)
  • Standard: 5% → 25% → 50% → 100% (15 min intervals)
  • Safe: 5% → 10% → 25% → 50% → 75% → 100% (30 min intervals)

Template Variables:

  • {{SCHEDULE_NAME}}: Schedule identifier (fast/standard/safe/custom)
  • {{STAGES}}: Array of percentage stages
  • {{WAIT_TIMES}}: Array of wait times between stages

6. Cloudflare KV Schema

File: templates/cloudflare-kv-schema.json

Purpose: KV storage schema for deployment state

Data Structure:

  • Deployment metadata (versions, URLs, timestamps)
  • Traffic split configuration
  • Health check results
  • Rollback history

Available Examples

1. Basic Canary Deployment

File: examples/vercel-basic-canary.md

Purpose: Simple canary deployment to Vercel with 10% traffic

Demonstrates:

  • Initial canary deployment
  • Health monitoring
  • Manual traffic adjustment
  • Rollback procedure

2. Automated Gradual Rollout

File: examples/cloudflare-gradual-rollout.md

Purpose: Automated multi-stage rollout to Cloudflare Workers

Demonstrates:

  • Configuring rollout schedule
  • Automated stage progression
  • Health check integration
  • Automatic rollback on errors

3. A/B Testing with Canary

File: examples/ab-testing-canary.md

Purpose: Using canary deployments for A/B experiments

Demonstrates:

  • Feature flag integration
  • User segmentation
  • Metrics collection
  • Experiment analysis

4. Multi-Region Canary

File: examples/multi-region-rollout.md

Purpose: Progressive rollout across geographic regions

Demonstrates:

  • Region-based traffic splitting
  • Staged regional rollout
  • Cross-region failover
  • Global traffic management

Deployment Workflows

Initial Canary Deployment

# Step 1: Deploy canary with 10% traffic
./scripts/canary-deploy-vercel.sh /path/to/app 10

# Step 2: Monitor health for 15 minutes
./scripts/monitor-canary.sh vercel my-app

# Step 3: If healthy, proceed with gradual rollout
./scripts/gradual-rollout.sh vercel my-app standard

# Step 4: If issues detected, rollback immediately
./scripts/rollback-canary.sh vercel my-app

Automated Gradual Rollout

# Deploy canary and execute automated rollout
./scripts/canary-deploy-vercel.sh /path/to/app 5 && \
./scripts/gradual-rollout.sh vercel my-app standard

# Rollout proceeds automatically:
# - 5% → wait 15 min → health check
# - 25% → wait 15 min → health check
# - 50% → wait 15 min → health check
# - 100% → complete

# Automatic rollback if error rate > 5% at any stage

Emergency Rollback

# Instant rollback to stable version
./scripts/rollback-canary.sh vercel my-app

# Rollback completes in seconds:
# - Traffic routed 100% to stable
# - Canary deployment preserved for debugging
# - Audit trail logged

Best Practices

Traffic Split Strategy

  1. Start Small: Begin with 5-10% canary traffic
  2. Progressive Increase: Double traffic at each stage (5% → 10% → 25% → 50% → 100%)
  3. Minimum Dwell Time: Wait at least 15 minutes at each stage
  4. Monitor Continuously: Track error rates, latency, and request volume

Health Check Thresholds

  1. Error Rate: Rollback if > 5% above baseline
  2. Latency P95: Rollback if > 2x baseline
  3. Request Volume: Require minimum 100 requests for validation
  4. Comparison Window: Compare last 5 minutes canary vs last 15 minutes stable

Rollback Triggers

Automatic Rollback When:

  • Error rate exceeds threshold for 2 consecutive checks
  • P95 latency > 2x baseline for 3 consecutive checks
  • Critical alert from monitoring system
  • Manual trigger via rollback script

Preserve Canary After Rollback:

  • Keep deployment for investigation
  • Analyze logs and metrics
  • Identify root cause before re-deploying

Monitoring and Alerting

  1. Real-Time Dashboards: Vercel Analytics or Cloudflare Analytics
  2. Alert Channels: Slack, PagerDuty, or email notifications
  3. Metric Collection: Log all health checks to external system
  4. Audit Trail: Record all deployment and rollback events

Platform-Specific Features

Vercel

Edge Config Advantages:

  • Ultra-low latency routing decisions (<1ms)
  • Global propagation in seconds
  • No code deployment required for traffic changes
  • Native Next.js middleware integration

Deployment Protection:

  • Preview deployments isolated from production
  • Instant promotion/demotion
  • Automatic HTTPS and DNS management

Analytics Integration:

  • Real-time request metrics
  • Error tracking by deployment
  • Custom event tracking

Cloudflare

Workers Advantages:

  • Edge compute in 300+ locations
  • Sub-millisecond routing logic
  • KV storage for persistent state
  • Analytics Engine for detailed metrics

Gradual Rollout:

  • Route weight configuration
  • Version-based routing
  • A/B testing support

Durable Objects (Advanced):

  • Stateful canary coordination
  • Cross-region synchronization
  • Consistent traffic splitting

Security Considerations

  1. API Token Storage: Always use environment variables, never hardcode
  2. Access Control: Limit deployment permissions to authorized users
  3. Audit Logging: Record all deployment and rollback actions
  4. Secrets Management: Use platform secret stores (Vercel Secrets, Cloudflare Secrets)
  5. Preview Protection: Password-protect canary deployments if needed

Troubleshooting

Vercel Edge Config Not Updating

# Check Edge Config status
vercel env ls

# Verify Edge Config connection
# Check middleware.ts has correct Edge Config import

# Force refresh
vercel env pull

Cloudflare Worker Routing Issues

# Check Worker routes
wrangler routes list

# Verify KV namespace binding
wrangler kv:namespace list

# Test Worker directly
curl https://my-worker.workers.dev

Gradual Rollout Stuck

# Check monitor process status
ps aux | grep monitor-canary

# View rollout logs
tail -f /tmp/gradual-rollout-*.log

# Manual stage progression
./scripts/canary-deploy-vercel.sh /path/to/app 50

Health Check False Positives

# Increase error threshold temporarily
ERROR_THRESHOLD=8 ./scripts/monitor-canary.sh vercel my-app

# Adjust latency threshold
LATENCY_THRESHOLD=2000 ./scripts/monitor-canary.sh vercel my-app

# Require more requests before validation
MIN_REQUESTS=500 ./scripts/monitor-canary.sh vercel my-app

Cost Considerations

Vercel

  • Free Tier: 100GB bandwidth, sufficient for small canaries
  • Pro Tier: $20/month, required for Edge Config in production
  • Edge Config: Included in Pro tier
  • Additional Bandwidth: $40/TB

Cloudflare

  • Free Tier: 100k requests/day on Workers
  • Paid Tier: $5/month for 10M requests
  • KV Storage: $0.50/GB/month
  • Analytics Engine: Included in paid tier

Integration with Dev Lifecycle

This skill integrates with:

  • /deployment:deploy - Execute canary deployment strategy
  • /deployment:validate - Pre-deployment health check validation
  • /deployment:rollback - Emergency rollback orchestration
  • Deployment agents for automated canary management

Platform CLI Commands Reference

Vercel

# Edge Config management
vercel env add EDGE_CONFIG
vercel env pull

# Deployment management
vercel list
vercel inspect <url>
vercel promote <url>
vercel rollback

Cloudflare

# Worker deployment
wrangler publish
wrangler tail

# KV management
wrangler kv:namespace create <name>
wrangler kv:key put <key> <value>
wrangler kv:key get <key>

# Route management
wrangler routes list
wrangler routes add <route> <worker>

Requirements

  • Vercel CLI (npm install -g vercel) for Vercel deployments
  • Cloudflare Wrangler CLI (npm install -g wrangler) for Cloudflare deployments
  • Valid authentication tokens stored as environment variables
  • Project must be deployed at least once before canary rollout
  • Monitoring tools or analytics configured for health checks

Skill Location: /home/gotime2022/.claude/plugins/marketplaces/dev-lifecycle-marketplace/plugins/deployment/skills/canary-deployment/ Version: 1.0.0

Install via CLI
npx skills add https://github.com/vanman2024/dev-lifecycle-marketplace --skill canary-deployment
Repository Details
star Stars 3
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator