DevOps: The Answer to Everything?
Earlier this year renowned ITIL expert Shirley Lacy presented “DevOps in a Cloud Environment” at the 2015 BCS Configuration Management Conference. During her talk, she posed the question “What is DevOps?” to which one audience member jokingly responded “the answer to everything” (a moment captured by Tuuli Sutinen here). And indeed sometimes it does really feel like, no matter what the questions is, DevOps is the answer! But what do we really mean by DevOps and what value does it actually deliver?
It is perhaps easiest to start by describing three things that DevOps is not.
- Firstly, despite the increasing number of job adverts for “DevOps Engineers”, DevOps is not a specific role and neither is it a separate department (distinct from software development or operational management). John E. Vincent describes here the results at one company that set up a discrete DevOps department:
What ended up happening was that the DevOps team was seen as elitist by the operations team, nosy and invasive by the developers and everyone just passed the blame on to them: “DevOps did that, not us.”
This is precisely the opposite result to one of the things that DevOps is trying to achieve: a breaking down of silos, removing an “us and them” mentality and taking a more integrated organisational approach to delivering software.
- Secondly, DevOps is not about using specific technology or tooling. However, DevOps does naturally tend towards Continuous Integration and Continuous Delivery practices which, in turn, are suggestive of a high degree of automation in both testing and deployment.
What I find staggering is how much more accessible these practices have become over the last 20 years. When Kent Beck was “putting automated testing at the heart of software development” back in the 1990s his team couldn’t use an off-the-shelf testing framework because it quite simply didn’t exist. They had to write their own (a story which eventually led to the creation of the entire XUnit family of unit test frameworks). And the idea of being able to build and deploy a database-backed interactive website in a matter of hours without having to buy any hardware or pay for any software licencing was unimaginable. Today we not only have readymade testing frameworks and cloud-based platforms to deploy onto but we also have a wealth of literature and training available which makes these techniques easier than ever to adopt.
Similarly spectacular to me is how containerisation is revolutionising the provisioning of development and production environments. I find it hard to believe that you can now run 2499 web servers in Docker containers on a single Raspberry Pi 2 that costs just £30 (as demonstrated by the winning entry to the Raspberry Pi DockerCon Challenge submitted by a team which included Atos’s Damien Duportal)
- Thirdly DevOps is not a specific software development methodology like Scrum or XP. Chris Baynham-Hughes (who is driving the DevOps capability within Atos Systems Integration in the UK) described it to me like this:
“It is really a change in culture centred on collaboration and continuous improvement and, as such, it’s a journey without a final destination.”
That said, most people engaged with DevOps would probably challenge the value of traditional (waterfall) projects when it comes to software development. And Allan Kelly has even suggested in No Projects - Beyond Projects that managing software development as a “project” is almost always a bad idea. Instead, he suggests that:
“Software exists. Sometimes new software is created but most development work concerns existing, living, software. It makes sense to organise around what is stable rather than what changes. What is required is a means of undertaking lots of small pieces of work on this existing product efficiently.”
And DevOps certainly does lean towards delivering smaller changes more frequently and recognises that it makes sense to organise teams around software products rather than temporary projects.
So to answer the question of “What is DevOps?”
I would say that it is a philosophy for how to build software which aims to:
- break down organisational silos (not create new ones)
- largely automate software integration, test and implementation to enable frequent delivery (whilst not being tied to any specific technologies)
- create a highly collaborative environment with teams seeking to continuously improve (but without mandating a specific process or methodology)
Looking at that definition, you might reasonably ask, “So what is actually new here?”. After all, each of these principles has been understood and applied by some within software engineering for at least the last 10 years and many have a heritage in other fields that started many decades ago. This reminds me of something that software development legend Jim McCarthy told me about Agile:
“Agile especially has done a remarkable job of popularising basic ideas. This is no small trick.”
And DevOps is, to some extent, doing the same thing: popularising basic ideas. And Jim McCarthy was absolutely right: that is no small trick. DevOps is also riding a wave of technological advancement and increased accessibility which means that these principles can be applied in ways that deliver results that simply were not possible 10 years ago. So if we understand what DevOps is (and what it is not) that leaves us with the question of what value does it bring?
As I have said before, for businesses operating in rapidly changing complex environments, for organisations that are facing the challenges of Digitalization, adopting DevOps is no longer a choice; it is rapidly becoming essential for survival.
However even for businesses existing in more stable environments the benefits are still significant, as the Puppet Labs 2015 State of DevOps Report concluded:
“Higher quality, shorter cycle times with quicker feedback loops, and lower costs. And the benefits don’t stop there: These practices also contribute to creating a culture of learning and continuous improvement, lower levels of burnout, and higher organizational performance overall.”
So is DevOps really the answer to everything?
Perhaps, in some ways, it is. Because it is a philosophy rather than a highly prescriptive set of rules. Because it is popularising basic ideas. And because the demonstrable benefits are significant whether you are looking to lower costs and improve organisational performance or fighting for survival in a complex Digital world.