Why DevOps is necessary and who are DevOps specialists

When an application is not working, the last thing you want to hear from colleagues is, "it's your side's problem." In the end, users suffer—and they don't care which part of the team is responsible for the breakdown. The DevOps culture emerged precisely to unite development and support and bring them together around a shared responsibility for the final product.

What practices are included in the concept of DevOps and why are they necessary? What do DevOps engineers do and what skills do they need? Experts from EPAM answer these and other questions: Kirill Sergeev, a system engineer and DevOps evangelist, and Igor Boyko, a senior system engineer and coordinator of one of the DevOps teams in the company.

Why DevOps is necessary and who are DevOps specialists

What is the purpose of DevOps?

In the past, there was a barrier between developers and support (known as operations). Paradoxically, they had different goals and KPIs, even though they were working on the same project. The goal of development was to implement business requirements as quickly as possible and integrate them into a functioning product. Support was responsible for ensuring the application ran smoothly—any changes put stability at risk. This was a conflict of interest—DevOps emerged to resolve it.

What is DevOps?

That’s a good and contentious question: there is no definitive agreement about this in the world yet. At EPAM, we believe that DevOps encompasses technologies, processes, and a culture of collaboration within a team. This integration is aimed at the continuous delivery of value to end users.

Kirill Sergeev: "Developers write code, testers check it, and administrators implement the final product in the production environment. For a long time, these parts of the team were somewhat fragmented, and then the idea to unify them through a common process emerged. Thus, DevOps practices were born."

The day has come when developers and system engineers became interested in each other's work. The barrier between production and support began to dissolve. This is how DevOps emerged, incorporating practices, culture, and a framework for interaction within the team.

Why DevOps is necessary and who are DevOps specialists

What is the essence of DevOps culture?

The responsibility for the final result lies with each member of the team. The most interesting and complex aspect of the DevOps philosophy is understanding that an individual is not just responsible for their specific stage of work, but is accountable for how the entire product will function. The problem does not lie on one side — it is a collective issue, and each team member helps to resolve it.

A key principle of DevOps culture is to focus on solving problems rather than simply applying DevOps practices. Moreover, these practices are not implemented "on someone else's side," but across the entire product. A project does not need a DevOps engineer for its own sake — it needs solutions to its problems, and the role of the DevOps engineer can be distributed among several team members with different specializations.

What are the DevOps practices?

DevOps practices cover all stages of the software lifecycle.

Igor Boyko: "The ideal scenario is when we start applying DevOps practices right at the project initiation stage. Together with architects, we plan what the architectural landscape of the application will look like, where it will be located, and how it will scale, and we choose the platform. Currently, microservices architecture is in vogue — for it, we select a container orchestration system: it is necessary to manage each component of the application individually and update it independently of others. Another practice is 'infrastructure as code.' This refers to the approach where the project's infrastructure is created and managed using code, rather than through direct interaction with servers.

Next, we move to the development stage. One of the largest practices here is building CI/CD: we need to assist developers in integrating changes into the product quickly, in small increments, more frequently and with less pain. CI/CD encompasses code validation, merging into the master branch, and deploying the application in testing and production environments.

During the CI/CD stages, code goes through quality gates. These are used to ensure that the code coming from the developer's workstation meets the specified quality criteria. Unit and UI testing are also incorporated here. For quick, smooth, and focused deployment of the product, a suitable deployment type can be chosen.

DevOps practices have a place even in the support stage of a finished product. They are used for monitoring, feedback, security, and implementing changes. For all these tasks, DevOps views them through the lens of continuous improvement. We minimize repetitive operations and automate them. This also includes migrations, application expansion, and maintaining operational efficiency.

What are the benefits of DevOps practices?

If we were to write a textbook on modern DevOps practices, the first page would list three points: automation, faster releases, and quick user feedback.

Kirill SergeevThe first is automation. We can automate all interactions within the team: writing code – deploying – testing – installing – gathering feedback – returning to the start. All of this is automatic.

The second is speeding up the release process and even simplifying development. It’s always important for the client that the product hits the market as soon as possible and starts delivering value before competitors' analogs do. The product delivery process can be continuously improved: reducing time, adding additional checkpoints, and enhancing monitoring.

The third is accelerating user feedback. If the user has suggestions, we can immediately make adjustments and update the application right away.

Why DevOps is necessary and who are DevOps specialists

How do the concepts of 'system engineer', 'build engineer', and 'DevOps engineer' relate to each other?

They overlap but refer to slightly different areas.

A system engineer at EPAM is a position. They come in different levels: from junior to chief specialist.

A build engineer is more of a role that can be performed on a project. This term is currently used to describe those responsible for CI/CD.

A DevOps engineer is a specialist who implements DevOps practices on a project.

Summing all this up, it looks approximately like this: a person in the position of a system engineer performs the role of a build engineer on the project and is involved in implementing DevOps practices.

What exactly does a DevOps engineer do?

DevOps engineers bring together all the components that make up a project. They understand the specifics of the work of programmers, testers, and system administrators, helping to simplify their tasks. They grasp the needs and requirements of the business, its role in the development process, and organize the process with the client's interests in mind.

We have discussed automation extensively — this is primarily what DevOps engineers focus on. It’s a significant aspect that includes, among other things, preparing the environment.

Kirill SergeevBefore implementing updates into a product, they need to be tested in a separate environment. This is prepared by DevOps engineers. They also instill a DevOps culture in the project as a whole, implementing DevOps practices at all layers of their projects. These three principles: automation, simplification, acceleration — they integrate wherever they can reach.

What should a DevOps engineer know?

Essentially, they should possess knowledge in various fields: programming, operating systems, databases, build systems, and configurations. Additionally, they should have the ability to work with cloud infrastructure, orchestration systems, and monitoring.

1. Programming Languages

DevOps engineers know several basic languages for automation and can, for example, tell a programmer: "How about you do code installation not manually, but using our script that automates everything? We will prepare a config file for it, which will be easy for both you and us to read — and we can change it at any moment. Plus, we will see who, when, and why makes changes to it."

A DevOps engineer can learn one or more of these languages: Python, Groovy, Bash, Powershell, Ruby, Go. Deep knowledge is not required; a fundamental understanding of syntax, OOP principles, and the ability to write simple scripts for automation is sufficient.

2. Operating Systems

A DevOps engineer must understand on which server the product will be installed, in what environment it will run, and which services it will interact with. A specialization in Windows or Linux family can be chosen.

3. Version Control Systems

Without knowledge of version control systems, a DevOps engineer is at a disadvantage. Git is one of the most popular systems at the moment.

4. Cloud Providers

AWS, Google, Azure — especially when we are talking about the Windows direction.

Kirill Sergeev: "Cloud providers offer us virtual servers, which fit perfectly into CI/CD pipelines.

Setting up ten of physical servers requires about a hundred manual operations. Each server needs to be manually launched, the required operating system installed, our application set up on these ten servers, and then everything checked ten times. Cloud services replace this procedure with ten lines of code, and a good DevOps engineer must know how to operate them. This saves time, effort, and money—for both the client and the company."

5. Orchestration Systems: Docker and Kubernetes

Kirill Sergeev: "Virtual servers are divided into containers, each of which can have our application installed. When there are many containers, management becomes necessary: turn one on, turn another off, and back up somewhere. This becomes quite complicated, requiring an orchestration system.

Previously, each application was managed by a separate server—any changes in its operation could affect the application's functionality. Thanks to containers, applications become isolated and run separately—each on its own virtual machine. If a failure occurs, there’s no need to waste time searching for the cause. It’s easier to destroy the old container and add a new one."

6. Configuration Systems: Chef, Ansible, Puppet

When servicing a whole fleet of servers, many repetitive operations need to be performed. This is time-consuming and complicated, and manual work increases the chance of error. This is where configuration systems come in handy. Using them, a script is created that is easy for programmers, DevOps engineers, and system administrators to read. This script helps perform identical operations on servers automatically. Thus, the number of manual operations (and, consequently, mistakes) is reduced.

What career can a DevOps engineer build?

One can develop both horizontally and vertically.

Igor Boyko: "From the perspective of horizontal development, DevOps engineers currently have the broadest opportunities. Everything is constantly changing, and skills can be expanded in various directions: from version control systems to monitoring, from configuration management to databases.

You can become a system architect if you are interested in understanding how an application works at all stages of its lifecycle—from development to support.

How to become a DevOps engineer?

  1. Read the books "The Phoenix Project" and the DevOps Handbook. They are true pillars of the DevOps philosophy, with the former being a fictional novel.
  2. Learn the technologies from the list above: either independently or through online courses.
  3. Join as a DevOps engineer on an open-source project.
  4. Practice and propose DevOps practices in your personal and work projects.

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster