If you asked the average person in the street ‘what does DevOps mean to you?’ or even 'what is DevOps?', you’d probably get a blank stare. But what about the people who, while not directly involved, are vaguely aware of DevOps as a concept? While a vague understanding is better than nothing, it leaves room for misconceptions and misinformation, which can be problematic in the long term.
So how can DevOps be accurately defined for a wider audience? Long-term DevOps engineer Alex Honor echoed earlier agile software development principles when he coined the phrase ‘people over process over tools’. This mantra provides a handy list of DevOps priorities, and as such offers a useful framework for an easily understandable definition of DevOps.
Start with the people: DevOps team structure
Everyone loves a good organisational chart, and talking about how DevOps teams organise themselves provides a useful way of understanding how DevOps should work in practice. DevOps is very much about bridging traditionally separate development and operations departments, but this involves more than simply increasing collaboration between teams.
In a traditional DevOps team structure, developers build applications and fix them when necessary, while operations teams work to maintain, support and monitor those applications.
In DevOps, the wall dividing these two worlds disappears – but it’s not just about getting dev and ops teams to work more closely, it’s about creating an environment where developers and engineers work alongside each other at every stage of a product’s lifecycle. In other words, there should be no separation between dev and ops, just a unified DevOps team.
By emphasising the people factor and contrasting a DevOps team structure with more traditional arrangements, it’s easier to visualise DevOps playing out in the real world. This is a great place to start when it comes to demystifying DevOps engineers.
Move on to the process: DevOps and infrastructure as code
When put into practice, DevOps testing is supposed to be faster, more efficient and more reliable than more traditional software engineering methodologies – once the organisational structure is in place, these DevOps benefits can be achieved via innovative processes.
In traditional development and ops, manual tasks have a habit of slowing down processes, and getting in the way of high-frequency deployments. But in DevOps processes based on infrastructure as code (more on the tech later), teams can automate the provision and management of resources.
Take the task of provisioning server resources. In the past, it would be a case of a developer emailing the infrastructure team, asking for a certain set of resources in a specific configuration. Then someone in the infrastructure team would open up a Word document and follow a checklist of tasks, before finally deploying the server.
In a DevOps process, not only are developers and infrastructure engineers working alongside each other in the same team, they’re also implementing processes through infrastructure as code (IaC).
Within the context of IaC, the provisioning of IT resources is automated via code, so rather than provisioning servers manually, the developer simply clicks a button. The desired infrastructure then spins up automatically, accelerating the overall process and giving DevOps teams the means to deploy far more frequently and efficiently.
By describing the automated processes made possible by IaC, the differences between DevOps and more traditional practices become much clearer. For less tech-savvy employees, this explanation provides some much-needed context in terms of the day-to-day working of DevOps teams.
Then talk about ‘DevOps tools’
Technology, and the benefits it brings in terms of automation and management, is a key driver of DevOps. The maturation of cloud computing and virtualisation, and the emergence of infrastructure as a service (IaaS) in particular, provides the flexibility and speed demanded by DevOps.
With IaaS, it’s possible to instantly provision computing resources for highly customised and constantly shifting IT requirements, without on-premises hardware or manual configuration. This in turn enables the infrastructure as code (IaC) processes detailed above, and the level of automation required for DevOps teams to function.
So, cloud computing, in the form of IaaS and by extension IaC, lays the technological foundations of DevOps. That’s the big-picture stuff, but what about those brand-name DevOps tools? Docker, Kubernetes, GitHub, Jenkins, Travis CI… the list goes on, but how vital are these to the core concept of DevOps?
Arguably, not very. While containerisation, source control and continuous integration tools can all perform very important roles within a DevOps context, they’re hardly defining features of DevOps itself.
Continuous configuration automation solutions like Puppet and Chef come more directly under the IaC umbrella, enabling the automatic configuration and scaling of data centre resources. But like the others, these tools would be equally at home in a more traditional setup.
In this sense, there’s no such thing as a ‘DevOps tool’, just tools that can be used within a DevOps organisation for DevOps processes – it’s how you use them that really counts.
So when defining DevOps, don’t fall into the trap of simply reeling off a list of tools. DevOps is far more about people, organisation and process, and while it’s very reliant on IaaS and IaC technologies, many of the DevOps tools are more or less incidental.
And finally: a reminder that DevOps works
The ultimate goal of DevOps isn’t just to unify development and operations, but to result in shorter dev cycles, more frequent deployments, higher-quality products, and happier customers. More bluntly, the ultimate goal of DevOps isn’t just to say, ‘we do DevOps testing’, but to increase productivity and make the business more profitable.
Just look at sprawling organisations like Google and Amazon. The success of these companies hinges on their ability to deploy new software multiple times every day, or even every hour. Amazon and Google may not agree on a precise definition of the term, but what they do agree on is that DevOps, as a set of unified software engineering practices, is crucial to their profitability.
With a consensus on the broad strokes of DevOps emerging over the last few years, lack of definition will hopefully become less of an issue as DevOps culture crystallises. In the meantime, the good news is that the big ideas behind DevOps are also the most straightforward to explain.
By breaking DevOps engineers down into people first, process second, and tools third, an accurate and relatively simple definition is possible. DevOps is fundamentally about people, how developers and engineers organise themselves and work as a unified team to deliver better products faster. It’s on top of this structure that DevOps processes are built, with a heavy focus on automation and innovative tools – always within the context of the core DevOps principles and practices.
Whether you’ve embraced DevOps or not, at Fasthosts you’ll find Web Hosting, Dedicated Servers and a next-generation cloud hosting platform to meet the needs of your project. Get in touch for more details on how Fasthosts supports developers every day.