Zero-Downtime Deployments: The Checklist Every Team Needs
Zero-downtime deployments aren't magic. They're the result of disciplining yourself to follow a checklist. Every. Single. Time. Here it is:
Before You Deploy
- Database migrations are backward-compatible (no column renames or drops without a multi-step migration)
- Feature flags wrap any breaking changes
- Health checks are configured and actually test meaningful functionality
- Readiness probes distinguish between "starting up" and "ready for traffic"
During Deployment
- Rolling update strategy is configured (maxUnavailable: 0, maxSurge: 1 minimum)
- Connection draining is enabled (give in-flight requests time to complete)
- New pods pass health checks before old pods are terminated
- Load balancer is aware of the deployment (no traffic to terminating pods)
After Deployment
- Smoke tests run automatically against production
- Error rate monitoring has a threshold that triggers automatic rollback
- Deployment is announced in your team's channel with a link to the diff
- Rollback is one command away and tested within the last 30 days
The Most Common Failure: Not testing rollbacks. Everyone tests deploys. Almost nobody tests rolling back. Schedule a rollback drill monthly. Your future 3 AM self will thank you.
Save this checklist. Print it. Tape it to your monitor.
