“DevOps” – it has been a hot topic for some time. The web is full of tales of “DevOps transformations”, a great many job adverts for “DevOps Engineers” and all sorts of software to help you on your way to DevOps nirvana.
If done right, DevOps can transform your business; helping your software team(s) to not just to deliver faster and better, but also to give you a competitive advantage.
If done poorly, DevOps can consume large investments of time and money, for very little gain.
One of the frequent misconceptions we come across is that DevOps is primarily about software tools, particularly those used for the deployment aspects. The truth is, DevOps is so much more than that; which is one of the reasons so many people struggle to adopt it successfully.
So what is DevOps, really?
Frustratingly, there is no commonly accepted definition, which also contributes to the challenge of adoption. A quick web-search reveals many, many, different definitions; Wikipedia, Amazon and Gartner, are a few examples; all variations on a theme. The DevOps Handbook (the foremost book on the subject) dedicates multiple pages to the underlying concepts, but contains no summarised definition!
One thing you will notice in all of the definitions is that “Tools” comes last in the list of constituent concepts, if at all. (In Wikipedia’s definition, it is not included.)
In our view, DevOps can be summarised as the following:
DevOps is a combination of business culture, practices (and tools) that improve the speed and quality at which software can progress from concept to production; enabling business innovation.
The role of tooling in DevOps is to facilitate and support the first two aspects:
- A tool will be of no benefit unless it is improving a practice or process. Therefore it is important to identify and understand the limitations in your processes/practices, in order to select the right tools to help improve them.
- In addition to that, it should be emphasised that the most crucial aspect of any successful DevOps adoption is the culture. People must want to improve in order for the changes to be successful. A tool can be abused, circumvented or lazily applied; unless the culture exists to ensure otherwise.
Now these principles have been adapted to the software development industry. Books such as The Phoenix Project and the DevOps Handbook describe how these principles can be applied to software development. Both books focus heavily on a set of principles called “The Three Ways” which, if applied correctly, will greatly improve how your business develops software and how it leverages that software development capability.
The “Three Ways”, as described in The Phoenix Project:
Figure 1 – The Three Ways
- The First Way – Maximise flow from left to right
To maximize flow, we need small batch sizes and intervals of work, never passing defects to down-stream work centres and to constantly optimize for the global goals (as opposed to local goals such as Dev feature completion rates, Test find/fix ratios or Ops availability measures).
- The Second Way – Constant feedback at all stages
The constant flow of fast feedback from right-to-left at all stages of the value stream, amplifying it to ensure that we can prevent problems from happening again or enable faster detection and recovery. By doing this, we create quality at the source, creating or embedding knowledge where we need it.
- The Third Way – Create a culture of risk-taking and learning
Creating a culture that fosters two things: continual experimentation, which requires taking risks and learning from success and failure and understanding that repetition and practice is the prerequisite to mastery.
You will probably have noted that tooling is not mentioned once in the descriptions of The Three Ways! More importantly, you can see that these principles go far beyond the improvement of software deployment.
Most DevOps transformations are focussed on The First Way. Attempting to improve the speed at which work can be processed through the business. This is a significant undertaking in itself. However, where businesses can really benefit is when they reach The Third Way; allowing the business to innovate in a way that was not previously possible and gain a competitive advantage in the market place.
Obviously, the real magic is knowing how to apply the principles of The Three Ways; but that, as they say, is a topic for another day.