There is a popular belief that a full-stack DevOps engineer is a modern name for a wizard able to write an application, test it, deploy it to the cloud and run it in production. Actually, this is a scope of tasks for a whole IT department, as there are no people able to do 5 jobs at once. But what is DevOps engineer actually needed for? As a provider of managed DevOps services (https://itsvit.com/services/devops/) with 5 years of experience, IT Svit answers this question.
To understand the scope of work for a DevOps specialist you need to get a clear understanding of what is DevOps in general. Therefore, it is important to discern truth from aaqA misconceptions that derived from phrases like “you built it, you run it” or “DevOps is a combination of Development and Operations”.
The former phrase was coined by Amazon CTO Dr. Werner Vogels back in 2006 and it described the Amazon approach to IT operations. While most of the developers at that time threw their code over the wall to Operations to be their problem in production, Amazon made sure their developers spent some time working as the first line of support each month. Year, the first line is the people you shout at over the phone when your server is down.
According to Vogels, this provided the invaluable experience of live interactions with customers and helped implement the feedback loops much quicker — as when you design and implement a feature sloppily and you get shouted at for it — the incentive is very strong to never do this again. This way Amazon was able to build amazing products and quickly improve them. However, nowadays developers don’t act as support reps — and neither do DevOps engineers.
The second expression is often misunderstood, as the ending is cut off. DevOps is about combining the GOALS of Development and Operations. Not their workplaces or skills — but their goals. Prior to DevOps, the Devs wanted to release as many story points as possible every month. And Ops engineers wanted to minimize the number of incidents in production, and as every change brought some risk with it, these goals directly contradicted each other.
With DevOps methodology, success is measured by the availability of a working product with the maximum number of story points implemented by the end of each 2-week sprint. This way, if there were not enough releases — both the Devs and the Ops are to blame — and they have to collaborate to ensure nobody is to blame. What is DevOps engineer supposed to do under this paradigm?
At the beginning of each sprint, the DevOps, the QA engineers and the Devs meet and discuss the plans for the sprint. For example, if a new feature must be delivered, they must decide whether it will be a standalone microservice or a part of a monolith app. This choice dictates the structure of tests and the way the product will run in production. Once this is settled, the DevOps engineers prepare all the CI/CD scripts and Terraform manifests needed to deliver and configure all the environments required to successfully accomplish the project. By doing it once and writing scripts, the DevOps engineer ensures he will not have to do it multiple times manually.
This way, the DevOps engineer automates all the routine software development and testing operations to ensure the devs and the QA engineers have no obstacles to do their job. This frees up lots of time to dedicate to managing the environments in production — and the same CI/CD logic applies here. Thus said, DevOps is a continuous process of improving the cost-efficiency of your software delivery and infrastructure management operations.
This is what DevOps engineer is supposed to do — not write the code and test it instead of devs and QA specialists!