Many companies have already successfully adopted DevOps practices and workflows. This can be seen by on-restart updates of their apps, like Facebook or Telegram that are updated seamlessly for the customer. This result, along with other DevOps benefits, is what other companies want to achieve by DevOps adoption. But are you sure you know what is DevOps adoption all about? IT Svit, a DevOps Managed Services Provider, elaborates.
There are lots of misconceptions around the very term and meaning of DevOps. Despite being around for a decade, this methodology is actively evolving and has not even received a definition carved in stone yet. The most popular explanation is that DevOps is a combination of Development, Operations and QA to ensure smooth software delivery and uninterrupted infrastructure operations. While this is true, many companies understand it incorrectly.
Various “experts, gurus and visionaries” proclaim that DevOps is a combination of skills. We might assume, that to do DevOps you must get your Devs, Ops and QA engineers in a single room, let them talk and work together, and the DevOps magic will happen. Devs will learn to test and deploy the code, QA engineers will learn to write and deploy it, and the Ops — yeah, you guessed it — will learn to write and test. While this might seem a great idea on paper, it is a direct way to catastrophe in real life.
Just recall how much time did it take you to master what you do best. Months and years on end, yes? Now imagine doing it for two skills at once, while also doing your main work. Nothing good will come of this experiment, we assure you. Probably these misguided attempts are the reason why many companies have failed miserably with their DevOps adoption and are now actively rooting for discovering other ways of IT operations management.
However, we must not judge the fish by its ability to fly, nor must we evaluate DevOps based on incorrect assumptions of people that never did it. Let’s take a look at professionals that have successfully implemented DevOps in their companies — like Google, Twitter, Facebook and many others.
They did not try to teach the Devs to deploy code or the Ops engineers to write it. Well, the DevOps engineer must be able to write the code in Python, Ruby, Scala or Go — but only within the scope of preparing various scripts to be used by Devs and QA engineers. The starting point of a successful DevOps adoption is the realization of a simple fact — the product is developed for 10% of its life cycle and tested for 5 more percent (roughly) — but it is run in production for 80-90% of its life cycle. This means that the needs of Ops engineers are imperative as it is their job to ensure stable infrastructure operations while supporting daily software delivery activities.
Thus said, true DevOps is not a combination of skills — it is an alignment of goals. Before the start of the project, the Devs, the QA and the Ops gather and discuss every aspect of it. If the future product is to be a simple application, it would be best to make it monolith to enable simple scalability by launching more Docker containers with this app when needed. If it is to be a complex system with multiple interconnected modules — it would be best to build it as a bundle of microservices communicating via a message broker like Kafka or RabbitMQ.
There are multiple aspects of software operations that must be discussed this way — and then the team starts working according to a plan. The devs write the automated unit and integration tests, while the Ops prepare the scripts that launch the required testing environments and automate the rest of repetitive actions. This way, once a developer commits a new batch of code, it is tested automatically, and if no bugs are found — a new app build is delivered to the staging server for QA to conduct high-level testing.
The same goes for deployment and operations in production — DevOps engineers automate everything that can be automated to reduce waste of time and human effort. This is what is DevOps adoption all about — removing the friction between the teams, aligning their goals and removing the wasted time and effort, thus decreasing your operational expenses and shortening time-to-value for your products and services.