The elapsed time for a change made by a developer to reach a customer can now be measured in days or even hours, causing many fundamental changes to software development models. Continuous deployment is a software engineering process where incremental software changes are automatically tested, and frequently deployed to production environments. Continuous deployment was born out of a need to reduce the overhead, to increase the speed of deployment, and to decrease the technical challenge of replicating the production environment for the purposes of testing.
To study this new process, a one-day Continuous Deployment Summit was held at the Facebook campus in July 2015 and again at the Netflix campus in June 2016. The Summits were attended by one person from 15 companies, and facilitated by researchers from North Carolina State University including Laurie Williams. These companies included: 18F, Cisco, Ericsson, Facebook, Google, IBM, LexisNexis, Microsoft, Mozilla, Netflix, Nokia, Red Hat, SAS, Slack, and Twitter. The purpose of each Summit was to share best practices and challenges in transitioning to the use of continuous deployment practices.
The challenges were summarized and discussed with the audience. The main challenges discussed were:
- Database Schema Changes
- Feature Experimentation
- Privacy and Security
- Flaky tests
- Mobile deployment
- Cost of change vs. Cost of defect
- Technical debt
- Tool investment required
- Customer acceptance