What do you need to know to become a DevOps Engineer?
How do you get one of the most in-demand positions in IT? Where do you start learning, and what key knowledge and skills do DevOps need? Victor Vedmich, AWS Senior Developer Advocate, answered these questions for you.
Who is a DevOps Engineer
— DevOps is a methodology and approach to software development that combines development and operations. At this point in time, the impact of marketing and IT business development is such that DevOps specialists are basically system engineers. DevOps specialists do not write code that is part of the application’s business logic, but they write a lot of other things — helper code.
A product in IT does not consist only of business logic. For an application to work, it is necessary to prepare the infrastructure for it by writing code in advance that will deploy and configure the infrastructure. Additionally, you need to connect and configure monitoring. Don't forget that developers deliver new features quite quickly, so an optimized CI/CD process is also needed. That's what DevOps engineers do.
Responsibilities of a DevOps Engineer
— When the simplest application is written, it is possible that DevOps may not be needed. But when we go to scale, we need good accessibility. When the number of users is not two people, but thousands or millions of them, then completely different questions arise. You need to know, for example, where the application will be located, and how we will ensure the application’s fault tolerance, its scalability, etc.
To break down the responsibilities of a DevOps Engineer, let’s look at a very simple example. You have GitHub, where you can throw a project, and the magic of building the final product takes place — an artifact that will need to be deployed (transferred to the server). But GitHub has GitHub Actions — this is also a small piece of code that needs to be written. Then an artifact appears — an executable file. It's like an application on a phone — an icon, under which is an assembled file with a lot of dependencies, and so on. In our world, these are mostly docker containers. The executable file needs to be launched somewhere. Once the executable file is launched, users from different parts of the world need to reach the application. The application needs to open as quickly as possible for every user. The first step is to write GitHub pipelines and actions to build this container, and then deliver it somewhere. In most cases, the delivery location is in the clouds or on client servers. In fact, DevOps also write code, but very specific kinds of code, most often things such as YAML or specific DSLs.
After the application has started, you need to understand how it works, monitor it, and maintain its stability. DevOps provide maximum application stability. When you have accomplished maximum stability, that's when the final product is achieved, and is ready for users.
What should DevOps know: key knowledge and skills
Soft skills for DevOps engineer
— First of all, a DevOps engineer must be able to talk with and listen to other people and be able to speak the language that they speak. There are many sub-teams with different functions: business analysts, frontend developers, backend developers, those who are responsible for testing, etc. Depending on the size of the team and what kind of personnel is on that team, DevOps engineers need to learn how to speak all of the relevant languages. Superficially, it would seem that they speak the same language, perhaps Russian or English, in which we conduct conversations. In fact, “speaking the same language” means something very different when we refer to engaging with different specialists. Without speaking their specialist language, we do not understand them, and we do not understand their problems or pains. Perhaps some other important things are incomprehensible to us as well that, for the specialists, are standard and necessary background.
For example, when we speak with a student who studies at the Faculty of Mathematics, knowledge of the principles of mathematics is a default for them. They think that everyone knows how statistical analysis, regression, and other concepts routine to them work. There's a set of standard definitions and concepts that everyone seems to know. When we talk with different functional teams, we kind of speak the same language, but we have completely different conceptual understanding and background. From this follows the main soft skill — the ability to talk with different teams, with different functionalities, and understand them all.
— Stress resistance must be constantly trained. DevOps engineers often work with, or as close to, production as possible. Due to the high level of responsibility, they are under a lot of pressure. Any misstep can lead to users being unable to access the site. Or you may be dealing with a million-dollar business, and every minute that a problem persists, a large amount of money is lost. It is important to retain your adrenaline, but train your stress resistance. Too much adrenaline in your system can degrade your performance. But when there is too little adrenaline, your system may not be adequately activated to solve a problem as quickly as possible.
Ability to learn
— This skill is important for all IT professionals. If we talk about the T-shape model, then the top bar represents the horizon of your knowledge, and the descending bar represents its depth. For DevOps specialists, the horizontal bar is very important because there is a lot to know. A DevOps engineer needs to study hard, absorb information efficiently, and identify and extract what is important and necessary for everyday work.
How to become a DevOps from scratch: 5 essential steps for beginners
- Basics of programming. You need to learn how to write simple code — tasks for some cycles, some conditions, a script that has a simple understandable logic. I would recommend Python.
- Networks. It doesn't matter where the infrastructure is being built — in the cloud or in local data centers — you still need to understand the network and how it functions. You do not need to become a certified network engineer, but you do need to understand what networks are, how they work, how routing is built, how networks are cut, etc.
- Clouds. Clouds are the standard these days. Intro certification will allow you to perform an overview of cloud services.
- Operating systems. Maybe not too much depth is required, but basic knowledge is needed.
- Kubernetes. Many projects that work with containers or microservice applications running in containers will use Kubernetes.
— If a person makes a training plan, I would advise them to take a course on Computer Science as a zero step, and then follow the steps described above.
Do DevOps engineers have future?
— DevOps engineers are in high demand. I think that they will be in demand for quite a long time. At the moment, I see a trend in some companies to rename DevOps to SRE so that people work more with production. I would say that since the horizontal bar in the T-shape model is very wide, there are still not enough DevOps engineers in the market to satisfy all the demand. The need remains quite high due to the high entry threshold and the ever-growing amount of information and new tools that need to be mastered at a fairly proficient level.
Tips for beginning DevOps engineers
— To become a professional in any field, you need to study a lot. DevOps is no exception. Many large companies have their own DevOps courses, followed by internships. It's worth looking at them.
For books, I would recommend: The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win, by Gene Kim, Kevin Beher and George Spafford and The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations, by Gene Kim, Jez Humble, Patrick Debois, & John Willis.
You can learn more about Data Science in the IT Beard Shorts issue on the Anywhere Club YouTube channel.
Want to discuss DevOps?