Delivery
Deploy vs release
A deploy puts new bits on servers. A release changes what users experience. Keeping them separate lets you ship often and roll back the right thing.
A deploy puts new bits on servers. For a container platform, that means registering a new revision or updating a Deployment's image. A release makes those bits serve behaviour that users can see. The two events can happen at different times, and treating them as one event is how risky launches happen.
Concept
Progressive delivery changes production in small, observed steps. Those steps can be a percentage of traffic, a cohort of users or one host at a time. The system halts or rolls back automatically when the signals look wrong. Canaries and flags are the usual tools.
Walking through the levers
Each lever controls something different, and each one rolls back in its own way.
| Mechanism | What it controls | How it rolls back |
|---|---|---|
| New deployment or revision | Which binary runs | Redeploy the previous artifact |
| Traffic split (load balancer, mesh, ingress) | Which copy of the binary each request reaches | Shift the weight back |
| Feature flag | Which code path runs inside a binary | Turn the flag off |
| Config or secret change | Runtime settings | Revert the config version |
A safe sequence looks like this. Deploy the new code with its flag off. Check process health and error rates, which should not change. Turn the flag on for 1% of users. If the signals stay green, widen it. A broken flag is switched off in seconds. The deploy itself was never user-visible.
Flags and traffic are different tools
Use flags for behaviour, and traffic shifts for binary risk. A flag cannot fix a binary that crashes on start. The crash happens before any code path is chosen, so only a revision or traffic rollback helps. For high-stakes changes, use both.
Common mistakes
- Treating a deploy as a launch. Every merge then becomes a big event.
- Using a flag for a crashing binary. The flag is never reached.
- Deleting the old revision too early. Then there is nothing to roll back to.
Check yourself
- A new build crashes at startup, and its flag is off. Can the flag fix it? Answer: No. The crash happens before any code path is chosen, so you need a revision or traffic rollback.
- What does a traffic split control? Answer: Which copy of the binary each request reaches. Rolling back means shifting the weight to the old copy.
Key takeaways
- A deploy puts bits on servers. A release changes what users see.
- Flags control behaviour inside a binary. Traffic splits control which binary serves.
- Use both for high-stakes changes, and keep the previous revision until the new one is proven.
Further learning
Next, see the main ways to shift traffic from one version to another: rollout strategies.
Related
Deployment strategies and safe releases
Rolling, blue-green and canary deploys, automated rollback, and zero-downtime schema changes - ship often without betting the fleet on every commit.
Feature flags
A feature flag picks a code path at runtime. It lets you deploy code dark, ramp it safely and separate deploy from release. Keep flags short-lived, because stale flags are production hazards.
Configuration, environments and feature flags
Twelve-factor config, environment parity, secrets injection, feature flags and the blast radius of a bad config push.