Written By: Daniel Kulvicki, Solutions Director at Calavista
Often, Continuous Deployment is considered a step too far for most development organizations. Many people fear that it removes any gates or approval process and puts the release mechanism solely in the development team’s hands. This is incorrect. Continuous Deployment can actually can increase controls and provide better quality code!
I found an article online that described Continuous Deployment as too risky for any organization. Although the author made some great points, a wrong assumption was made that quality gates and even testers would go away. Yes, without quality gates and testers Continuous Deployment would be an absolute disaster. Continuous Deployment does not always mean Continuous Release. With concepts like A/B testing, feature toggling, and dark launches; it is possible to be able to continuously deploy safely, even to production, while being safe to your users. Below is a standard definition for Continuous Deployment.
“Continuous deployment can be thought of as an extension of continuous integration, aiming at minimizing lead time, the time elapsed between development writing one new line of code and this new code being used by live users, in production.
To achieve continuous deployment, the team relies on infrastructure that automates and instruments the various steps leading up to deployment, so that after each integration successfully meeting these release criteria, the live application is updated with new code.
Instrumentation is needed to ensure that any suggestion of lowered quality results in aborting the deployment process, or rolling back the new features, and triggers human intervention.”
Per the definition, instrumentation and automation are very key principles to Continuous Deployment, however; I have found that there are other requirements for Continuous Deployment that are equally as important. Quality gates and work contained in small batches allow for the right mindset to perform more frequent releases to production. You want to build a cadence with your team without quality suffering. At Calavista, we have a good set of principles to help enable that speed of deployment with the right security blanket for your team.
In my opinion, Continuous Deployment will only become more popular in the future and adoption will increase greatly. However, we cannot just jump into it. It needs to be treated the same as an organization moving from Waterfall to Agile development. Many different parts of a company will need to change to adapt to the new release model.
In my next blog, I will address a recommended implementation of a continuous release chain that we support at Calavista.