DevOps as an approach to software development and delivery is becoming mainstream. Back in 2017 50%+ of enterprises adopted DevOps or were performing their pilot projects. By 2020, this number grew to 85%, according to Forrester, and MS Azure states that it hosts 95% of Fortune500 companies, who enjoy automated code testing and seamless update deployments along with other benefits of DevOps. However, there are quite a lot of reports of failures. ITSvit.com, one of the leading Managed DevOps services providers from Ukraine explains why DevOps adoption fails and how to avoid it.
The key thing you need to understand to ensure the successful DevOps adoption is this: DevOps is not a set of tools of workflows, skills and scripts. It cannot be bought and it cannot be enabled by subscription (unless you sign a contract with a Managed DevOps Services Provider, and they accomplish your DevOps tasks for you.)
DevOps is a mindset, a culture and a methodology of conducting work. It must be adopted, just as you quit smoking and adopt healthier eating or adopt a daily training regimen in your gym. To continue the analogy, you cannot adopt DevOps on your own — you need someone to help you learn the ropes and do everything right.
This is the key mistake most companies that fail at DevOps adoption make — they headbutt into DevOps transformation enthusiastically relying on their internal staff or they hire various DevOps “experts, gurus and visionaries”, who actually have very little practical experience with designing and implementing daily DevOps workflows and cloud infrastructures. This approach opens the field for multiple misconceptions, which, in turn, lead to costly blunders.
- DevOps is not about changing the way you write and deploy code. It is about changing your attitude to this process. The developer writes the code and tosses it over the wall to be the problem of an Ops engineer. A DevOps engineer has to design, implement and optimize the CI/CD pipelines allowing the developers to perform automated unit and integration tests automatically and push new code versions to the staging server in 1 click. The process is fully automated — but the code is still the Developer’s problem. “You built it, you run it” motto from Google, yeah.
- DevOps is not a combination of Developer and Operations engineer skills. (To say the truth, it never hurts for a DevOps engineer to be able to write a little code in Python or Ruby, to read the code of other people at the very least — but that is not the point.) DevOps is about combining the GOALS of various teams in your IT department. Usually, developers want to release as many story points as possible over some period. Ops engineers want to reduce the number of incidents during that time, and every release is a chance of some error occurring. With DevOps, timely release of new product features and app versions is a common goal for developers and Ops engineers, who have to collaborate and communicate to make the process smooth.
- DevOps is not about tools, it is about methodologies. It does not matter in the slightest if you use Kubernetes and Docker or Packer and Marathon in your system — until you use them to run containerized apps. The same goes for Ansible, Jenkins, Maven, Selenium, Prometheus, Grafana, Icinga, Nagios, Amazon web services and Google Cloud PaaS solutions and a myriad of other DevOps tools. When you select the right approach, the tools you use are irrelevant (well, Docker and Kubernetes, as the most popular and stable DevOps tools are obviously preferable).
Thus said, to ensure successful DevOps adoption in your business, you need to change the way your team communicates and collaborates, their attitudes towards each other, their goals and priorities. When all of these are aligned, and instead of pushing the blame to colleagues your IT department starts working as a whole — your DevOps adoption has succeeded.
But how to actually do it? Hire professionals with ample practical experience, who can deliver the results you need and let them teach you. This is the fastest and surest way of adopting the best tools and workflows for your company. Instate a Center of Excellence, where your staff will accomplish a pilot DevOps project under the supervision of a hired DevOps engineer. In this case, instead of asking “why did DevOps adoption fail” you will ask only “why did I not adopt DevOps earlier!”