Why DevOps Requires A Continuous Deployment Pipeline
DevOps means many (different) things to many (different) people. For the sake of our sanity, let’s focus only on those things that most practitioners can get behind and accept as a component of DevOps.
Underlying all things DevOps is the idea of agility. More specifically, DevOps exalts a commitment to open communication, cross-departmental collaboration, operational transparency, smart tooling (automating all eligible processes), and a modular approach to software development.
In practice, modularizing software development means breaking big projects into small chunks that can be quickly produced and reused. In a sense, it’s about creating Lego-like code blocks that you can use to quickly stack together a build per any configuration.
Working within that framework, the idea is to never stop moving – constantly planning, building, testing, and releasing new projects. That’s the purpose of the continuous deployment pipeline, without which DevOps couldn’t deliver on its promise to more frequently release better, more reliable software.
DevOps: Offering Lots of Value, Some Confusion
Something that I like to do is “collect” quotes and excerpts that I think uniquely capture hard-to-explain aspects of our professional landscape. I like to think of myself as an amateur curator. When I came across an article penned by Gartner analyst Nathan Wilson, I knew I had found in it something worthy of display:
- “DevOps does not have a consistent definition within the industry and the definition is changing because of different impacts. But initially we defined DevOps as applying agile techniques to operations and getting development and operations to actually work together.”
So DevOps equals bringing Agile into production?
- “That was classically the way we talked about it and then a few years ago a major vendor developed a continuous deployment tool and they re-defined DevOps. They saw it as instant deployment – where a developer would check something in and then it would be in deployment within an hour. So that got labelled DevOps.”
So DevOps IS continuous deployment?
Not quite. Gartner explains that DevOps is a “tool-centric philosophy that supports a continuous delivery value chain”.
So DevOps is the philosophy behind Continuous Delivery – a tool-centric philosophy?
As I wrote above, DevOps means many (different) things to many (different) people. Some degree of confusion is therefore to be expected. Still, let’s go ahead and dispel that confusion.
While DevOps and continuous delivery have a lot of practical overlap, they remain distinct in concept. DevOps takes a broader view and includes prescriptions for effective business management and operational culture. As mentioned above, these primarily pertain to open communication, cross-departmental collaboration, operational transparency.
Continuous delivery, on the other hand, is a more narrow methodology concerned with the automation of software delivery. As mentioned above, this primarily pertains to smart tooling and a faster, more modular approach to software development. In this sense, one could say that while DevOps is a strategy, continuous delivery is a set of tactics.
Continuous deployment and continuous delivery similarly overlap. Very often this leads to confusion and people even use the two terms interchangeably. This is a mistake. Just like I wouldn’t talk about DevOps when I mean to refer to continuous delivery so too should I not talk of continuous delivery when I mean to refer to continuous deployment.
In much the same way that continuous delivery zooms in from the broad perspective of DevOps to focus on processes and procedures, continuous deployment similarly zooms in from the broader view of continuous delivery to focus on the constant and largely automated promotion of code from one environment to the next. Thus, according to Martin Fowler, “In order to do continuous deployment one must be doing continuous delivery”.
In the most succinct way of thinking about it, continuous deployment is a cog in the machine of continuous delivery, which is itself embedded within the factory of DevOps.
Why Continuous Deployment Is So Critical to DevOps
Continuous Delivery is the method that promotes the adoption of an automated continuous deployment pipeline to release software reliably and quickly into production. Its goal is to establish an optimized end-to-end process, enhance the time-to-release, lower the risk of bugs, bottlenecks, and software unreliability while ultimately providing a quicker time-to-market. This is of course achieved with the use of tools.
Continuous delivery and DevOps share a background in agile methods and lean thinking: small and quick changes with focused value to the end customer. They are well communicated and collaborated internally, thus helping achieve quick time to market, with reduced risk.
The combination of “softer” or flexible philosophical concepts that go hand-in-hand with a very practical set of continuous delivery and deployment tactics, means that we are talking about similar, but not identical things.
DevOps aim is “aligning development and operations roles and processes in the context of shared business objectives“, and organizing them into principles and practices.
Building Your DevOps-Empowering Continuous Deployment Pipeline
DevOps is about culture. About creating better collaboration between development and operations. About building a well-defined processes and being agile.
You probably can embrace and practice DevOps philosophically without implementing continuous delivery and continuous deployment, but you’d be unnecessarily limiting and stymying the fruits of your labor.
Similarly, you can technically implement continuous delivery and deployment without a wholesale adoption of DevOps on the organizational level. But why would you? Without the overall cultural change – your success will be limited.
To truly succeed, you need it all.
One way to achieve cultural change is to start small. Create some really great success stories in one or a few of your projects – by picking the right people to lead it – and it will take a life of its own. People will say “Hey, this works” – and very quickly, everyone will want to become more agile and have better processes.
Once you start making the cultural change and buoying it with a properly stacked continuous deployment pipeline supporting a continuous delivery ecosystem, you’ll see improved and safer processes organization-wide. In a recent survey, 66% of companies stated that they’re already implementing continuous delivery. That’s not a fad. DevOps, continuous delivery, and continuous deployment are simply the future of software.