What is DevOps?

Learn about DevOps, including its goals, ideas, principles, and technologies.

The term DevOps was originally developed to address the commonly fractured relationships between development, security, and operations organizations, and the challenges caused by that conflict.

Lean manufacturing and Lean IT principlesAs espoused by Jez Humble and David Farley in their book, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (2015) (which focus on the elimination of any surplus materials and tools from the workspace and the establishment of order) underpin DevOps methods, as well as software development practices, such as:

  • Agile
  • Scrum
  • Kanban

DevOps methodologies include tools, processes, and goals to improve efficiency. However, there’s no authoritative scripture handed down on tablets showing the “true DevOps way.” That may be its central strength: DevOps has roots in some key ideas and principles, but they’re open to interpretation and adaptation.

Given the freedom to interpret DevOps in so many ways, where does one begin to understand it?

The best way to understand DevOps is to understand its goals:

  • What is DevOps intended to accomplish?
  • DevOps doesn’t exist for its own sake—it’s a means to an end.

In essence, DevOps is designed to address the natural conflicts between traditional development, security, and operations organizations, as well as the inefficiencies created by conflict in the process of software delivery.

This isn’t the whole story of DevOps, but it’s one of its central themes. IT experts have been implementing and writing about DevOps since before it was called “DevOps.” Their objective has been more efficient software delivery by eliminating waste in the software delivery process.

Eliminating waste in a process begins with identifying the sources of waste. DevOps “leans” (pun intended) on the principles of lean manufacturing and Lean IT to help identify waste sources in the software delivery process. DevOps began as a way to describe the waste caused by the conflict between development, security, and operations.

DevOps is a collection of ideas, principles, and technologies that seeks to recognize software delivery for what it is: a value stream, which is a lean term for a multistep process that produces a product. One of the key insights from lean is that the process of delivering software is similar to other manufacturing processes. It’s a complex, multistep process that requires careful logistical planning, tuning, and organization. Agile applies these ideas to software development, breaking down the process of developing software into a sequence of events. DevOps applies that thinking across the entire software delivery lifecycle.

Goal of DevOps

The goal of DevOps is to improve not just software development but software delivery. This may seem like a distinction without a difference, but that’s not the case; software delivery is something quite separate and apart from software development. Agile practices such as scrum, XP, and kanban have a lot to say about how to develop software. They don’t have much to say about software delivery, which is a broader topic. Software delivery spans the entire IT value stream, starting with business requirements and ending (or starting a new cycle) when software is delivered to production.

Software delivery

Software delivery doesn’t start with a programmer, a project manager, or even a business analyst. It starts with the business and its capabilities. Software delivery doesn’t end with a software release. As long as any release is running in production, it’s in a continuous state of being delivered to the client. The software delivery process isn’t the sole responsibility of Dev, Sec, Ops, or even IT collectively. It’s the responsibility of the entire enterprise. DevOps represents software delivery as a perpetual, continuous cycle supported by culture, processes, and technology. This holistic perspective has proven, over more than seven years, to have a positive impact on the practice of software delivery and IT at companies both large and small.