Deploying with confidence: a practical checklist
When you’re dealing with production how important it is that you don’t forget to do things right?An exhaustive list of checklist items is very useful in order to maximize my confidence in an app deployment. Maybe you'll never be 100% sure that a deployment will go well but you might be 100% confident, even that’s not really the same thing.
So ask yourself:
Are you working on a section of the code in which someone else is more expert, and if so have you done a sanity check with them regarding your changes?
Have you tested your code branch thoroughly? Test your changes locally.
You’ve run the test suite locally?
You pulled the last version from master, check that integration with the other changes should work?
Do anyone committed on development branch before your feature is completed? You’ve tested other recent changes to make sure you didn’t break things for anyone else?
You’ve proven that the scope of your changes is accurate and that there won’t be unanticipated ripple effects?
Are there any tests that you didn’t write that should be written? If so, go write them!
You’ve merged your branch LOCALLY into your LOCAL copy of master, and re-done all your testing?
Does the git log look correct as you expect it to look? If anything is unexpected, understand what happened and back out if necessary
Have you done a sanity check to make sure that you’re operating in reality instead of some version of reality that you’ve concocted for yourself?
Is the Continuous Integration build it passing?
ONLY WHEN READY, merge to REMOTE master
You’ve deployed and tested your changes in a Staging environment?
You’ve asked about any recent problems with deployment that other developers might have had, and if there are any special steps you need to take during deployment?
You’ve gone over your rollback plan? Are you sure? Does your deploy involve data models changes and as a consequence any database MIGRATIONS?
You’ve got your deploy scheduled at an appropriate time?
Have you notified any potentially affected parties that rely on your app and who may be affected if there is downtime?
Did anything go wrong with the previous deployment, and if so did you update this checklist to reflect the lessons learned?
Are you really sure you’re ready to deploy? Now it’s okay :)