Why system administrators should become DevOps engineers



There is no better time for learning in life than today.


It's 2019 and the DevOps theme is as relevant as ever. They say that the days of system administrators have passed, as the era of mainframes has passed. But is it really so?

As is often the case in IT, the situation has changed. The DevOps methodology has appeared, but it cannot exist without a person with the skills of a system administrator, that is, without Ops.



Before the DevOps approach acquired its modern look, I classified myself as an Ops. And I well know what a system administrator is experiencing when he realizes how much he has not yet been able to do and how little time he has to learn how to do this.











But is everything really so scary? I would say that it is not necessary to perceive the lack of knowledge as some kind of big problem. It is rather a professional challenge.



Web-scale products are based on Linux or other open source software, and there are fewer and fewer specialists on the market who can serve them. Demand has already exceeded the number of professionals in this field. The system administrator will not be able to just continue to work without increasing his skill level. He must have automation skills to manage multiple servers / nodes, and have a good understanding of how they work to solve problems.



Before you become a member of the DevOps team, you have a long, but interesting journey to learn, exploring new technologies and a variety of tools necessary to maintain the system in accordance with DevOps standards.



So, how can the system administrator switch from the usual approach to work to the new DevOps concept? Everything is as usual: first you need to change your mindset. It’s not easy at all to abandon the approach that you have been following for the last ten or twenty years and start doing everything in a new way, but this is necessary.



First of all, it is important to understand that DevOps is not a specific position in a company, but a set of specific practices. These practices include the distribution of isolated systems, reducing the harm from bugs and errors, frequent and timely software updates, smooth interaction between developers (Dev) and administrators (Ops), as well as constant testing of not only the code, but the entire structure as part of the continuous integration process and delivery (CI / CD) .



Along with changing the way of thinking, you need to learn how to maintain the infrastructure and ensure its stable operation, reliability and availability for continuous integration and delivery of applications, services and software.



What you might lack as an Ops specialist is programming skills. Now writing scripts (scripts) that system administrators use to automatically install patches on a server, manage files and accounts, to troubleshoot and compile documentation is already considered obsolete. In relatively simple cases, the scenarios are still applied, but the concept of DevOps involves solving large-scale tasks, whether it is implementation, testing, working with assemblies or deployment.



Thus, if you want to learn automation, you need to at least master a little programming, even if you are not a developer, because at this stage of its development , infrastructure automation in DevOps requires this skill.



What to do? To remain a sought-after specialist, you need to acquire relevant skills - to master at least one programming language, for example Python. To a person who is professionally involved in administration, this may seem complicated, because he is used to thinking that only developers program. It is not necessary to become an expert, however, knowledge of one of the programming languages ​​(it can be Python, Bash or even Powershell ) will certainly be an advantage.



It takes some time to learn how to program. Be careful and patient - this will help you maintain an understanding of the situation when communicating with developers from the DevOps team and customers. Half an hour a day, an hour or more - learning a programming language should be your main goal.



System administrators and DevOps specialists solve similar problems, however, there is a significant difference. It is believed that the system administrator cannot do everything that the DevOps engineer can do. Say, the sysadmin is more focused on configuring, maintaining and maintaining the health of server systems, but the DevOps engineer is pulling this whole cart and another small cart.



But how true is this statement?



System administrator: one warrior in the field



Despite the differences and similarities noted in this article, I still think that there is no significant difference between system administration and DevOps. System administrators always performed the same functions as the DevOps specialists, but no one had ever called it DevOps before. I think that it makes no sense to specifically look for differences, especially if this is not related to any task. Do not forget that, unlike the system administrator, DevOps is not a position, but a concept.



One more important thing to note, without which the conversation about administration and DevOps will be incomplete. In the usual sense, system administration assumes that a specialist has a specific set of skills and is focused on servicing various types of infrastructures. Not in the sense that this is a universal employee, but in the fact that there are a number of tasks performed by all administrators.



For example, from time to time they have to act as a kind of technical handyman, that is, to do literally everything in a row. And if such an administrator is the only one in the entire organization, then he will perform all the technical work. This can be anything from servicing printers and copiers to performing network-related tasks, such as configuring routers and switches and managing them or setting up a firewall.



He will also be responsible for hardware updates, checking and analyzing logs, security auditing, installing patches on the server, troubleshooting, root cause analysis, and automation — typically through PowerShell, Python, or Bash scripts. One example of the use of scripts is the management of user accounts and groups. Creating user accounts and assigning permissions is an extremely tedious task, as users appear and disappear almost every day. Scripted automation frees up time for more important infrastructure tasks, such as upgrading switches and servers and performing other projects that affect the profitability of the company in which the administrator works (although it is generally accepted that the IT department does not directly generate revenue).



The task of the system administrator is not to waste time and save company money in any way possible. Sometimes system administrators work as members of a large team that brings together, for example, Linux, Windows, database, storage, and so on administrators. The work schedule is also different. For example, a shift in one time zone at the end of the day transfers things to the next shift in another time zone so that the processes do not stop (follow-the-sun); or employees have a normal working day from 9 am to 5 pm; or is it work in a 24-hour data center.



Over time, system administrators have learned to think strategically and combine important matters with routine tasks. The teams and departments in which they work usually do not have enough resources, but at the same time everyone is trying to perform daily tasks in full.



DevOps: development and service are one



DevOps is a kind of philosophy of development and maintenance processes. This approach in the IT world has become truly innovative.



Under the auspices of DevOps, a team of software developers is working on one side, and a team of service specialists on the other. Often they are joined by product management specialists, testers, and user interface designers. By joining forces, these specialists optimize work operations to quickly roll out new applications and update code in order to support and improve the efficiency of the entire company.



At the heart of DevOps is the control over the development and operation of software throughout the entire life cycle. Service specialists must support developers, and developers are faced with the task of understanding not only the APIs used in systems. They should understand what is “under the hood” (that is, how the hardware and operating systems function) in order to better cope with errors, solve problems and interact with service specialists.



System administrators can go to the DevOps team if they want to learn the latest technology and are open to innovative ideas and solutions. As I said, they don’t need to become full-fledged programmers, but mastering programming languages ​​such as Ruby, Python, or Go will help them become very useful members of the team. Although system administrators traditionally perform all the work on their own and are often perceived as loners, in DevOps they will have the completely opposite experience when all participants in the process interact with each other.



The topic of automation is becoming increasingly relevant. Both system administrators and DevOps specialists are interested in operational scaling, reducing the number of errors, as well as in the quick search and elimination of existing errors. Thus, automation is a concept where two areas converge. System administrators are responsible for cloud services such as AWS, Azure, and the Google Cloud Platform. They need to understand the principles of continuous integration and delivery and how to use tools like Jenkins in their work.



In addition, system administrators must use configuration and management tools such as Ansible , which are required to deploy ten or twenty servers in parallel.



The basic concept is infrastructure as a code . Software in everything. In fact, so that the profession of a system administrator does not lose relevance, you just need to change the focus a little. System administrators are engaged in maintenance and should be able to effectively interact with developers, and vice versa. As they say, one head is good, and two is better.



And the last detail in this mechanism is Git . Working with Git is one of the traditional daily responsibilities of a system administrator. This version control system is widely used by developers, DevOps specialists, Agile teams, and many others. If your work is related to the software life cycle, then you will definitely work with Git.



Git contains a lot of features. Most likely, you will never learn all the Git commands, but you will understand exactly why this tool is considered the main one in communication and collaboration on software. A thorough knowledge of Git is very important if you work in the DevOps team.



If you are a system administrator, then you need to better learn Git, understand how version control is built and remember common commands: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff and others . There are many online courses and books to help you learn this topic from scratch and become a professional with specific skills. There are also great cheat sheets with Git commands , so cramming them all is optional, but the more you use Git, the easier it will be for you.



Conclusion



Ultimately, you decide whether you need to become a DevOps specialist or better to remain a system administrator. As you can see, the transition requires training, but the sooner you start, the better. Choose a programming language and simultaneously study tools such as Git (version control), Jenkins (CI / CD, continuous integration) and Ansible (configuration and automation). Whatever option you choose, do not forget that you need to constantly learn and improve your skills.



All Articles