We welcomed Christie Wilson to the TechTalks podcast to discuss her speciality, continuous delivery. Christie is a software engineer at Google and the author of a new ebook Grokking Continuous Delivery. There, we discussed the concept of continuous delivery vs continuous deployment, why these two terms are confused with one another, and what the main differences are.
Though both concepts originated in the 1990s, during the Extreme Programming movement, it wasn’t until later in 2009 and 2010 that definitive definitions were created. Keep reading to find out those defined differences, from the mouth of the experts.
What constitutes continuous delivery?
In Christie’s words, “continuous delivery is kind of a bit more of a vague term for a set of practices” to describe the continuous work happening on any given project (or simultaneous projects happening at one time). This set of practices can include:
- The initial code writing for a particular project
- The testing process (which can include several stages such as unit, integration and system testing)
- Fixing issues discovered in the tests
- Continually writing code to amend original code
- Publishing and finally, deploying the code
The practices that are part of continuous delivery can also include the deployment of the code itself, but may not always be included in a continuous delivery pipeline.
Christie also helps to define continuous delivery by describing it as a concept of two parts:
- “One way is all about having your code in a state where you can release at any time, safely.”
- “The other part is about making that releasing or deploying as easy as possible.”
This two-part definition is intrinsically related to continuous integration. So, in order to ensure your code is in a releasable state, any edits you make in the fixing and testing stages should be seamlessly integrated with the existing code. By doing so, you can make sure that the edits you’ve made are “safe and successful”.
Continuous integration is in Christie’s mind, the “first big chunk of what you need, in order to be doing continuous delivery”. So, in order to continually carry out effective delivery of changes, you should ensure your code and systems are integrated for ease. Making integration a priority in the stage before deployment allows more seamless delivery and, eventually, a launch that goes off without a hitch.
What is continuous deployment?
Continuous deployment refers to the process where you are literally deploying as frequently as you possibly can. In Christie’s words, this means that “usually, every commit is going straight out to production.”
So the deployment definition does not refer to the work going into the code, but rather to the action of it going live. Continuous deployment then is the process of updating software continuously, rather than the process of fixing bugs, and testing before launch.
So what is the difference between continuous delivery vs continuous deployment?
Hopefully, using Christie’s specific definitions of each term, it’s easier to understand how the delivery process is a set of practices such as writing and testing code, but the continuous deployment can be the results of these tests and constantly iterated code going live in your software.
For more detail on the testing process, you can listen to the full podcast, featuring Softwire’s own Zoe Cunningham with Christie Wilson. And if you’re looking for more digital insight, check out the #TechTalks podcast series on Soundcloud.