Deploy as Everyday Activity
Deploy = boring. The norm.
Deploys should be everyday
Daily deploys reduce per-deploy risk. Smaller changes carry less risk per change, fresh context speeds debugging when something breaks, and rollback works because the change set is tractable. Cadence shapes risk; weekly or monthly releases concentrate it.
- Daily reduces per-deploy risk. Smaller change shape per deploy; fresh context, fast rollback, fewer interactions between unrelated changes.
- Weekly or monthly batches risk. Big-bang release pattern per release; concentrates risk into feared events that the team avoids.
- DORA elite ships many times per day. Elite-performer benchmark per team; the shape of release determines risk, not the cadence itself.
- Published target per team. Named deploy-frequency goal per team supports honest progress tracking against the bar.
What enables daily deploys
Three enablers: trunk-based development, feature flags, automated tests with real coverage. Daily deploys without the foundations produce daily incidents instead of daily progress.
- Trunk-based development. No-long-lived-branches rule per team; long-lived feature branches force big-bang merges that cancel daily-deploy benefits.
- Feature flags. Deploy-decoupled-from-release pattern per feature; code lands behind a flag, gets enabled later when ready.
- Automated tests with coverage. Test-suite confidence per service; without them, every deploy is a gamble that the team will eventually lose.
- Documented enabler list per team. Named pre-requisites catch "we want daily deploys but skip the foundations" wishful thinking.
What blocks daily deploys
Three blockers: slow CI, manual approvals, brittle environments. Each halves the achievable deploy rate; addressing them in priority order produces compounding gains.
- Slow CI. Above 30 minutes is the pain threshold per pipeline; daily becomes painful and engineers stop deploying.
- Manual approvals. Each approval layer halves deploy rate; each is friction the team will eventually route around.
- Brittle environments. Broken-staging tax per environment; if staging is broken half the time, deploys stall regardless of CI speed.
- Named blocker priority per quarter. Largest-blocker focus per quarter catches "we tried to fix everything and fixed nothing."
Rollback is as important as deploy
Rollback discipline matches deploy discipline. Fast, automatic on SLO regression, practiced quarterly. Daily deploys without rollback discipline are daily roulette.
- Under 5 minutes decision-to-live. Speed target per rollback; anything slower means extended customer impact during the failure window.
- Automated rollback on SLO regression. Auto-rollback rule per service beats manual rollback at 2am every time.
- Practice rollback. Rollback drill per quarter; the first real rollback should not be the moment you discover the procedure.
- Rollback-tested gate per deploy. Explicit "rollback verified" tag per deploy catches untested rollback paths before the deploy ships.
How to make daily deploys real
Make it real with measurement, focused improvement, and frequency as a leading indicator. Without measurement, "daily deploys" remains aspirational; with it, the team makes provable progress quarter by quarter.
- Measure current frequency. Baseline deploy-rate per team; target: this quarter, double it.
- Pick the biggest blocker. Named focus area per quarter; usually CI speed or approval theatre, occasionally environment brittleness.
- Frequency as leading indicator. Rising frequency per quarter signals the pipeline is healthy; falling frequency signals decay.
- Visible scoreboard per team. Published deploy-frequency dashboard per team supports honest progress conversations.