This is what we are learning in the Company that I work for, where we are moving from an “svn update /var/www” anti-pattern to a deployment pipeline in 4 different environments, from Dev to Production.
Here you can find real solutions and how-to that worked on our environment.
Practices that we follow for Continuous Deployment
As soon as we feel that we are suffering in some way, we try to find a Practice to mitigate this sufferance. Here what we did until now
Practice #1: Same software stack from dev to production environment
Mitigate: “on my PC works!”
Practice #2: Dedicated Continuous Integration environment for unit test
Mitigate: “on my PC works!”
Practice #3: Deploy on the same way from dev to production environment
Mitigate: deployment to production fails
Practice #4: Smoke test the deployments
Mitigate: major configuration errors
Practice #5: Use Business Metrics (KPI) to validate deploy
Mitigate: deployment to production secceded, but business was impacted
Practice #6: Automate Rollback
Mitigate: production downtime after a failed deploy
Practice #7: Keep deployment pipeline fast
Mitigate: too much time required to go in production
Practice #8: Scale down, not up
Mitigate: “on my PC works!”
(updated soon…)