Why DevOps is needed and who are DevOps specialists

When the application is not working, the last thing you want to hear from colleagues is the phrase “the problem is on your side.” As a result, users suffer - and they do not care which part of the team is responsible for the breakdown. The DevOps culture was born just to bring development and support together and unite them around a common responsibility for the final product.

What practices are included in the concept of DevOps and why are they needed? What do DevOps engineers do and what should they be able to do? These and other questions are answered by experts from EPAM: Kirill Sergeev, systems engineer and DevOps evangelist, and Igor Boyko, lead systems engineer and coordinator of one of the company's DevOps teams.

Why DevOps is needed and who are DevOps specialists

Why is DevOps needed?

Previously, there was a barrier between developers and support (the so-called operations). It sounds paradoxical, but they had different goals and KPIs, although they did the same thing. The development goal was to implement business requirements as quickly as possible and add them to a working product. Support was responsible for ensuring that the application worked stably - and any changes put stability at risk. There is a conflict of interest - DevOps appeared to solve it.

What is DevOps?

This is a good question, and a moot one: the world has not yet finally agreed on this. EPAM believes that DevOps combines technologies, processes and culture of interaction within the team. This association is aimed at the continuous delivery of value to end users.

Kirill Sergeev: “Developers write the code, testers check it, and administrators install the final product on the production environment. For a long time, these parts of the team were somewhat scattered, and then the idea arose to unite them with a common process. This is how DevOps practices appeared.”

The day came when developers and systems engineers became interested in each other's work. The barrier between production and support began to fade. This is how DevOps was born, which includes practices, culture and the order of interaction in the team.

Why DevOps is needed and who are DevOps specialists

What is the essence of DevOps culture?

The fact that the responsibility for the final result lies with each of the team members. The most interesting and difficult thing in the philosophy of DevOps is to understand that a particular person is not just responsible for his stage of work, but is responsible for how the entire product will work. The problem does not lie on anyone's side - it is a common one, and each member of the team helps to solve it.

The most important position of the DevOps culture is to solve the problem, and not just apply DevOps practices. Moreover, these practices are implemented not “on someone's side”, but in the entire product. A project does not need a DevOps engineer per se, it needs a solution to a problem, and the role of a DevOps engineer can be spread over several team members with different specializations.

What are DevOps practices?

DevOps practices cover all stages of the software life cycle.

Igor Boyko: “The ideal case is when we start using DevOps practices right at the initiation of the project. Together with architects, we plan what architectural landscape the application will have, where it will be located and how it will be scaled, and choose a platform. Now microservice architecture is in vogue - for it we choose an orchestration system: you need to be able to manage each element of the application separately and update it independently of the others. Another practice is “infrastructure as code”. This is the name of the approach in which the infrastructure of the project is created and managed using code, and not through direct interaction with servers.

Then we move on to the development stage. Here, one of the biggest practices is building CI / CD: you need to help developers integrate changes into the product quickly, in small portions, more often and more painlessly. CI/CD covers both code review, and pouring the master into the codebase, and deploying the application to test and production environments.

At the CI/CD stages, the code passes through quality gates. With their help, they check that the code that came out of the developer's workstation meets the specified quality criteria. Unit and UI testing is added here. For fast, painless and focused deployment of the product, you can choose the appropriate type of deployment.

There is a place for DevOps practitioners at the stage of supporting the finished product. They are used for monitoring, feedback, security, implementation of changes. DevOps looks at all these tasks in terms of continuous improvement. We minimize repetitive operations and automate them. This also includes migrations, application extension, health support.

Why are DevOps practices useful?

If we were writing a textbook on modern DevOps practices, its first page would have three points: automation, release acceleration, and quick feedback from users.

Kirill Sergeev: “The first is automation. We can automate all interactions in the team: we wrote the code - rolled it out - checked it - installed it - collected feedback - returned to the beginning. All this is automatic.

The second is the acceleration of the release and even the simplification of development. It is always important for the customer that the product enters the market as soon as possible and begins to benefit earlier than competitors' analogues. The product delivery process can be infinitely improved: reduce time, add additional control marks, improve monitoring.

The third is the acceleration of user feedback. If he has comments, we can immediately make adjustments and immediately update the application.”

Why DevOps is needed and who are DevOps specialists

What is the relationship between the concepts of "system engineer", "build engineer" and "DevOps engineer"?

They overlap, but belong to slightly different areas.

The system engineer in 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. Now this is the name of the people responsible for CI / CD.

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

To summarize all this, it turns out something like this: a person in the position of a systems engineer plays the role of a build engineer on the project and is engaged in the implementation of DevOps practices there.

What exactly does a DevOps engineer do?

DevOps engineers put together all the pieces that make up a project. They know the specifics of the work of programmers, testers, system administrators and help simplify their work. They understand the needs and requirements of the business, its role in the development process - and build the process taking into account the interests of the customer.

We talked a lot about automation - DevOps engineers deal with it first of all. This is a very large item, which, among other things, includes the preparation of the environment.

Kirill Sergeev: “Before introducing updates to the product, they need to be tested on a third-party environment. It is prepared by DevOps engineers. They also impose a DevOps culture on the project as a whole: they implement DevOps practices at all layers of their projects. These three principles - automation, simplification, acceleration - they bring everywhere they can reach.

What should a DevOps engineer know?

By and large, he should have knowledge from different areas: programming, working with operating systems, databases, build systems and configurations. The ability to work with cloud infrastructure, orchestration and monitoring systems is added to them.

1. Programming languages

DevOps engineers know several basic languages ​​for automation and can, for example, say to a programmer: “Come on, will you do the installation of the code not with your hands, but with the help of our script that automates everything? We will prepare a config file for it, it will be convenient for both you and us to read it, and we can change it at any time. And we will also see who, when and for what makes changes to it.”

A DevOps engineer can learn one or more of these languages: Python, Groovy, Bash, Powershell, Ruby, Go. It is not required to know them at a deep level - the basics of syntax, the principles of OOP, the ability to write simple scripts for automation are enough.

2. Operating Systems

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

3. Version control systems

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

4. Cloud providers

AWS, Google, Azure - especially if we are talking about the Windows direction.

Kirill Sergeev: “Cloud providers provide us with virtual servers that fit perfectly on the rails of CI / CD.

Installing ten physical servers requires about a hundred manual steps. Each server needs to be manually started, installed and configured with the required operating system, installed our application on these ten servers, and then double-checked everything ten times. Cloud services replace this procedure with ten lines of code, and a good DevOps engineer should be able to operate with them. So he saves time, effort and money - both for the customer and for the company.

5. Orchestration systems: Docker and Kubernetes

Kirill Sergeev: “Virtual servers are divided into containers, in each of which we can install our application. When there are a lot of containers, you need to manage them: turn on one, turn off the other, make backups somewhere. This becomes quite a complex undertaking that requires an orchestration system.

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

6. Configuration systems: Chef, Ansible, Puppet

When you need to maintain a whole fleet of servers, you have to do a lot of the same type of operations. It is long and complicated, and manual work increases the chance of error. This is where configuration systems come to the rescue. With their help, a script is created that is convenient for programmers, DevOps engineers, and system administrators to read. This script helps to carry out the same operations on servers automatically. So manual operations (and, therefore, errors) become less.

What kind of career can a DevOps engineer build?

You can develop both horizontally and vertically.

Igor Boyko: “In terms of horizontal development, DevOps engineers have the widest prospects right now. Everything is constantly changing, and you can build skills in a variety of areas: from version control systems to monitoring, from configuration management to databases.

You can become a systems architect if an employee is interested in understanding how the application works at all stages of its life cycle - from development to support.

How to become a DevOps engineer?

  1. Read the Phoenix Project and DevOps Handbook. These are the real pillars of the DevOps philosophy, with the former being a fictional novel.
  2. Learn the technologies from the list above: on your own or in online courses.
  3. Join as a DevOps engineer on an open source project.
  4. Practice and offer DevOps practices on your personal and work projects.

Source: habr.com

Add a comment