Very often people do not understand what distinguishes a DevOps engineer from a system administrator and confuse these terms. In fact, there are significant differences between them.
System administrators are an essential part of the team of any modern business. They build and maintain a corporate network, install and configure servers and equipment, configure the OS and the required software, monitor the network status, create data backups and restore them if necessary.
The system administrator can perform the following tasks:
– Administration of servers based on the Windows Server OS family or Linux
– Ensuring the resiliency of the network infrastructure,
– Configuring VPN access to network resources,
– Installation and configuration of the RDP server,
– Launch and configure a local or cloud corporate server,
– Install and configure Windows Active Directory
As you can see, system administrators are vital to ensure the operability and security of the local network of any company or enterprise.
However, mostly government organizations and enterprises operate in conditions of insufficient funding, and system administrators have to solve the same issues of outdated OSs or software like Microsoft Office 2007/2010 / 2013. All of these Microsoft products are characterized by a low degree of automation, which forces system administrators to create huge databases of Powershell scripts to perform routine work.
DevOps Engineer: Cloud IT Specialist
DevOps is a specialist for working with cloud hosting service providers, creating and maintaining the health of solutions and environments hosted on AWS, Azure, GCP or in another cloud. Its main task is to maximize the AUTOMATION of processes for servicing existing network resources or deploying new ones. Therefore, the tasks that it solves (as well as the tools used) are significantly different from the tasks and tools of the system administrator.
What does the DevOps engineer workflow consist of? Here are its main components:
Continuous Integration and Continuous Deployment. Providing automatic processing of new code for your application or system. Automatically build new versions and test before releasing an update. Continuous Deployment, ensuring the continuity of the service to the end-user through the use of tools like Jenkins to build rolling updates, updates when the program is restarted, or micro-patches inside the product.
Automated Server Deployment, (IaC, Infrastructure as Code). Using tools like Terraform, Kubernetes, Ansible, Docker to automatically create and configure virtual servers in the cloud, instead of manually assembling and configuring physical machines in a rack.
Continuous Deployment, (CD, from the English Continuous Deployment). Ensuring the continuity of the service to the end user through the use of tools like Jenkins to build rolling updates, updates when the program is restarted, or micro-patches inside the product.
Monitoring Installation and maintenance of network infrastructure status monitoring systems, including intelligent monitoring, that is, setting up scenarios for automatically solving common problems without involving manual DevOps. For this, programs like Prometheus & Grafana, Sumologic or Splunk are used
Automated monitoring is very important but DevOps should know what to monitor. Unfortunately, it is not always possible to monitor thousands of processes. There are 5 most important steps that DevOps should be focused:
- Development cycles. To get an idea of how the automatic deployment pipeline functions, keep an eye on how often changes are made to the code, how many new features are implemented, how many errors are detected and fixed, etc.
- Deployment. If the automatic deployment procedure fails, you need a tool that will alert the appropriate specialists. Most continuous integration servers automatically forward messages to chat servers if deployment or build procedures fail.
- Vulnerabilities. After the code is transferred to production, vulnerability management should be done automatically. It does not matter if we are talking about known vulnerabilities (present in the National Vulnerability Database) or unknown (resulting from unsafe actions), in any case, the system must detect them and minimize the consequences.
- Server Health. Server monitoring is essential for almost any type of infrastructure, not just when using DevOps. System performance and service-level agreements (SLAs) depend on server status. There are several tools to help solve this problem. Infrastructure monitoring should also be undertaken.
- Application performance. To determine the key points of productivity and regression of applications, it is necessary to monitor their functioning and make the necessary decisions in a timely manner. A number of tools will help you with this, including AppDynamics and New Relic. Application performance monitoring (APM) tools provide additional information about the nature of application use and their performance.
Reporting. The DevOps engineer monitors the state of a much larger amount of resources than the sysadmin, and it requires more advanced and detailed systems for storing and processing infrastructure status reports. This is necessary to calculate the cost of spent cloud resources in real-time, to control the safe operation of the system and to prevent attempts of unauthorized access to it. The most commonly used DevOps tools are ELK stack, Datadog, Logstash, and others.
Implement a blue-green deployment. Blue deployment occurs when a change is made and deployment is triggered. Blue deployments always run in line with the old version (the green deployment). Only a small amount of users initially have access to the blue deployment with more following if the deployment works well. Eventually the green deployment will be removed. If the blue deployment fails it is easy to reroute people back to the green avoiding any kind of downtime or system outage.
Cooperation. The DevOps engineer provides the most effective interaction between the systems used by the front-end and back-end developers, testers and user support, big data analysts and machine learning specialists. The main goal of the DevOp work is to ensure the most reliable and fast functioning of cloud resources to reduce development time and costs, as well as to ensure the continuity of the provision of services to end-users. Key systems used include Redmine, Jira, Confluence, Trello and others.
To summarize: DevOps engineer or sysadmin?
As you can see, unlike the system administrator, who solves the problems of maintaining the working capacity of the local network and software, the DevOps engineer deals with the reliability of the cloud IT infrastructure, highly loaded projects, high availability of applications, load balancing, etc.
Thus, the baggage of skills, the list of applied software and the job responsibilities of the system administrator and DevOps engineer are fundamentally different. And if you can’t decide if your business needs a devs engineer or a system administrator, you should know both. Only in this way you can solve the whole range of tasks of modern competitive business.
Unfortunately, the system administrator is often deprived of the opportunity to grow and develop professionally, as he is forced to maintain an existing corporate network year after year. He simply will not have experience (and the ability to get it) on transferring the application to the cloud or building a highly loaded IT infrastructure and balancing the load in it.
On the other hand, the demand for dev-engineers in our realities far exceeds supply. The vast majority of enterprises and organizations in domestic business have not yet transferred their systems to the cloud, and to solve such problems, they resort to the help of market leaders of managed IT service providers.
As you can see, hiring both a devs engineer and a system administrator would be the best solution for ensuring business competitiveness, but if you want to guarantee the success of your project, it’s better to hire teams