Continuous deployment is a methodology whereby software code checked into a repository for a web application is automatically sent to the production server after all automated tests pass with no other human intervention. While not being an easy process to describe, it’s revolutionary in how it affects software development. The traditional software development process, even if agile, often involves bottlenecks around manual QA, a limited number of engineers empowered to push a release, and numerous issues when major changes are pushed.
Here are some thoughts on continuous deployment:
- Software releases go from big productions to non issues
- Small changes result in small issues and large changes result in large issues (bugs are inevitable, so keep them small)
- Automated testing becomes a critical part of the development process and no longer an after thought (there’s no right answer to how much code coverage is necessary other than it needs to be suitable to the product)
- New developers should push code to production on their first day, setting the tone for a culture that moves quickly and isn’t afraid to make mistakes
- Config flags are an important part of continuous deployment such that code that’s being worked on, but not ready to be seen by end users, is still pushed to production during development
Software-as-a-Service, whereby programs are delivered over the internet, makes continuous deployment possible (continuous deployment doesn’t work for installed software). With time, continuous deployment will become more prominent, especially when firms like Etsy espouse its benefits.
What else? What are your thoughts on continuous deployment in startups?