Il site reliability engineer riveste un ruolo unico che richiede un'esperienza come amministratore di sistemi, ovvero uno sviluppatore software con ulteriori competenze operative, oppure un membro del team operativo IT che possiede anche capacità di sviluppo software.
I team SRE sono responsabili del deployment, della configurazione e del monitoraggio del codice, oltre che di tutte le operazioni legate a disponibilità, latenza, gestione delle modifiche, risposta alle emergenze e gestione della capacità dei servizi in produzione.
I team SRE determinano il lancio delle nuove funzionalità, applicando accordi sul livello di servizio (SLA, Service-Level Agreement) per stabilire l'affidabilità richiesta di un sistema, che viene misurata tramite indicatori del livello del servizio (SLI, Service-Level Indicator) e obiettivi del livello di servizio (SLO, Service-Level Objective).
Uno SLI misura aspetti specifici del livello di servizio fornito. Gli SLI principali includono i livelli richiesti di latenza, disponibilità, percentuale di errore e produttività dei sistemi. Uno SLO si basa sul valore o sull'intervallo target del livello di servizio specificato, che a sua volta si basa sullo SLI.
Di conseguenza, lo SLO per il livello richiesto di affidabilità dei sistemi è basato sul livello di downtime considerato accettabile. Tale livello di downtime, denominato anche budget di errore, indica la soglia massima consentita per gli errori e i tempi di fermo.
L'approccio SRE non presuppone un'affidabilità del 100%, ma prevede e si aspetta una percentuale di errore.
Dopo aver determinato il budget di errore, gli sviluppatori possono utilizzarlo per il rilascio delle nuove funzioni. Basandosi sullo SLO e sul budget di errore, il team è pertanto in grado di stabilire se un determinato prodotto o servizio può essere lanciato rispettando il budget di errore a disposizione.
Se l'esecuzione di un servizio rispetta il budget di errore, il team di sviluppo può lanciarlo in qualsiasi momento, ma se il sistema presenta troppi errori o si arresta per più tempo di quello previsto dal budget di errore, non è possibile procedere con i nuovi lanci senza prima riportare gli errori entro i limiti del budget.
Per dimostrare l'affidabilità del servizio, il team di sviluppo deve effettuare alcuni test operativi automatizzati.
I site reliability engineer svolgono sia attività operative e che di progetto. Secondo le procedure consigliate SRE di Google, un site reliability engineer può dedicare alle operazioni fino al 50% del proprio tempo, e deve monitorare tale valore per evitare di superarlo.
Il resto del tempo può essere dedicato alle attività di sviluppo, come la creazione di nuove funzioni, l'espansione dei sistemi e l'implementazione dell'automazione.
Le attività operative in eccesso e i servizi con prestazioni non ottimali possono essere reindirizzati al team di sviluppo, evitando al site reliability engineer di dedicare troppo tempo all'operatività di un'applicazione o di un servizio.
L'automazione è una componente importante nel ruolo del site reliability engineer. Se un determinato problema si ripresenta di continuo, è consigliabile automatizzarne la soluzione.
Mantenere l'equilibro tra le attività operative e quelle di sviluppo è un'esigenza essenziale per un responsabile SRE.