9 min read • Guide 816 of 877
Progressive Delivery Strategies
Deploy with confidence. GitScrum helps teams track progressive delivery releases, ensuring features reach users safely and incrementally.
Progressive Delivery Overview
Deployment Strategies
DEPLOYMENT STRATEGIES COMPARED:
┌─────────────────────────────────────────────────────────────┐
│ │
│ BIG BANG DEPLOYMENT (Risky): │
│ ──────────────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Old Version ──────────────→ New Version ││
│ │ 100% users 100% users ││
│ │ ││
│ │ All at once, all or nothing ││
│ │ Risk: If broken, everyone affected ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ BLUE-GREEN DEPLOYMENT: │
│ ────────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ BLUE (Old) ◄── Traffic ──► GREEN (New) ││
│ │ v1.0 switch v1.1 ││
│ │ ││
│ │ Two identical environments ││
│ │ Switch traffic instantly ││
│ │ Easy rollback (switch back) ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ CANARY DEPLOYMENT: │
│ ────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Traffic: ──┬──────────────────────────→ Old (95%) ││
│ │ └────────────────────────→ New (5%) ││
│ │ "Canary" ││
│ │ ││
│ │ Small percentage gets new version ││
│ │ Gradually increase if healthy ││
│ │ Detect problems early ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FEATURE FLAGS: │
│ ────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ Code deployed to all users ││
│ │ Feature enabled for subset ││
│ │ ││
│ │ if (featureFlag.enabled("new-checkout")) { ││
│ │ showNewCheckout(); ││
│ │ } else { ││
│ │ showOldCheckout(); ││
│ │ } ││
│ │ ││
│ │ Toggle without deployment ││
│ │ Target specific users/groups ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Canary Releases
Gradual Rollout
CANARY ROLLOUT PROCESS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ROLLOUT STAGES: │
│ ─────────────── │
│ │
│ STAGE 1: Canary (1-5%) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ █ (5%) ││
│ │ ████████████████████████████████████████████████(95%) ││
│ │ ││
│ │ Duration: 15-30 minutes ││
│ │ Watch: Error rates, latency ││
│ │ Criteria: Errors <1%, latency <200ms ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ STAGE 2: Early Adopters (10-25%) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ █████████████ (25%) ││
│ │ ██████████████████████████████████████████ (75%) ││
│ │ ││
│ │ Duration: 1-2 hours ││
│ │ Watch: Business metrics, user behavior ││
│ │ Criteria: Conversion stable, no complaints ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ STAGE 3: Majority (50%) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ █████████████████████████ (50%) ││
│ │ █████████████████████████ (50%) ││
│ │ ││
│ │ Duration: 2-4 hours ││
│ │ Watch: All metrics stable ││
│ │ Criteria: No degradation ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ STAGE 4: Complete (100%) │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ██████████████████████████████████████████████(100%) ││
│ │ ││
│ │ Full rollout ││
│ │ Continue monitoring ││
│ │ Keep rollback ready ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ AUTOMATED CANARY: │
│ ───────────────── │
│ • Automatic progression based on metrics │
│ • Automatic rollback on threshold breach │
│ • Human approval gates optional │
└─────────────────────────────────────────────────────────────┘
Blue-Green Deployments
Environment Switching
BLUE-GREEN PROCESS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ STEP 1: INITIAL STATE │
│ ───────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ LOAD BALANCER ────────────→ BLUE (v1.0) ◄─ ACTIVE ││
│ │ ││
│ │ GREEN (v1.0) ◄─ IDLE ││
│ │ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ STEP 2: DEPLOY TO IDLE │
│ ────────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ LOAD BALANCER ────────────→ BLUE (v1.0) ◄─ ACTIVE ││
│ │ ││
│ │ GREEN (v1.1) ◄─ DEPLOYING ││
│ │ ││
│ │ • Deploy new version to GREEN ││
│ │ • Run smoke tests ││
│ │ • No user traffic yet ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ STEP 3: SWITCH TRAFFIC │
│ ────────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ LOAD BALANCER ────────────→ GREEN (v1.1) ◄─ ACTIVE ││
│ │ ││
│ │ BLUE (v1.0) ◄─ IDLE ││
│ │ ││
│ │ • Switch load balancer ││
│ │ • All traffic now to GREEN ││
│ │ • BLUE ready for rollback ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ STEP 4: IF PROBLEM - ROLLBACK │
│ ───────────────────────────── │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ││
│ │ LOAD BALANCER ────────────→ BLUE (v1.0) ◄─ ACTIVE ││
│ │ ││
│ │ GREEN (v1.1) ◄─ INVESTIGATE││
│ │ ││
│ │ • Instant rollback: switch back to BLUE ││
│ │ • Minimal downtime ││
│ │ • Investigate GREEN at leisure ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ BENEFITS: │
│ • Instant rollback │
│ • Test in production environment before traffic │
│ • Zero-downtime deployments │
└─────────────────────────────────────────────────────────────┘
Feature Flags
Flag Management
FEATURE FLAG STRATEGIES:
┌─────────────────────────────────────────────────────────────┐
│ │
│ FLAG TYPES: │
│ ─────────── │
│ │
│ RELEASE FLAG: │
│ Control feature availability │
│ • "Show new checkout" │
│ • Short-lived (remove after full rollout) │
│ │
│ EXPERIMENT FLAG: │
│ A/B testing │
│ • "Checkout button color test" │
│ • Measure impact on metrics │
│ │
│ OPERATIONAL FLAG: │
│ Control system behavior │
│ • "Enable cache" │
│ • "Use new API endpoint" │
│ │
│ KILL SWITCH: │
│ Emergency disable │
│ • "Disable payment processing" │
│ • Permanent, for emergencies │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ TARGETING OPTIONS: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ FLAG: new-checkout ││
│ │ ││
│ │ TARGETING RULES: ││
│ │ ││
│ │ 1. Internal users (email @company.com) → ON ││
│ │ 2. Beta users (opted in) → ON ││
│ │ 3. Premium users → 50% ON ││
│ │ 4. Everyone else → 10% ON ││
│ │ ││
│ │ FALLBACK: OFF ││
│ │ ││
│ │ METRICS: checkout_completion_rate ││
│ │ OWNER: @product-team ││
│ │ CREATED: Jan 15, 2025 ││
│ │ REVIEW DATE: Feb 15, 2025 ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ FLAG LIFECYCLE: │
│ ─────────────── │
│ Create → Test → Roll out → Clean up │
│ │
│ ⚠️ Remove flags after rollout complete │
│ Old flags = technical debt │
└─────────────────────────────────────────────────────────────┘
Rollback Strategies
When to Roll Back
ROLLBACK DECISION:
┌─────────────────────────────────────────────────────────────┐
│ │
│ PRE-DEFINE CRITERIA: │
│ ──────────────────── │
│ │
│ Set BEFORE deployment, not during incident │
│ │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ RELEASE: v2.4.0 ││
│ │ ││
│ │ ROLLBACK TRIGGERS: ││
│ │ ││
│ │ AUTOMATIC ROLLBACK IF: ││
│ │ • Error rate > 1% (baseline: 0.1%) ││
│ │ • p95 latency > 500ms (baseline: 200ms) ││
│ │ • 5xx responses > 0.5% ││
│ │ ││
│ │ MANUAL REVIEW IF: ││
│ │ • Conversion drops > 5% ││
│ │ • Unusual traffic patterns ││
│ │ • Customer complaints spike ││
│ │ ││
│ │ ACCEPTABLE (No action): ││
│ │ • Metrics within 10% of baseline ││
│ │ • Known expected behavior changes ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ ROLLBACK PLAYBOOK: │
│ ────────────────── │
│ │
│ 1. DETECT: Metric exceeds threshold │
│ 2. ALERT: Pager/Slack notification │
│ 3. DECIDE: Verify not false positive (1-2 min) │
│ 4. EXECUTE: Run rollback (automated preferred) │
│ 5. VERIFY: Confirm metrics recovering │
│ 6. COMMUNICATE: Update stakeholders │
│ 7. INVESTIGATE: Root cause (after stable) │
│ │
│ RULE: Rollback first, investigate later │
│ Don't debug in production during outage │
└─────────────────────────────────────────────────────────────┘
Tracking Releases
Release Tracking
RELEASE TRACKING IN GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│ │
│ RELEASE BOARD: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ PLANNED │ DEPLOYING │ CANARY │ ROLLING │ COMPLETE ││
│ │ │ │ │ OUT │ ││
│ │ ┌─────┐ │ │ ┌─────┐ │ │ ┌─────┐ ││
│ │ │v2.5 │ │ │ │v2.4 │ │ │ │v2.3 │ ││
│ │ │Jan28│ │ │ │ 25% │ │ │ │Done │ ││
│ │ └─────┘ │ │ └─────┘ │ │ └─────┘ ││
│ │ │ │ │ │ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ RELEASE DETAILS: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ RELEASE: v2.4.0 ││
│ │ STATUS: Canary (25%) ││
│ │ ││
│ │ ROLLOUT PROGRESS: ││
│ │ ████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 25% ││
│ │ ││
│ │ METRICS: ││
│ │ • Error rate: 0.08% (baseline: 0.1%) ✅ ││
│ │ • Latency p95: 185ms (baseline: 200ms) ✅ ││
│ │ • Conversion: 4.2% (baseline: 4.1%) ✅ ││
│ │ ││
│ │ INCLUDED FEATURES: ││
│ │ • STORY-234: New checkout flow ││
│ │ • STORY-245: Payment retry logic ││
│ │ • BUG-678: Fix cart calculation ││
│ │ ││
│ │ TIMELINE: ││
│ │ 10:00 - Deployed to canary (5%) ││
│ │ 10:30 - Metrics healthy, increased to 25% ││
│ │ 12:00 - Review, plan 50% rollout ││
│ │ ││
│ │ OWNER: @jordan ││
│ │ NEXT: Increase to 50% at 12:00 if healthy ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘