Site Reliability Engineering (SRE) and DevOps: A Comparative Study for Beginners
Tags: devops, sitereliabilityengineering, beginners, cloud
Published: 2023-06-05 09:55:09

I am pretty sure you have heard of DevOps and SRE in your technological journey if you are a beginner it can be very confusing. Both SRE and DevOps share a goal of bridging development and operations. 

It is hard to say one is better than the other since they are both similar yet different in some ways. To simplify this, let's look at some key points.

- SRE is viewed as a specific implementation of DevOps.

- Thy both share the same foundational principles.

- They both aim to deliver reliable software.

- DevOps determines **what** needs to be done, whereas SRE determinesDevOps determines what needs to be done, whereas SRE determines how it will be done. DevOps captures a vision of a system that is developed efficiently and reliably. SRE builds processes and values that result in this system. 

- You can establish your goals using DevOps principles, and then implement SRE to achieve them. it will be done. DevOps captures a vision of a system that is developed efficiently and reliably. SRE builds processes and values that result in this system. You can establish your goals using DevOps principles, and then implement SRE to achieve them.






## TABLE OF CONTENT

- [Introduction](#introduction)
- [Methods and Practices](#methods-and-practices)
- [Team Structure and Roles](#team-structure-and-roles)
- [Tools](#tools)
- [How SRE connects to DevOps](#how-sre-connects-to-devops)
- [Conclusion](#conclusion)

## Introduction
**What is DevOps?**

- DevOps reflects two parts **Dev**elopement and **Op**erations which originated from the need for faster software delivery and more streamlined collaboration. This promotes shared responsibilities, collaboration and automation.

- The main goal of DevOps is to reduce the time between making a change in code and that change reaching customers without having an impact on reliability. 

- DevOps has its main focus on on collaboration, integration and automation of system services  to enable faster and more efficient software delivery. It helps stream line software development lifecycle,encompassing development, testing, deployment and operations.

**What is SRE?**

- As we had mentioned earlier Site Reliability Engineering is an implementation of DevOps where it's goal is to align engineering goals with customer satisfaction. SRE originated from google where it was developed to maintain the reliability and scalability of large scale systems.

- SRE introduced practices like error budgets and defined service level objects(SLOs) to align the goals of engineering and operations team.

- SRE's focuses on the reliability, availability and performance of systems and services with emphasis on monitoring, engineering practices and response to high reliability.




## Methods and Practices

### DevOps methods and Practices

- Practices in DevOps are based on continuous, incremental improvements achieved by automation.The methodology focuses on the following elements:

**Continuous Integration and Continuous Delivery(CI/CD)**

- One goal that DevOps aims to achieve is to deliver updates and applications to customers rapidly and frequently, CI/CD pipelines connect processes and practices.

- DevOps automates updating and code release to production. CI/CD means continuous monitoring and deployment to ensure  that code is consistent in deployment environments and also in the software versions.

**Infrastructure as code**

- In order for IT infrastructure to be managed using software engineering techniques and provisioned automatically, DevOps places a strong emphasis on its abstraction.This ensures the system can efficiently:
   

  - Monitor infrastructure configurations.
  - Track changes.
  - Roll back changes with unintended effects.

**Automated Testing**

- After being written or changed, code is automatically and continually tested. The continuous process speeds up deployment by removing the delays brought on by pre-release testing.

### SRE methods and Practices

- SRE routine includes analysis of logs, incidence response, testing production environments, patch management etc. Let's break it down:

**Service Level Objectives (SLOs) and Service Level Indicators (SLIs)**

- Reliability is crucial for building customer trust and satisfaction and SRE allows the measure of how satisfied a customer is by using SLIs so we can say that SLIs are measurements used to quantify the performance and reliability of a service. It helps assess the user experience such as response time, error rates and availability.
A well established SLIs the team gains insights into the overall health of the system and use then define SLOs.

- SLOs are targets set for key performance indicators(KPIs) which measure the reliability and performance of a service. They are set based on user expectations and also business requirements, by monitoring and measuring the actual performance against SLOs there is ease in identification of issues and drive continous improvement. In short SLOs sets a limit for how much unreliability the customer will tolerate for that SLI.

**Error Budgeting**

- This is basically the acceptable level of unreliability or downtime of a system. The SRE team establishes a measure to determine when to prioritize stability or new feature development. We can say that error budget is the room you have before your SLO is breached

- Error budget helps in decisons about prioritization, take an example services with lots of remaining error budget can accelerate development. When the error budget depletes, the team knows it's time to focus on reliability. This allows operations to influence development in a way that reflects customer needs.

**Incident Management**

- By responding to incidents faster there is a reduction in customer impact. To achieve this there are components that need to be in place this includes:
  - _Runbooks_: These are documents that guide responders through a particular task. They include things to check for, steps to take for each possibility which are always straightforward to reduce toil. Automating it is also a plus.
  -  _On-call systems and Alerting_:  This determines the people available to respond to incidents as needed.
  - _Incident classification_: sorts incidents into categories based on severity and area affected this allows you to triage incidents and alert the right people.
  - _Incident retrospectives_: Learn a lot from each incident and review the documentations to determine follow-up tasks or revise runbooks.


## Team Structure and Roles

### **Team Structure**

- SRE teams consist of software engineers with a focus on reliability engineering. They work closely with development and operations teams to balance reliability and feature development. SREs often have expertise in coding, systems, and operations.

- DevOps encourages cross-functional teams that include developers, operations engineers, and sometimes QA engineers. This fosters collaboration and shared responsibilities, blurring the lines between traditional roles.

### **Roles**
_DevOps Engineer_
- Connecting micro services and tools to smooth the development cycle.
- Sharing operation needs with development
- Introducing new tools and processes.
- Assessing risk to deployment targets.
- Aligning teams on development goals

_Site Reliability Engineer_
- Developing, configuring, and deploying software to be used by operations teams
- Handling support escalation issues
- Conducting and reporting on incident reviews
- Developing system documentation
- Change management
- Determining and validating new features and updates


## Tools
**SRE Tools**

- In the SRE role, the most widely used tools are Prometheus and Grafana for collecting and visualizing the different metrics (CPU usage, memory, disk space, etc.), incident alert tools (OP5, PageDuty, xMatters, etc.), Ansible, Puppet, or Chef, Kubernetes and Docker for container orchestration, cloud platform AWS, GCP, Azure, JIRA, SVN, GitHub.


**DevOps Tools**

- In the DevOps role, the most widely used tools are – Integrated Development Environment (IDEs) for development purposes, Jenkins for Continuous Integration and Development, JIRA for change management, Splunk for log monitoring, SVN, GitHub.



## How SRE connects to DevOps

- An organization can implement both DevOps and SRE and this can be achieved by considering SRE as a way of achieving DevOps goals. 

### SRE as an implementation of DevOps
Here are some of the practical approaches that SRE uses to solve DevOps goals:

**Remove Silos**

- DevOps works to ensure that different departments/software teams are not isolated from each other, ensuring they all work towards a common goal.

- SRE achieves this by creating documentation that the entire organization can use and learn from. Lessons from incidents are fed back into development practices through incident retrospectives. 

**Implementing Change gradually**

- DevOps embraces slow, gradual change to enable constant improvements. SRE supports this by allowing teams to perform small, frequent updates that reduce the impact of changes on application availability and stability.

- SRE teams use CI/CD tools to perform change management and continuous testing to ensure the successful deployment of code alterations.


**Accepting failure as normal**

- While DevOps aims to handle runtime errors and allow teams to learn from them, SRE enforces error management through Service Level Commitments (SLx) to ensure all failures are handled.

-  SRE strategically uses error budgets,  accelerate development while maintaining reliability.

**Leveraging tools & automation**

- Both DevOps and SRE use automation to improve workflows and service delivery. SRE enables teams to use the same tools and services through flexible application programming interfaces (APIs). While DevOps promotes the adoption of automation tools, SRE ensures every team member can access the updated automation tools and technologies.

- Whenever you automate or simplify a process, you reduce toil and increase consistency. You also accelerate the process, achieving DevOps goals.

**Metric-based decisions**

- SRE practices encourage monitoring everything and then constructing deep metrics. These will give you the insights you need to make smart decisions.

- DevOps gathers metrics through a feedback loop. On the other hand, SRE enforces measurement by providing SLIs, SLOs, and SLAs to perform measurements. Since Ops are software-defined, SRE monitors toil and reliability, ensuring consistent service delivery.

## Conclusion

- SRE and DevOps are two sides of the same coin, with SRE tooling and techniques complementing DevOps philosophies and practices. SRE involves the application of software engineering principles to automate and enhance ITOps functions while DevOps model enables the rapid delivery of software products through collaboration between development and operations teams.

- The goal of both the methodologies is to enhance the end-to end cycle of an IT ecosystem—the application lifecycle through DevOps and operations lifecycle management through SRE.