Designing a CI/CD pipeline developers will not route around
A pipeline succeeds when it is fast enough to trust and strict enough to matter. Getting that balance wrong is why teams disable checks.
Progressive delivery limits how many users a bad release can reach. The mechanism matters less than having a rehearsed way back.
Blue-green runs two production environments and switches traffic between them. Rollback is a traffic switch, which makes it fast and predictable, at the cost of running double capacity during a release.
Canary routes a small proportion of traffic to the new version, watches health signals, then increases gradually. It limits exposure and needs good metrics to be meaningful.
Flags let you ship code to production disabled, then enable it for a subset of users. Deployment stops being the moment of risk, which reduces the pressure on release windows considerably.
The discipline is removing flags once a feature is fully released. A codebase carrying dozens of stale flags becomes very difficult to reason about.
For most business applications, rolling deployment with health checks plus feature flags provides the majority of the benefit at modest cost. Blue-green suits systems where an instant, total switch is valuable. Canary suits high-traffic services where a small percentage still provides a statistically useful signal.
The wrong answer is a big-bang release with no rehearsed way back, which is still surprisingly common.
Deciding whether to roll back during an incident is stressful and slow, and the pressure pushes people towards waiting. Agreeing the criteria in advance removes the debate.
Define thresholds — error rate above a level, latency beyond a bound, a critical funnel step failing — and where possible automate the rollback against them. Automated rollback on a clear signal is faster and more consistent than human judgement at three in the morning.
Keep a manual override. Automation handles the obvious cases; people handle the ambiguous ones, and they should not have to fight the automation to do it.
No. Load balancers, managed container services and traditional web servers all support rolling and blue-green approaches. Kubernetes makes some of it more convenient, not possible.
Long enough to gather a meaningful signal for your traffic volume often under an hour for high-traffic services, longer for low-traffic ones where a small percentage takes time to accumulate.
Split it: deploy the additive change, migrate data, deploy code using the new shape, then remove the old column in a later release. It is more steps and it keeps rollback available throughout.
Keep reading
A pipeline succeeds when it is fast enough to trust and strict enough to matter. Getting that balance wrong is why teams disable checks.
Four measures describe delivery performance well. They are useful for finding constraints and harmful when used to compare teams.
Credentials in repositories remain one of the most common causes of breach, and it is one of the most preventable.