Who is a DevOps engineer? and what does he do?

Who is DevOps engineer


The DevOps methodology is a set of practices whose task is to reduce software development time and speed up the release of updates and patches for it. For this approach, it is not enough to attract classical admins and developers. Here we need individual specialists who can both configure the hardware and adapt the


DevOps (development + operations) is a methodology that originated in 2009, aimed at the interaction of programmers and system administrators to increase the frequency of release releases. Accordingly, DevOps engineer is a specialist who works at the junction of these two positions and is engaged in automating the application life cycle (including design, development, testing, deployment, support, and monitoring).

Who is a DevOps engineer?

DevOps engineer is implementing the DevOps methodology. It synchronizes all stages of creating a software product: from writing code to testing and releasing an application. Such a specialist controls the development and administration departments, plus automates the execution of their tasks by introducing various software tools.

The feature of the DevOps engineer is that it combines many professions: admin, developer, tester, and manager.



Joe Sanchez, DevOps evangelist from VMware, a virtualization software company, outlined a number of skills that a DevOps engineer must possess. In addition to the obvious knowledge of the DevOps methodology, this person should have experience in administering Windows and Linux and experience with automation tools like Chef, Puppet, Ansible. He should also be able to write scripts and code in a couple of languages ​​and understand network technologies.


DevOps engineer is responsible for any automation of tasks related to the configuration and deployment of applications. Software monitoring also rests on his shoulders. To solve these problems, he uses various configuration management systems, virtualization solutions, and cloud tools for balancing resources.



DevOps engineer: what knowledge and skills should he have?

This is a fairly new direction in IT, and there are no established requirements for it because Each company understands and implements DevOps in its own way. 

First of all, a DevOps engineer must have a good technical outlook, because this is the work at the junction of programming and administration. Ideally, you need to have the experience of a programmer, multiplied by the experience of an administrator, but there are very few such specialists on the market. 

Basically, the current DevOps engineers are those administrators who have been closely involved in supporting web applications for the past few years and have gained experience in this area. With the advent of Cloud providers, web application architecture has undergone significant changes. In the process of dividing monolithic applications into microservices, new application design patterns appear.

What is the DevOps Engineer toolkit?

Who is Devops engineer

I repeat, a new profession and an established "gentlemanly set" does not exist. Almost all DevOps tools are open source products with all the benefits of this approach. 

Containerization, automation, and orchestration are now in the trend. We chose Docker, Ansible, and Kubernetes. AWS was chosen as a Cloud provider. We also use our own products: IntelliJ IDEA - for the development and support of deployment scripts, Upsource - for Code Review in a team, the CI / CD process is completely built on TeamCity.


Task and Responsibilities of DevOps Engineer


The main task of the DevOps engineer is to maximize the predictability, effectiveness, and security of software development.

If we consider the full software life cycle, then at the stage of the DevOps assessment, specialists get the initial information about the need for new coding and making changes to the IT infrastructure. 

At the design stage, they determine the infrastructure requirements. At the development and testing stage, they are involved in product deployment, as well as support for development tools, integration, and load testing of software to verify the readiness of the operating environment.

The bulk of the work of the DevOps engineer is in the release phase - delivering the product to the customer. The focus is on the performance of all delivery process threads. Such an expert makes sure that known bugs are never passed to the next stage of work, local optimization never develops, leading to the creation of global degradation.

Classic programmers have no idea how their application will be deployed in production, integrate with a dozen other applications. Therefore, we need people who will understand the code at a sufficient level to clean up the garbage from the configs for the developers, add crutches as necessary, link the services together, deploy this stuff to the test stands and automate the testing, release and update processes. 
The responsibilities of the DevOps engineer include:

  • Deployment of the release set by developers in production;
  • Integration and deepening of development processes in the supply;
  • Standardization of the development environment;
  • Setting up the infrastructure for the features of the developed software;
  • Preparing a productive environment for frequent changes;
  • Detection and correction of problems;
  • Automation of processes.

All kinds of automation, monitoring systems, data synchronization and more. For example, such a task is to raise a reduced copy of the infrastructure production with just one click, so that one of the teams can deploy its brunch for testing.
Automation of various tasks related to deployments of software that is being developed, deployments of system software, configuration. Providing monitoring, response to various emergency situations. 

Platform improvements in terms of lowering infrastructure costs, in terms of performance and simplicity. Providing various access for developers (for example, in the repository, VPN). Design of systems, their architecture.

In my opinion, the main tasks of DevOps are the automation of development processes (rolling out a branch from git for testing, rolling out a specific version of an application in production, automation of infrastructure management), monitoring the state of the application, possibly automatically restoring the application and corresponding alerts to team members.
In the process, DevOps engineer uses tools that automate the allocation of system resources and management. Such tools include various configuration management tools, virtualization at different levels, automation of operational processes, and cloud-based on-demand resource allocation tools.

I gradually“ moved ”to DevOps from the Dev department. In the work, you have to actively communicate with Dev, Ops, and QA departments, with other departments less often. If you describe the position of DevOps in one sentence, I would say this - to create tools for the Dev, Ops, QA, etc departments so that it is easier and more convenient for them to work.
We create new virtual machines, write services for their additional monitoring, and so on. 

Yesterday, I raised TeamCity / Gradle + GitLab and set up the automatic calculation of the site by committing to a server turnip. That's what DevOps do.

Advantages

The main advantage of the profession DevOps engineer is the growing interest of companies in the concept of DevOps. According to EMA, about 30% of companies have already implemented or plan to implement DevOps in the near future. That is, there is demand - a good specialist will not remain without work.


DevOps specialists themselves are attracted by the fact that they have a 100% workload, unlike the profession of the system administrator.

like the factor of surprise - this makes the work quite interesting and does not turn into a routine.
Another plus is a wide specialization:

In my opinion, development loses outperformance for simple reasons. The developer has in his hands the tool with which he does his work - the syntax of the language and some language gadgets and features. The operating engineer knows a lot of everything on which modern information systems are built, how they work, and the study of some Ruby will not differ much from the study of the Ganglia monitoring system. 
Some are attracted by the fact that the result of the work can be “touched”:

For me, building complex systems and maintaining them in real life is more interesting than clean code that runs in the laboratory. Roughly speaking, riding a real horse across the steppe and then washing it, scrubbing and feeding it is much more interesting and more satisfying than a spherical horse in a vacuum. 

How to become a DevOps Engineer?

who is a devops engineer

Most DevOps engineers are system administrators who have learned programming tools, or developers who understand the intricacies of operations processes. 

It is advisable to have a basic technical education, to understand issues related to system administration and automation of various tasks.

In your head, you need to have a library on all available technologies, from signal coding methods to the latest fashionable Open Stack product.
Necessary qualities:


  • Analytical mindset;
  • Stress resistance;
  • The ability not to give up even in hopeless situations.



It’s important to understand that it’s not the developers who are bad and make such a product but just put yourself in their place and help.
Possible career paths for DevOps engineer:


  • Grow as a DevOps specialist, go deep into specialization and master related technologies;
  • Retraining in developers if you started as a system administrator;
  • Retraining in system administrators if you started as a developer (if it is interesting to work more with infrastructure than with development);
  • Re-qualify as IT security engineers;
  • Also open the way to system architects, testers (including automation ), project managers.




In fact, it’s better to just be a good specialist in Any your field that you like and live a full life. And no matter who it is, DevOp or the oil chemist. 

Average Salary of DevOps engineer:



DevOps Engineers average salary:


  • Junior - 2 years - $1,339
  • Middle - 3 years - $2141
  • Senior - 6 years old - $2,944


What are the requirements for work experience?

There is nothing more valuable than experience, and we are very interested in the projects on which the person worked. 

We want to know the approaches that other companies use, we want to compare them with ours and choose the best solution. We would like to see the real experience of deploying public web applications ranging from site selection to commissioning.

6 main principles of "DevOps"

main principle of devops

There are six basic tasks of the "DevOps". Smart people have been promoting these approaches for 7 years, and they are right, it works.

1. Connect the two worlds: establish communication between programmers and all other IT departments: As a rule, these worlds are isolated from each other: programmers "cook themselves", operators - themselves, and as a result, a series of questions start a confrontation, which should not be. We are not psychologists, but we need to organize work and organize processes so that other guys feel comfortable and interact.

2. It is good to understand how programmers work and which methodologies they use, how they build their own work processes to produce high-quality code and updates in a reasonable amount of time.

3. Introduce a uniform environment. It happens that programmers deploy a test environment, create virtual machines and databases, and then this does not work for the same operators, testers, and technical support. The graters begin. “Everything works fine for me,” the programmer says. Therefore, it is necessary to introduce uniformity: to allow both to operate in identical environments.

4. Automation: Since a person is a creature that has a tendency to make mistakes, it is desirable to automate everything that needs to be done manually (in 90% of cases this is a feasible task), especially complex multi-component manual actions. 

There are offices in which releases of new versions of programs take up to six weeks (and it remains to be seen what will break on the way). If all this is automated, you can get the result in a couple of hours.

At the same time, you need to understand well what you are automating and leave a number of actions manual at least for validation. 

The basic rule of automation: do not automate what you do not understand and/or cannot automatically validate.

Automation is the most noticeable part of the duties of the DevOp, it is immediately visible.

By the way, at the upcoming conference, I will talk about CloudFormation - this is a service from Amazon that allows you to create other services and resources in an automated mode.

This tool facilitates the work of DevOps in many aspects. I will try to tell you why and how to use it as an example of our internal developments in ISsoft.

5. Collect metrics to understand what your results are. Firstly, the most common metrics are system metrics: RAM on machines, channel loading, data transfer rate, processor load. 

Secondly, business metrics: how many customers bought something, how many did not buy, but they were going to, why some of them left. It is desirable that these two types of metrics correlate with each other in order to clearly understand where the problem is: in hardware and/or in business.

6. The improvement process - and there is always something to improve. The implementation of the first 5 points is almost always imperfect since this is again what people do.

These are book things, but in reality, this is roughly what happens. As a rule, IT projects resort to your services that have problems on all 6 points. 

The setup process can be either quick or long. It is important to communicate with everyone: the DevOps engineer is included in a very tight communication, with daily maps and stand-ups. Sometimes, during the day, from 6 to 8 "meetings" can take place. If you like to talk, this is the position where you need to talk every day.


Non-stop work - I don’t remember a single day in a year for me to cool. Even when everything is done, point number 6 comes: there is always something to improve.


Conclusion:

DevOps engineer is a connecting (and very important) link between developers and infrastructure, and without these specialists, it is already impossible to imagine the launch of complex products. 

As a DevOps engineer, you should never stop learning, and we are not afraid to try something new and are always in search of relevant technologies. In the near future, the team of our DevOps engineers will only grow, and we still have to solve many interesting and non-trivial tasks.

Post a Comment

Previous Post Next Post