What is DevOps?

What is DevOps?

This is a question I've seen asked and answered with regularity but often revolving around a tool or job. So here's my take on it.

Firstly, DevOps is not a job title, software, process or methodology. It is a management philosophy that if you truly understand it has huge implications in the methodologies you use, the processes you design, the software you need and the job roles you create.

So what is the philosophy?! So there’s the catch, it is an evolving idea. The original problem that DevOps was trying to solve was the dysfunctional behaviour often seen between the development team and the operations team, where problems would get thrown from one department to other with both sides claiming it was not their problem. The idea that came out of that was to rethink the relationship between the departments and share the pain and successes between them to encourage more collaborative behaviours. One of the basic principles that evolved from this were the Three Ways [The Three Ways: The Principles Underpinning DevOps].

  1. The First Way - Systems Thinking: This is about thinking in terms of the performance of the entire system rather than just the specific functionality, role or department. This is about thinking of all the steps from customer needs to customer experience of the end output.
  2. The Second Way - Amplify Feedback Loops: Understand and respond to stakeholders, speed up and amplify feedback and have knowledge accessible where it is needed.
  3. The Third Way - Culture of Continual Experimentation and Learning: Create an environment that fosters experimentation and taking calculated risks, learn from these and improve things including yourself.

A reinterpretation of the the Three Ways and endorsed by some of the early thought leaders of DevOps: A Personal Reinterpretation Of The Three Ways

Another embodiment of DevOps is CAMS [CAMS - DevOps Dictionary]:

  • Culture - Learn to trust, eliminate blame, embrace smart failure
  • Automation - Automate to reduce bottlenecks and improve flow, use it to “break early and fast”
  • Measurement - Something that is not measured cannot be managed. However metrics need to answer business questions in the context of a set of other measurements. Process or organisatonal metrics must be cross functional/departmental.
  • Sharing - Share through continuous feedback, learning, experimentation and knowledge capture.

So how have the DevOps principles evolved today? Well that depends on who you talk to. A web search for “DevOps principles” will return 3/4/5/7 principles of DevOps. Having reviewed quite a few of them; most of the principles simply add granularity to the original “Ways” and emphasise things based on the person’s or company’s priorities.

What has changed is the problem definition away from the narrower issue of interdepartmental infighting. If you’ve been following the evolution of management best practices there are hot topics which has given rise to agile methodologies, and lean management. The topics in broad terms are:

  • Deliver customer value faster
  • Manage progress & uncertainty better
  • Find better solutions continuously
  • Reduce waste continuously

DevOps tries to address these problems by improving the efficacy of a large part of the main customer value path way in an organisation through holistic thinking, collaboration, feedback loops and iterative learning.

With strong concept commonalities with agile & lean, unsurprisingly the DevOps has come to incorporate a lot of the methods from these current business best practices which are ultimately trying to address customer & stakeholder needs in a rapid, meaningful, iterative way. How it all fits is nicely illustrated below:

Source: How are Lean, Agile, and DevOps related to each other?

At this point most people new to DevOps are probably still struggling to make the philosophy tangible and that’s OK. It is after all a management philosophy.

So how has DevOps manifested itself in companies today? The most common things you will see, though not exclusively, are:

  • Agile software development
  • Continuous integration/deployment
  • Virtualised or containerised infrastructure/resources
  • Continuous penetration testing and vulnerability monitoring
  • Service oriented architectures and/or micro services
  • System and process performance monitoring

These in themselves are not DevOps. These are methodologies, tools, frameworks, design patterns that are used to achieve the DevOps philosophy.

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics