Safeguarding quality attributes with Site Reliability Engineering (SRE)
After learning why quality attributes matter in software, it’s time to talk about how Site Reliability Engineering (SRE) safeguards those quality attributes. In this post, we'll learn how adopting an SRE culture ensures continuous software quality, guaranteeing reliability, scalability, and performance.
In our previous post, we emphasised the role of quality attributes in software systems. Now, let’s delve into why achieving optimal quality attributes is not a one-and-done task, but an ongoing endeavour. And this is precisely where Site Reliability Engineering (SRE) becomes indispensable.
Understanding Site Reliability Engineering (SRE)
First things first. Site reliability engineering (SRE) is a practice that blends software engineering with DevOps practices to monitor the quality attributes requirements of complex software systems (aka observability). But let’s break this down.
Think of SRE as the maintenance crew of a busy amusement park. The crew consists of skilled engineers (software and DevOps experts) who use special tools (practices and technologies) to keep an eye on all the rides, attractions, and facilities (complex software systems). They focus on making sure everything runs smoothly, fixing any issues promptly, and observing how the different parts work together to ensure a fantastic and reliable experience for the visitors (your users and stakeholders).
The strategic and cultural role of SRE
So in fact, SRE is a discipline that combines software development with DevOps practices to guarantee the reliability, scalability, and performance of complex software systems.
SRE is your key to safeguarding and observing the quality attributes of your solution. But it’s not just a plug-and-play addition to your organisation. It’s a mindset deeply embedded and cultivated in your teams. SRE requires a proactive approach, embracing automation, observability, monitoring, alerting and incident management.
SRE requires a proactive approach. It’s a mindset deeply embedded and cultivated in your teams.
Observability
An integral part of SRE is the emphasis on observability and monitoring. The ins and outs of your software system have to be closely monitored and all relevant tools have to be in place to address any issue promptly.
For example, let’s consider a scenario where a popular e-commerce website experiences a sudden increase in user traffic. With effective observability tools like Real User Monitoring and Application Performance Monitoring, the SRE team can quickly identify performance bottlenecks, enabling them to scale resources in real time to meet the increased demand.
In practice, this involves integrating Log Analytics, Real User Monitoring, Application Performance Monitoring, Tracing/Telemetry, and Infrastructure Monitoring – providing essential insights into your intricate software system. But discussing those in detail would lead us too far here.
Monitoring
Beyond the use of tools, monitoring the status and health of your solution is crucial. A robust SRE dashboard allows you to oversee the entire system, providing an early indication of any degradation. The dashboard highlights the four golden signals (Latency, traffic, errors & saturation) based on pre-defined parameters for quality attributes. The moment a threshold is breached, alarms sound, and notifications are dispatched. These thresholds also serve as triggers for self-healing playbooks, such as scaling out a service during periods of increased user load.
A robust SRE dashboard allows you to oversee the entire system, providing an early indication of any degradation.
SRE & quality attributes for better products
In essence, SRE acts as a guardian of software quality, ensuring that your product’s standards are consistently upheld. But don’t mistake it for a tool. Look at it as a mindset, a practice. Its proactive approach to observing, monitoring and alerting enables organisations to deliver exceptional software experiences, mitigating risks and ensuring continuity.
SREs are not just software developers or DevOps practitioners; they are the orchestrators of software excellence. They ensure that quality attributes align seamlessly to create a force that drives business success and delights users and stakeholders.
At In The Pocket, we take pride in growing and fostering the SRE culture and principles in our teams and our way of working. This allows our teams to have the quality attributes measurable and actionable throughout the whole project lifecycle.