DevOps is a term you hear everywhere these days, but it means different things to different people. To some, DevOps is a process. To others, it’s basically a communication strategy. Some people might define DevOps in terms of certain types of tools, while others define it in opposition to other software delivery strategies, without really elucidating what the DevOps definition actually is. In short, agreeing on what DevOps is, and how you do it, is tricky.
In an effort to clear up at least some of this confusion, this article surveys different approaches to defining DevOps. The goal is not to provide a definitive definition of DevOps, but rather to offer some context to help IT professionals determine what DevOps should mean to their organizations.
Differing Definitions of DevOps
To appreciate just how widely definitions of DevOps can vary, consider the ways in which the various organizations define the term.
AWS: Amazon Web Services, or AWS, tells us that DevOps means “the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity.” For AWS, then, DevOps is founded upon concepts, processes and tools, and its end goal is to increase the rate at which applications and application updates are deployed.
DevOps.com: Writing on DevOps.com, Neal Thomas offers a somewhat different definition of DevOps. He also believes that tools and processes are important components of DevOps, but he places the most emphasis on the people part of the equation, arguing that DevOps is first and foremost about “bridging traditionally separate development and operations departments.” Thomas also stresses rapid software delivery as a central goal of DevOps.
The Agile Admin: In its definition of DevOps, the Agile Admin says that DevOps basically boils down to collaboration between groups who traditionally do not work closely together: “DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support.” That’s similar to the DevOps.com definition, the Agile Admin doesn’t mention tools much at all, suggesting instead that any type of toolset can help you achieve DevOps. On the other hand, cultural philosophy is important in the Agile Admin's definition, as is the notion that DevOps is basically an evolved form of the “agile” software development philosophy. The latter concept became popular in the early 2000s, about a decade before anyone started talking about DevOps.
Other Ways to Define DevOps
If these varying DevOps definitions aren’t enough to convince you that DevOps can mean different things to different people, there are other elements to consider.
One is to think of DevOps as being about collaboration not just between developers and IT operations teams, but also among the other individuals and groups in the organization that play a role in application delivery (such as such software test engineers and security admins).
I’m also not sure that faster application delivery is always the be-all, end-all of DevOps, as some of the definitions above suggest. Improving delivery speed (and achieving “continuous delivery”) may have been an important part of the DevOps conversation early on. For many DevOps teams, today, however, delivering high-performing, customer-pleasing, secure software may be at least as important a reason for adopting DevOps as achieving better speed.
Defining DevOps for Your Organization
I think that trying to write a universal definition of DevOps is a fool’s errand. There’s just no way of defining it in a way that will meet everyone’s expectations, or that will enable every organization to build a straightforward strategy for “doing” DevOps. (Nor is there, for that matter, a universally “best” programming language for DevOps.)
It’s healthier to approach DevOps simply as a way to modernize the way your organization manages software development and deployment. The ways that this modernization happens can vary widely. Improving collaboration among different teams is likely to be part of the equation. So are automation and new processes. But there is no one-size-fits-all recipe for implementing DevOps.
DevOps Is Not Fluff
You might be wondering, then, what the point of DevOps is. If we can’t ascribe any specific, universal meaning to DevOps, is it just a fluffy concept that doesn’t actually help us improve things on the ground?
To the contrary, flexibility is a core part of the power of DevOps. If there were a single definition of DevOps--or a single set of tools, processes or people that enable the model--DevOps would not be so broadly applicable to such a wide range of organizations.
In other words, DevOps's ability to resist a singular definition is part of what makes DevOps so useful. So, instead of worrying about how, exactly, to define DevOps, make the decision to embrace DevOps in whatever form makes the most sense for you. You don't have to think about or implement DevOps in the same way as other organizations to reap its benefits. Nor, for that matter, do you even need to seek the same benefits.