SRE team

Nato in Google agli inizi degli anni 2000, SRE è un approccio sempre più adottato per garantire affidabilità e miglioramento continuo ai prodotti web. Capiamo insieme di cosa si tratta, quali sono i suoi pilastri e i benefici per le aziende.

Cos'è SRE (Site Reliability Engineering)?

SRE è uno degli acronimi più "caldi" nel mondo dello sviluppo.

Lo scopo dell’approccio SRE è quello di aumentare l'affidabilità dei sistemi: è un insieme di principi, pratiche e costrutti organizzativi che permette sia di far funzionare l'esistente sia di innovarlo. Questo secondo aspetto è fondamentale, perché uno degli obiettivi di SRE non è solo di mantenere le promesse fatte circa la gestione dei sistemi, ma anche di farlo mentre i servizi vengono costantemente migliorati in maniera incrementale con nuove funzionalità.

Partiamo subito con un’importante specifica: la parola “Site” presente nella definizione non deve indurci a pensare che questo approccio sia applicabile solo alla creazione e gestione di siti. Gli stessi principi sono infatti adatti a migliorare le performance di qualsiasi sistema software (siti, applicazioni web o mobile, ecc).

Dai un’occhiata a questo video realizzato dal nostro Lead Developer, Marcello Testi, per avere un’overview completa su Site Reliability Engineering:

SRE e Google: dalla nascita ad oggi

Le pratiche SRE nascono e si sviluppano all'interno di Google, a partire dal 2003 circa. Più di recente Google ha deciso di rendere pubblico l'approccio che ha permesso all'azienda di realizzare, monitorare, migliorare e manutenere alcuni tra i servizi online più utilizzati al mondo.

Per comprendere la filosofia SRE ancora prima che gli aspetti più pratici, possiamo citare Benjamin Treynor Sloss, colui che ha coniato il termine SRE e che oggi è vicepresidente engineering di Google.

“SRE è quel che succede quando si chiede a un software engineer di progettare la funzione delle Operations”, ha detto il manager in un’intervista.

Il team o il responsabile SRE svolge quindi un lavoro che è stato storicamente svolto dal team di Operations, ma lo fa aggiungendo il mindset e le competenze dell’ingegneria del software: punto cardine è la capacità (tipicamente ingegneristica) di sostituire il lavoro umano con l'automazione.

 

Conosci già le potenzialità della Site Reliability Engineering?  Scarica la guida e dai una marcia in più alle tue applicazioni!

 

SRE e DevOps: approcci simili, ma non uguali

Arrivati a questo punto non possiamo esimerci dal citare un altro approccio che favorisce la collaborazione tra team Operations e team sviluppo: parliamo, ovviamente, di DevOps. C'è un’innegabile vicinanza tra SRE e DevOps, nonostante le due pratiche si siano sviluppate in maniera indipendente. Entrambe mirano a colmare il divario tra i due team, con l'obiettivo di migliorare il ciclo di rilascio e la qualità del prodotto.

Pur avendo obiettivi simili, i due approcci non si escludono a vicenda: possiamo anzi vedere SRE come una concretizzazione dell’approccio DevOps. SRE abbraccia la filosofia DevOps, ma concentra la sua attenzione sullo sviluppo e il consolidamento di pratiche per misurare e raggiungere l'affidabilità. 

In altre parole, SRE pone delle regole operative per avere successo nelle varie aree DevOps. Se DevOps di focalizza sul “Cosa”, SRE è decisamente sbilanciata verso il “Come”.

Di cosa si occupa un team o un ingegnere SRE?

Il responsabile SRE (o il team SRE) ha in carico una serie molto ampia di funzioni, tra cui la disponibilità dei sistemi, la latenza, la performance, l'efficienza, il monitoraggio, la gestione del cambiamento, la risposta d'emergenza e la pianificazione della capacità. 

Per capire quanto sia cruciale questa figura in alcuni progetti, basta leggere la prima frase del profilo LinkedIn di Benjamin Treynor Sloss: “Se Google smette di funzionare, è colpa mia". Ironica, ma non senza un fondo di verità.

L’importanza del ruolo SRE non sta tanto nelle attività e nelle competenze (che non sono uniche, e potrebbero essere prese in carico anche dagli altri team) quanto nel modus operandi adottato. Il team SRE lavora con i dati, che impara a raccogliere, a leggere e a valorizzare, e con l'automazione dei processi, che permette di aumentare il controllo e normalizzare il codice. Questo approccio consente di ridurre il sovraccarico di attività ripetitive (il cosiddetto “toil”) e gli errori.

L’Error Budget: cos’è e perché è importante

Il team SRE è anche incaricato di calcolare e gestire l'error budget. Si tratta di un concetto strategico fondamentale, che potremmo definire come lo strumento utilizzato da SRE per bilanciare l'affidabilità del servizio con l'innovazione

Il presupposto di questo approccio è che i sistemi siano oggetti dinamici che si sviluppano e cambiano nel tempo, evolvendosi positivamente ma portando anche un risvolto negativo: le modifiche sono una delle principali fonti di instabilità. L’error budget costituisce un meccanismo di controllo per spostare l'attenzione dall’innovazione alla stabilità quando necessario. 

Il team SRE definisce un error budget sulla base di una serie di metriche (le vedremo tra un attimo) e un intervallo di tempo in cui misurarlo. Se gli incidenti aumentano in maniera rilevante rispetto all'error budget a disposizione, la priorità del team SRE diventa immediatamente quella di aiutare a risolvere i problemi facendo convergere e collaborare i team di Operations e sviluppo.

Grazie all'error budget, dunque, è possibile progettare e programmare il cambiamento senza sacrificare eccessivamente la disponibilità.

I livelli di servizio: SLI, SLO e SLA

Al fine di allineare tutte le parti in causa sugli obiettivi di affidabilità e disponibilità del servizio, SRE introduce 3 concetti chiave: SLI, SLO e SLA.

  • SLI, Service Level Indicators (o indicatori del livello di servizio). Si tratta delle metriche con cui si misurano le performance o in generale il comportamento dell’applicazione. In altre parole, potremmo definirli i KPI da prendere in considerazione. Spesso si tratta di KPI particolarmente rilevanti per gli utenti, come il tempo di risposta o il tasso di errore.
  • SLO, Service Level Objectives (o obiettivi di livello di servizio). Sono gli obiettivi da raggiungere per ciascuna metrica, cioè per ogni SLI. Gli obiettivi prefissati devono bilanciare sapientemente la qualità, da valutare in base alle necessità del business, e i costi per ottenerla.
  • SLA, Service Level Agreement (o accordo sui livelli di servizio). Include gli aspetti legali che entrano in gioco se il sistema non raggiunge i suoi SLO. 

È da notare che uno degli elementi di fondo della filosofia delle SRE è che comunque gli errori siano previsti e accettati da tutti gli attori coinvolti. SLI, SLO e SLA servono a porsi un obiettivo e a renderlo raggiungibile: non evitando del tutto gli errori, ma analizzandoli a posteriori per migliorare l’intero processo (e senza mai puntare il dito). 

PER APPROFONDIRE: 6 best practice SRE da conoscere

Site Reliability Engineering: i vantaggi

Investire il proprio tempo nello sviluppo di pratiche SRE porta a una serie di vantaggi facilmente intuibili:

  • Maggiore qualità
  • Evoluzione costante del prodotto
  • Riduzione degli errori e dei malfunzionamenti

Proviamo a declinare più nel dettaglio questi vantaggi e a capire quali sono le conseguenze positive per il business e per i team di lavoro.

Controllo costante sul progetto

La complessità di alcuni progetti è tale da richiedere una visione dall’alto, chiara e focalizzata sugli aspetti davvero rilevanti. È proprio ciò che accade grazie al sistema di monitoring avanzato che SRE richiede di implementare: le metriche selezionate permettono di misurare i parametri chiave senza perdere mai di vista il progetto nella sua interezza.

Ciò che si ottiene è una visione sintetica e puntuale di quello che succede durante tutto il progetto, con informazioni preziose anche per altre aree aziendali. Pensiamo al marketing, alle vendite, al supporto, ma anche ai principali stakeholder aziendali che richiedono di essere allineati sullo status dei lavori e sulle performance.

Risoluzione tempestiva degli errori

Le pratiche SRE hanno il grande vantaggio di favorire la proattiva individuazione e risoluzione di bug e vulnerabilità del software. In assenza di un sistema di monitoring e automazione come quello favorito da SRE, capita spesso che gli errori entrino in produzione causando ritardi, malfunzionamenti e periodi di inattività dei servizi. 

Le conseguenze per il business e per il fatturato possono essere molto pesanti; ecco perché è così importante la selezione dei KPI più rilevanti e il setting di un obiettivo raggiungibile e ponderato per ciascuno SLI.

Chiarire e soddisfare le aspettative dei clienti

Un altro grande vantaggio dell’uso di SLA, SLO e SLI è la possibilità di mettere a fuoco fin da subito le aspettative dell’utente finale e di elaborare un piano per riuscire a soddisfarle

Avere degli obiettivi e delle soglie di servizio chiaramente definiti permette di giudicare costantemente lo stato dei lavori e di allineare proattivamente le azioni da intraprendere rispetto ai KPI predefiniti. Il tutto tenendo a mente l’utente finale e le sue aspettative (con tutti i vantaggi che questo comporta in termini di servizi digitali offerti, e quindi di fatturato generato).

Maggiore focus sulla creazione di valore

Un sistema più efficiente, con meno problemi e dove le attività ripetitive sono automatizzate, è un sistema che lascia più tempo libero ai team che ci lavorano. E quel tempo va investito in maniera produttiva, ad esempio creando nuove funzionalità o migliorando quelle esistenti. Il team Operations, invece, ha la possibilità di lavorare di più al miglioramento della configurazione e alla creazione di test in grado di identificare eventuali difetti del sistema. 

La maggiore disponibilità di tempo e il minore stress dovuto a errori e ritardi porta anche a una maggiore collaborazione tra i team, insieme alla capacità di discutere in maniera più responsabile e creativa le priorità e gli obiettivi. 

Miglioramento culturale continuo

Esiste un ultimo e importantissimo vantaggio di SRE: la creazione di una cultura della collaborazione tra le persone e tra i team, dove le decisioni vengono prese avendo ben presente non solo il proprio lavoro, ma soprattutto le conseguenze per l’utente e per i colleghi.

SRE favorisce una mentalità aperta e di maggior fiducia tra i team, che si concretizza da un lato in un miglior clima aziendale, dall’altro nella produzione di un output di elevata qualità.

guida SRE