Blue-green deployment switches 100% of traffic atomically. But sometimes the risk of exposing all users to a new version simultaneously is too high. A new algorithm that performs poorly under specific traffic patterns, or a UI change that confuses a significant portion of users, may only manifest under real production load. Canary deployment solves this by gradually shifting traffic — 1%, 5%, 20%, 50%, then 100% — monitoring error rates, latency, and business metrics at each step and automatically rolling back if thresholds are breached. Progressive delivery is the broader discipline encompassing canary, feature flags, and traffic shaping as a family of risk-reduction techniques.
Analogy🏏Cricket
🏏 Think of it like cricket: A cricket series is structured in three tiers: the series schedule (which matches are played and when), individual match plans (batting order, bowling rotations, fielding strategy), and specific delivery plans (which balls to bowl to which batsman in which over). The series schedule is the workflow — it defines the overall event. Each match is a job — it runs independently but contributes to the series outcome. Each delivery plan is a step — a specific action with a discrete result. Just as a Test captain doesn't redesign the series schedule for every match but does adjust the bowling plan for each innings, GitHub Actions separates what triggers the automation (workflow) from how independent tasks are parallelised (jobs) from the individual commands executed (steps). The insight is that this separation of concerns is what allows large, complex pipelines to remain manageable — just as a well-structured series plan keeps a touring team organised across multiple venues and formats.