This year I started a YouTube channel in which, every week, I discuss ideas related to Continuous Delivery. I have been very pleased with its success.
As part of that, but also because of working from home more as a result of the COVID pandemic, I began to take a more active part in Twitter. The combination of these things is that I now feel much more strongly, than I did before, part of a community. There are a large group of us that regularly communicate and discuss ideas on Twitter and sometimes in the comments on my YouTube channel.
A regular contributor, and digital friend, on both, Jim Humelsine, commented on my latest YouTube video which discusses the topics of Continuous Delivery and Continuous Deployment. Two closely related ideas that are subtly different, and that are the topic of this week’s episode on my channel.
I thought that it was a really good question and that it may help to clarify my answer to it here as well as in the comments section of YouTube. So this post is about definitions and subtle differences in what we mean in the language that surrounds the practice of Continuous Delivery and DevOps.
Jim’s question
“Can you please restate definitions for Release, Deploy and Delivery? I’m still a bit confused among them, especially the distinction between Deploy and Delivery.”
My answer
It is confusing and my wife, Kate, pointed out to me recently that I am not completely consistent in how I use the words. I use the words in the following way:
Deploy – The technical act of copying some new software to a host environment and getting it up-and-running and so ready for use. In context with ‘Continuous’ as in ‘Continuous Deployment’ I use it to mean ‘automating the decision to release’ – If your deployment pipeline passes, you push the change to production with no further actions.
Release – Making a new feature available for a user to use. (Note: we can deploy changes, that aren’t yet ready for use by a user, when we make them available to a user, with or without a new deployment, we release them – I plan to do a video on strategies for this).
Delivery – In context with ‘Continuous’ I generally mean this in a broader context. for me ‘Continuous Delivery’ makes most sense as used in the context of the Principles listed in the Agile Manifesto – ‘Our highest priority is the early and continuous delivery of valuable software to our users’. So it is about a flow-based (continuous) approach to delivering value. That means that the practices need to achieve CD are the practices needed to maintain that flow of ideas – so it touches on all of SW dev. I know that this is an unusually broad interpretation, but it is the one that makes the most sense to me, and the one that I find helps me to understand what to do if I am stuck trying to help a team to deliver.
There is, as far as I know, one place where my language is regularly a bit inconsistent, at least one place that Kate has told me about. I tend to talk about working towards “Repeatable, Reliable Releases”, if I were willing to drop the alliteration and speak more accurately what I really mean is “Repeatable, Reliable Deployments”.
I hope that this helps a bit?
If you are interested in taking a look at my YouTube channel you can find it here.
If you would like to join a group of opinionated people over on Twitter you can see my stuff here.