Deploy vs Release
Runtime vs user availability (and why feature flags changed everything)
It’s possible to deploy something to production and still not “release” it.
That’s not a loophole. That’s modern engineering.
Two different questions
Deploy answers:
“Is version X running in environment Y?”
“Can we rollback?”
Release answers:
“Can users access it?”
“Is it enabled for everyone?”
The runtime vocabulary
Environment
A target where software runs: dev / test / staging / prod.
Deploy
Make an artifact run in a target environment.
“Deployed 1.9.3 to staging.”
Promote
Move the same artifact to the next environment.
“Promote 1.9.3 from staging to prod.”
Promotion implies discipline: build once, deploy many.
The release vocabulary
Release
A product moment: you declare a version/feature available (sometimes gradually).
GA (General Availability)
“Available to everyone.”
Beta / Preview / Early Access
Controlled exposure; expectations managed.
Feature flag
Deploy code now, release later (or to specific cohorts).
The story that explains everything
Monday: deploy new checkout flow behind a flag
Tuesday: run internal tests in prod
Thursday: turn on flag for 10% of users
Friday: ramp to 100%
Same deployment. Different release moments.
How to communicate without drama
Use this format in Slack:
Deployed: 1.9.3 → production ✅
Released: feature X → OFF (flagged) ⛔
Next: enable for 10% after metrics check
People relax when they can see the state.
Cheat sheet
Deploy = running somewhere
Release = available to users
Promote = same artifact moves environments
Feature flag = decouple deploy from release
Next: Rollouts — how change reaches users safely.




