Why System Administrators Should Become DevOps Engineers

Why System Administrators Should Become DevOps Engineers

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


It's 2019, and DevOps is more relevant than ever. They say that the days of system administrators are over, just as the era of the mainframe has passed. But is it really so?
As is often the case in IT, the situation has changed. A DevOps methodology has emerged, but it cannot exist without a person with system administrator skills, that is, without Ops.

Before the DevOps approach took on its modern form, I classified myself as an Ops. And I know well what a system administrator experiences when he realizes how much he still does not know how and how little time he has to learn it.

Why System Administrators Should Become DevOps Engineers

But is it really all that scary? I would say that the lack of knowledge should not be perceived as some kind of big problem. It's more of a professional challenge.

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

Before becoming a member of the DevOps team, you have to go through a rather long but interesting journey, learning new technologies and a variety of tools necessary to maintain the system according to DevOps standards.

So, how does a system administrator move from the usual approach to work to the new concept of DevOps? Everything is as usual: first you need to change your thinking. It's not easy to abandon the approach you've been following for the last ten or twenty years and start doing things in a new way, but it's 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, the reduction of harm from bugs and errors, frequent and timely software updates, well-established interaction between developers (Dev) and administrators (Ops), as well as constant testing not only of the code, but of the entire structure within the process. Continuous Integration and Delivery (CI/CD).

Along with a change in mindset, you need to learn how to maintain infrastructure and ensure it is stable, reliable, and available for continuous integration and delivery of applications, services, and software.

What you might be missing as an Ops specialist are programming skills. Now writing scripts (scripts), which system administrators use to automatically install patches on the server, manage files and accounts, for troubleshooting and compiling documentation, is already considered obsolete. In relatively simple cases, scenarios still apply, but DevOps is about solving large-scale tasks, whether it's implementation, testing, building work, or deployment.

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

What to do? To remain in demand as a specialist, you need to acquire up-to-date skills - master at least one programming language, such as Python. For a person who is professionally involved in administration, this may seem difficult, since he is used to thinking that only developers program. It is not necessary to become an expert, but knowledge of one of the programming languages ​​(it can be Python, Bash, or even Powershell) will definitely be an advantage.

It takes some time to learn how to program. Be mindful and patient, this will help you maintain an understanding of the situation when communicating with developers on 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 perform similar tasks, but there is a significant difference. It is believed that a system administrator cannot do everything that a DevOps engineer can. Say, the system administrator is more focused on configuring, maintaining and ensuring the operability of server systems, but the DevOps engineer pulls all this stuff and another small cart.

But how true is this statement?

System administrator: one in the field warrior

Despite the differences and similarities noted in this article, I still believe that there is no significant difference between system administration and DevOps. System administrators have always performed the same functions as DevOps, it's just that nobody called it DevOps before. I think that it makes no sense to specifically look for differences, especially if it is not related to some task. Don't forget that, unlike a system administrator, DevOps is not a position, but a concept.

It should be noted one more important thing, without which the conversation about both administration and DevOps will be incomplete. System administration in the usual sense implies 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 sense that there are a number of tasks performed by all administrators.

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

He will also be responsible for updating hardware, checking and analyzing logs, security auditing, installing patches on the server, troubleshooting, root cause analysis, and automationβ€”typically via PowerShell, Python, or Bash scripts. One example of using scenarios is the management of user and group accounts. Creating user accounts and assigning permissions is an extremely tedious task as users appear and disappear almost every day. Scripting automation allows you to free 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 commonly believed that the IT department does not generate income directly).

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

System administrators over time have learned to think strategically and combine important things with routine tasks. The teams and departments they work in are usually under-resourced, yet everyone tries to complete daily tasks to the fullest.

DevOps: development and maintenance 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 umbrella of DevOps, there is a software development team on one side and a maintenance team on the other. They are often joined by product managers, testers, and user interface designers. By joining forces, these experts streamline workflows to quickly roll out new applications and update code to support and improve the efficiency of the entire company.

DevOps is based on control over the development and operation of software throughout the entire life cycle. Maintainers need to support developers, and it's up to developers to understand more than just the APIs used in systems. They need to understand what's "under the hood" (i.e. how hardware and operating systems function) in order to better handle errors, resolve problems, and communicate with service technicians.

System administrators can move to the DevOps team if they are willing to learn the latest technologies and are open to innovative ideas and solutions. As I said, they don't have to become full-fledged programmers, but learning programming languages ​​like Ruby, Python, or Go will help them become very useful team members. Although system administrators traditionally do all the work themselves and are often perceived as loners, in DevOps they are in for a completely opposite experience, when all participants in the process interact with each other.

The topic of automation is becoming more and more relevant. Both system administrators and DevOps are interested in scaling quickly, reducing bugs, and quickly finding and fixing existing bugs. Thus, automation is a concept where the two areas converge. System administrators are responsible for cloud services such as AWS, Azure, and Google Cloud Platform. They need to understand the principles of continuous integration and delivery and how to use tools like Jenkins.

In addition, system administrators should use configuration and management tools such as Ansibleneeded to deploy ten or twenty servers in parallel.

The main concept is infrastructure as code. Software in everything. In fact, in order for the profession of a system administrator not to lose its relevance, you just need to change the emphasis a little. System administrators are involved in maintenance and must be able to communicate effectively with developers, and vice versa. As the saying goes, one head is good, but two is better.

And the last detail in this mechanism is Go. Working with Git is one of the traditional day-to-day responsibilities of a system administrator. This version control system is widely used by developers, DevOps, 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. You will most likely never learn all the commands of Git, but you will understand exactly why this tool is considered the main tool in communication and collaboration on software. A solid knowledge of Git is very important if you work on a DevOps team.

If you are a system administrator, then you need to learn Git better, 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 that will help you learn this topic from scratch and become a professional with specific skills. There are also wonderful cheat sheets with Git commands, so it's not necessary to drill them all, but the more you use Git, the easier it will become.

Conclusion

Ultimately, it is up to you to decide whether you should become a DevOps specialist or if you prefer 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 learn tools at the same time, such as Go (version control), Jenkins (CI/CD, continuous integration) and Ansible (configuration and automation). Whichever option you choose, don't forget that you need to constantly learn and improve your skills.

Source: habr.com

Add a comment