1880 S Dairy Ashford Rd, Suite 650, Houston, TX 77077

What Is The Difference Between Site Reliability (Sre) Engineer And Devops?

DevOps vs Site Reliability Engineer

With the increasing complexity of application development, organizations are increasingly adopting methodologies that provide reliable, scalable software.

DevOps and Site Reliability Engineering (SRE) are two approaches that improve the product release cycle through improved collaboration, automation, and monitoring. Both approaches use automation and collaboration to help teams build robust and reliable software, but there are fundamental differences in what these approaches offer and how they work.

So, this article delves into the purpose of DevOps and SRE. We’ll look at both approaches, including the difference between SRE and DevOps, their benefits, and key elements. In addition, we will also focus our attention on the difference between SRE and DevOps engineer.

What is DevOps?

DevOps is a set of practices for improving the efficiency of the Development and Operation processes of software.

DevOps appeared in response to a conflict between developers and operations engineers (admins who maintain the code): the goal of the former is to roll out features as often as possible, the goal of the latter is to keep the system up and running. Since the new code is highly likely to break something in the production, exploitation does not like it very much. DevOps resolves this contradiction through its philosophy and many different practices. If you need DevOps services, you can always clarify all the necessary information at DevOps Support. 

You can read more about philosophy and practices in other articles, there are enough of them. For the purposes of this article, it is sufficient to understand two key points. DevOps suggests: close interaction between developers and the operation department; setting up and automating continuous integration and continuous code delivery (CI/CD) processes.

The second point is often impossible without moving to a microservice architecture. As a rule, it is implemented using Docker and Kubernetes.

What does a DevOps engineer do? DevOps is not a profession, but the word is regularly used to mean “a person who implements DevOps practices.” If you have ever opened a site with vacancies, then you understand what it is about. But the purpose of this article is not a dispute over terminology, but an analysis of the content of vacancies. Let’s go to him.

Based on the philosophy of DevOps, both developers and operations engineers can implement its practices. But judging by the vacancies, we rarely look for developers for this role, and the requirements for a DevOps engineer largely overlap with the requirements for a system administrator. See for yourself.

Requirements that match the requirements for system administrators:

  • knowledge and experience in Linux administration, containerization systems (Docker, Kubernetes), databases, LAMP;
  • understanding of the principles of TCP / IP;
  • experience in SQL and NoSQL database administration;
  • experience in setting up monitoring and logging systems (Zabbix, ELK, Grafana, Prometheus);
  • experience in configuring infrastructure through code (Ansible);
  • the ability to write scripts in Bash, Python or Ruby (sometimes Perl is mentioned);
  • experience with cloud platforms.

Requirements that are not found in vacancies of system administrators, but are typical for vacancies of DevOps engineers:

  • understanding of DevOps philosophy;
  • understanding and following the approach “infrastructure as code”;
  • understanding of software development lifecycle and CI/CD principles;
  • close cooperation with the development team.
  • If you look at the priorities, the system administrator focuses on the infrastructure, while the DevOps engineer spends most of his time automating the development and release processes, organizing monitoring.

At the same time, some vacancies for a DevOps engineer are really similar to vacancies for a system administrator. Sometimes the announcement does not mention the CI / CD setup at all, but only the requirement to build and maintain a cluster on Kubernetes. But there is no clear gradation between vacancies, it is impossible to divide them into groups.

What is a Site Reliability Engineer (SRE)?

SRE is one form of DevOps implementation. The SRE approach originated at Google and became popular among product IT companies after the release of the book of the same name in 2016.

The goal of an SRE engineer is to ensure that the service performs as reliably as specified in the Service Level Agreement (SLA). The stability of the work depends on both the infrastructure and the quality of the code, so SRE is engaged in both. As a rule, experienced system administrators or developers become SRE engineers. Developers even more often.

The SRE specialty is relatively new, so there are few vacancies. But even the few open announcements show that expectations from SRE are very high. This specialist should know everything that a Senior level system administrator knows, plus be able to develop in one of the programming languages, preferably not scripted.

Site Reliability Engineer requirements examples:

  • confident knowledge of Linux OS advanced level of work in the console;
  • experience in C/C++ or Go development
  • understanding of TCP/IP and HTTP;
  • understanding of the OS device (processes, memory, synchronization);
  • experience in setting up various tools for monitoring and configuring servers (Zabbix, Puppet, Ansible or similar);
  • experience with Docker;
  • Experience in using Amazon cloud services: EC2, VPC, S3, Route53;
  • experience in configuring networks (tools: Nginx, HAProxy, bind, git, iptables, stunnel, OpenVPN);
  • experience in setting up virtual machines: kvm, xen.

Site Reliability Engineer tasks examples:

  • optimization of the existing architecture and services;
  • reducing the burden on maintenance and service services through automation;
  • studying available services and maintaining up-to-date knowledge on them;
  • active and proactive search for possible problems and their elimination;
  • ensure the specified level of SLA & SLO;
  • participate in incident management;
  • write postmortem and develop activities to improve the stability of services;
  • create, update DRP (Disaster Recovery Plan), BCP (Disaster Recovery Plan) and conduct regular failure exercises with subsequent analysis of the results;
  • participate in the development of the architecture of services and changes in their configurations;
  • optimization of existing observability systems.

Is SRE and DevOps The Same?

DevOps started as a movement, SRE was developed as Google’s internal approach to building and maintaining scalable and highly reliable systems. DevOps is a broad set of principles for collaboration throughout the life cycle, between operations and product development. SRE is a position. As a result, SRE vs DevOps engineer are completely different concepts. But no matter what kind of specialist you need, you can always order the required services from Romexoft.

It is worth noting that yes, all these specialists somehow work with the infrastructure and services that run on it. From all of them, employers expect good knowledge of Linux, networks, databases, logging and monitoring services, etc. But the difference between devops and site reliability engineer is really huge.

Difference Between Site Reliability Engineer (SRE) and DevOps

So, what is the difference between Site Reliability Engineer and DevOps?

We have highlighted a few key points that clearly reflect the real difference between these two concepts. As a result, we present to your attention the following list:

1. Main Metrics or Focus: DevOps has TTM (Time To Market), SRE – reliability (reliability or fault tolerance)

2. Areas of responsibility: DevOps is responsible for infrastructure and core practices, in a cross-functional team Operations Engineer may be responsible for practices. The SRE is responsible for “native” application fault tolerance and core practices.

3. The main specialization of an engineer: DevOps is infrastructure and automation, SRE is software development.

Speaking in the language of facts and in simpler words, the situation is as follows. The confrontation between SRE vs DevOps engineer looks like this:

DevOps engineer cares about the speed and quality of code delivery. It helps developers set up processes so that new features come out quickly and do not break anything. If the new code broke everything, then this is his responsibility too.

SRE is thinking about meeting the SLA. He also works with the infrastructure, but he is not engaged in basic tuning, but in fine tuning – he is looking for opportunities for optimization and points of failure, improves the architecture. He doesn’t care about code delivery speed, he cares about reliability. If the code has the potential to break production, then SRE will not let it through.