DevOps can be confusing enough on its own, and when you throw in the similarly named, but subtly different, continuous deployment and continuous delivery, it’s easy to get lost.
In fact, to fully understand either practice, it’s worth clearing up exactly what we mean by DevOps.
Essentially, DevOps is a method of software development that encourages collaboration between developers and operations staff throughout the application lifecycle, from design through to deployment. This can manifest itself in a variety of ways, but by breaking down traditional workplace silos, DevOps often sees businesses embrace greater agility and automation.
Both continuous deployment and continuous delivery are important aspects of being able to produce and update applications quickly and without disruption, but they are not entirely the same. Continuous delivery is a DevOps staple and refers to the implementation of various practices that ensure code rapidly passes through automated testing and arrives at the staging environment for businesses to ultimately decide whether or not to deploy. Continuous deployment takes automation one step further and ensures that any change is automatically deployed to production.
In both cases agility is paramount, but continuous delivery allows businesses to manually decide when changes are implemented to applications and services. In an ideal world, the majority of companies would adopt continuous deployment, but sometimes regulatory constraints mean that this is not possible. There may also be business scenarios where the IT department must wait before a feature goes live, making continuous deployment unworkable.
Although continuous delivery implies continuous deployment, the reverse is not necessarily the case. Businesses adopting DevOps, therefore, must assess whether continuous deployment or continuous delivery is right for them.