How to become a DevOps in 2024

We learned from senior and middle specialists how to become a DevOps engineer in 2024 and what tools you need to master.

Here's what they said.

***

We remind you that you can ask your question to the experts, and we will collect answers to it if it turns out to be interesting. Questions that have already been asked can be found in the list of issues in the section.

If you want to join the ranks of experts and send an answer from your company or yourself, then write to experts@tproger.ru, we will tell you how to do this.

***Cover by expert Alexander EgerevAlexander Egerev

DevOps-Engineer IT Test

DevOps is a discipline at the intersection of server development and administration. The main goal is to simplify and speed up the delivery of new functionality to users.

A DevOps engineer builds the server architecture of an application, prepares tools for collaboration, connecting applications and microservices with each other. It also removes a lot of work from developers and gives them the opportunity to concentrate on implementing business logic.

To start a career as a DevOps engineer, the first step is to learn the basic tools and technologies of systems administration. Main tools: kubernetes, get, helm, gitlab, docker, docker-compose, jenkins, CI/CD. It is also important to understand the SQL query language and bash for writing automation scripts, and be able to work with network applications (nginx, php, python).

If we talk about interaction with other departments, then development begins with communication with the team lead, who explains the main task of setting up the application infrastructure, which allows you to further think about placement, allocated resources and methods of assembly and deployment.

Next, communication with developers is necessary. They will tell you what steps are needed to build or compile the application they have developed in order to automate the build process. If the application does not work correctly on the server, but everything is fine for the developer locally, then you need to look for the cause of the problem at the stages of server design, assembly and delivery.

When interacting with testers, you can find out what testing tools can be added to CI/CD processes in order to receive all errors and necessary information before the application is released. They will be the first to say what is wrong with the application.

There are always several different approaches to one task – this keeps you on your toes and prevents you from getting bored. For me, this is the beauty of the profession.

Cover by expert Alexander ChumakovAlexander Chumakov

Head of the development team at the software developer MyOffice

DevOps is a methodology in which development, testing and operations specialists are not limited to their area of ​​responsibility, but are able to work in related areas. In other words, this is both a programmer who can deploy his code into production and a systems engineer who can write code.

Today, when they talk about a DevOps engineer, they mainly mean a systems engineer or an infrastructure engineer who works according to the DevOps methodology.

It is believed that a developer's job ends when the code is submitted to the repository. The DevOps engineer is responsible for the entire rest of the process, from assembly to deployment to production. If necessary, testers are also included in the process.

Launching and maintaining a CI/CD server that will execute the pipeline is clearly a DevOps task. But who will write the Dockerfile, pipeline code, and deployment manifests is a borderline area. It would be good for the developer to do this himself, seeking advice from a DevOps specialist.

DevOps erases the boundaries of responsibility and reduces the number of blockers that a specialist encounters when moving towards a goal, and this, in turn, reduces Time To Market (TTM).

A good pipeline starts with checking the code for overall correctness. Both a lenter and a static code analyzer can be used. Next comes a check to see if this code can be assembled. Then unit and integration tests are connected. Optionally add a stage of manual and/or automated testing.

All these steps allow you to very quickly detect possible problems in the code and quickly fix them, increasing the overall quality of the code.

The biggest problem is the reluctance of some specialists to go beyond what they are good at. Managers need to encourage employees to go beyond the boundaries of their responsibilities, t-shaping, and also facilitate training in new technologies.

In general, it is enough to know the basics of DevOps and the benefits that this approach brings in order to want to implement it. And in this direction, the most important thing is popularization; it is important for the team lead to convey the values ​​to colleagues.

It is very important to stay on trend, follow new developments, approaches, and solutions. I would highlight two ways that complement each other: strong colleagues and specialized conferences. With the first ones, everything is simple – you need to look for a team of experts who will have something to learn from. In MyOffice, for example, we have just like this. But there are quite a lot of conferences. I would highlight HighLoad++, DevOpsConf and DevOops.

At the heart of all DevOps are Linux and Docker.

Ansible is most often used for configuration. Less often – Chef and Puppet.

Terraform is used to describe the infrastructure in code, sometimes adding Terragrunt to it.

When an application grows and there is a need for an orchestrator, Kubernetes is usually chosen, although in some cases it makes more sense to use Nomad.

For CI/CD, Jenkins and Gitlab CI are most often used. Less common are GitHub Actions and Gitea Actions, TeamCity, Atlassian Bamboo and Drone CI.

In the Observability space, OpenTelemetry Collector is worth a look. Prometheus and its analogue VictoriaMetrics are responsible for collecting and storing metrics. And for visualizing metrics, logs and traces, there is actually only one solution today – Grafana.

The best place to start is with the book The Phoenix Project, which is a fairly easy and unobtrusive introduction to the topic. Geerlingguy (Jeff Geerling) is a household name in the Ansible world, and it’s worth getting acquainted with his Ansible for DevOps, as well as the Ansible roles he wrote.

There are excellent courses on Kubernetes on Udemy by Mumshad Mannambeth. But theory is not as important as practice. If there are no DevOps tasks to practice on, you need to find them yourself. Automate routine, set up servers for household needs, launch pet projects.

Cover by expert Mikhail MalinovkinMikhail Malinovkin

Head of System Reliability Group, NLMK Group

The term DevOps consists of two concepts: development (development) and operations (operation). It denotes both the work methodology and the profession itself – as a rule, it is called DevOps engineer.

The DevOps approach involves the collaboration of developers and system administrators to increase its efficiency. When there is no interaction between them, this is reflected in the result: developers write code, admins do support, and in the end something often doesn’t work and problems arise. DevOps culture was invented precisely to avoid this. And only then the profession of DevOps engineer emerged from it.

Core DevOps tools are designed to automate the development, testing, and usage phases of applications.

A fundamental element of DevOps processes are code version control systems like Git. CI/CD tools automate code building and testing. Containerization in Docker and orchestration with K8s make it easier to release and scale programs. With Infrastructure as Code (IaC), you can develop, change, and version infrastructure as easily as source code. Ansible and Terraform tools will help with this. For monitoring and logging, there are ELK Stack (Elasticsearch, Logstash, Kibana) and Prometheus+Grafana capabilities. With their help, you can monitor systems in real time.

It is difficult to imagine the development process without the DevOps approach, since with its help, coordination between development and operation becomes much more efficient, and the release cycle is accelerated. By developing a culture of collaboration, automating processes and implementing CI/CD tools, the company responds more flexibly and quickly to market changes – which means that the creation and refinement of products occurs faster, the quality of service increases due to early diagnosis of errors – the fewer errors, the more satisfied users are. In addition, the adoption of a DevOps approach promotes a culture of continuous development and learning, and work processes become clear and transparent.

DevOps affects the culture of the development team. First, there is an incentive to collaborate and share responsibility for the quality of the product at all stages of development and operation. The relationship between Dev, OPS, and QA specialists is becoming closer, and this has a positive effect on the work environment. In a DevOps culture, automation and process continuity play an important role, which reduces errors, minimizes manual labor and allows programmers to devote more time to innovative development and product improvement. In addition, the routine of tasks is reduced by automating the deployment and self-healing of systems. The philosophy of constant learning and experimentation promotes openness and trust in the team, and rapid feedback from users allows us to improve the product faster. Thanks to transparent and quick results of their work, employee motivation increases.

This profession requires deep and complex specialization and extensive expertise in several areas at once. Therefore, most often a programmer comes to DevOps not from scratch, but with some experience in IT – an administrator or developer. If a person is just planning to get into the IT environment, then you should not start with online courses. You can learn from them, for example, to become a tester, but definitely not to become a DevOps engineer.

The first place to start is to learn DevOps tools. A portfolio is also useful: if the programmer still has little experience, you can use the Github repository with your pet project as an example of work. An internship in a reputed company is also a good way to start a career in this environment.

To successfully work in DevOps, experience in administering basic Linux environments and knowledge of orchestrators will not hurt: despite the popularity of Kubernetes, experience with tools like Docker Swarm will only be beneficial. It is desirable to know programming languages: Python, Bash and Go. Of course, not all engineers write code themselves, but if you know even a language like Java, this can be useful in your work. It is important to learn how to work with CI/CD tools: Jenkins, Teamcity, Gitlab Ci. Knowledge of monitoring tools will also be useful: Elastic or Loki, Prometheus, Grafana, VictoriaMetrics. You don't have to learn everything in detail, but owning a couple of tools is a good idea.

Soft skills are also useful for development in DevOps: the ability to communicate, listen to people, explain complex things in accessible language.

DevOps engineers can work on a variety of tasks. Firstly, these are specialists who work on product automation and help developers customize the product for different environments, test it and test hypotheses. Another type of engineer supports professional DevOps tools and platforms that provide capabilities to developers and specialists in the previous category.

Depending on the specialization of a DevOps engineer, the range of his tasks changes. A product automation specialist is responsible for organizing work environments using CI/CD tools and setting up pipelines. In addition, specialists work with DevOps platforms – the same Kubernetes or cloud tools. In general, the tasks of any engineer are to work with various specialized tools and ensure their stable operation based on the goals of the customer or employer.

In a DevOps culture, Dev programmers and OPS specialists work together, blurring the lines between code development and deployment. With the use of CI/CD tools, code development and testing occurs faster, and the deployment and release management processes are noticeably simplified. Testers implement automated tests into the general CI/CD space, which improves the quality of the product through early detection and elimination of bugs. Operations specialists help develop infrastructure as code, thereby making systems easier to manage, restore, and scale.

The DevOps approach allows you to quickly find and fix bugs, so they are less likely to end up in the final release. Implementing Infrastructure as Code (IaC) systems makes it easier to manage different environments, makes development more transparent, and minimizes human errors. The quality of the product also increases due to the continuous collaboration of teams that exchange experience and knowledge with each other, developing a common understanding of work tasks and goals. In a DevOps environment, a lot of attention is paid to product monitoring and logging in order to not only quickly respond to shortcomings, but also proactively prevent them. DevOps culture also means that every work step and every product created is an opportunity to develop, gain experience and, as a result, improve the quality of work.

The main difficulties in implementing DevOps are employee resistance to change, technical problems with integrating new tools, and lack of experience and expertise of specialists. To overcome these difficulties, the DevOps system should be implemented in stages, starting with the most important and critical areas of work. In addition, attention must be paid to the training process and employee support. The team must understand the values ​​of DevOps and develop the necessary skills for the job. The use of MVP and POC projects will help with this: using their example, you can safely demonstrate the benefits of the new approach. Support from management plays the most significant role, and constant feedback from employees will allow you to more effectively adapt the DevOps culture in the company.

The DevOps engineer profession, like most other IT professions, has several grades: initial junior, middle middle, senior senior.

If we talk about vertical development, then the senior level is the limit – after it you can either go into management or engage in mentoring. In management, this could be promotion to team lead, department head, or even CTO. This development path is not suitable for everyone, so in most cases, DevOps engineers, having reached the senior level, go into mentoring or choose a horizontal growth path, developing in related directions.

To develop horizontally in DevOps, it is important to regularly update and expand your knowledge. This could be professional training, online courses, or obtaining specialized certificates. It is useful for an engineer to take part in conferences, hackathons and meetups. You can join professional communities on social networks and platforms like GitHub or Stack Overflow. This networking helps to gain new knowledge and exchange experiences with other DevOps specialists. To improve your professional reputation and develop practical skills, you should actively participate in open-source projects. Studying professional literature and expert blogs will help you stay up to date with the best modern practices.

Cover by expert Alexey KazinAlexey Kazin

DevOps Engineer GNIVC

It's difficult to say anything new here. DevOps methodology is an approach to organizing product development in which development, testing and operation work as one.

The DevOps methodology is designed for high-efficiency work, and its importance is due to the following benefits: reduced development costs, faster release of new versions, and comprehensive testing of new releases.

DevOps methodology allows you to reduce Time To Market. That is, the implementation of DevOps directly benefits the business. Releases of new product versions with new features are accelerating. At the same time, maximum automation of all processes is achieved, from assembling the product, testing it and rolling out the release to the end user.

You can talk for a long time and a lot. A DevOps engineer is a versatile, multifaceted specialist.

The main tasks can be divided into three groups: managing the project infrastructure, automating development and testing processes, and reducing the time for releasing new releases.

Previously, IT specialists were divided into system administrators, network engineers, developers, testers, etc. And they had little interaction with each other while developing the product. But everything changed after the advent of the DevOps approach. This approach brought these departments together and helped them work together and release new products.

By automating the assembly, testing and rolling out of releases, high quality of the final product is achieved and due to this, the rapid implementation of new functionality is achieved.

It is worth highlighting three main problems when implementing DevOps, namely cultural, technical and organizational. Cultural difficulties refer to resistance to change and lack of mutual understanding between developers and other specialists. This requires a focus on communication and training, as well as creating a culture that supports continuous improvement and collaboration. Technical challenges may include lack of automation and difficulty integrating new tools. And organizational problems include a lack of support from management and unclear roles. To overcome these challenges, it is necessary to ensure management buy-in and clearly define the roles and responsibilities of each team member.

In my personal opinion, this again comes down to automation.

With the implementation of the DevOps methodology, one important problem disappears. Now developers are no longer involved in manually assembling releases, manual testing and rolling out releases. If earlier developers had to collect their code, go to system administrators, ask them to give them servers and run the product on them, then test it for a long time and tediously, now all these stages are almost completely automated.

First and foremost, you must have a good understanding of the environment in which your applications will run. If it's Linux, then it will be a huge plus to take at least a basic course on Linux. Learn how to work with the terminal, and learn how programs are launched, what to do if you see an error in the logs, and how to diagnose errors.

Knowing the basics of networking is a must. How IP, TCP/UDP works. How HTTP works. My personal recommendation here is to take the CCNA course.

A DevOps engineer uses a huge number of tools in his work, but among them there are basic ones, the knowledge of which cannot be avoided. Let's look at them in a list.

Let's start with managing and configuring the infrastructure. Here the undisputed leadership is held by tools called Terraform and Ansible. With their help, you can conveniently and quickly deploy and configure your environment.

Next on our list is a source code management tool. Everything here is simply Git. Whether it’s GitHub, GitLab or something else doesn’t matter. The principles of Git are the same everywhere.

Then there are tools for continuous integration (one of the principles of DevOps). There is more choice here. It could be Jenkins, GitLab CI, or the great and terrible Azure DevOps.

You can use JFrog Artifactory, Sonatype Nexus or Docker Registry to store finished artifacts.

Well, completing the list of technologies required to know, one cannot fail to mention containerization management systems. Namely Docker, Kubernetes and Read Hat OpenShift.

DevOps, like any other IT specialty, requires constant training and development. Be consistent in your development. Explore technologies related to DevOps. If you work with Nexus, then also learn JFrog and this applies to all tools.

Be sure to attend DevOps conferences; networking is the best way to stay on top of all the new products!

***

We remind you that you can ask your question to the experts, and we will collect answers to it if it turns out to be interesting. Questions that have already been asked can be found in the list of issues in the section.

If you want to join the ranks of experts and send an answer from your company or yourself, then write to experts@tproger.ru, we will tell you how to do this.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *