Categorie
Tag
Newsletter
Iscriviti alla newsletter di QRP International per ricevere in anteprima news, contenuti utili e inviti ai nostri prossimi eventi.
IscrivitiIl Site Reliability Engineer (SRE) prevede che le attività storicamente svolte in maniera manuale dai team di Operations vengano trattate da ingegneri IT o professionisti in grado di scrivere software, utilizzare l’automazione per gestire sistemi di produzione e risolvere incidenti.
Il concetto di Site Reliability Engineer è stato introdotto intorno al 2003 da Ben Treynor Sloss, professionista che all’epoca era alla guida del team di ingegneri IT Google e che attualmente, sempre in Google, ricopre il ruolo di VP Engineering. Si è poi evoluto fino ai giorni nostri, diventando un vasto compendio di conoscenze che Sloss definisce così: «ciò che ottieni quando tratti le operations come un problema software, e assumi dei Software Engineer per lavorarci». Può sembrare controintuitivo affermare di dover “trattare il software come se fosse software software”, ma l’opportunità è apparsa con l’evolversi delle infrastrutture e le crescenti necessità di produzione. Dai pochi server gestiti a mano di qualche decade fa, alle enormi risorse computazionali messe a disposizioni dai data center del c.d. «cloud».
L’introduzione di questo metodo ha permesso al team di Sloss di garantire che le funzionalità rilasciate fossero sempre affidabili.
In un’intervista rilasciata proprio a Google, Sloss ha parlato del Site Reliability Engineer in questi termini:
SRE sta facendo un lavoro che storicamente è stato fatto da un team operativo, ma utilizzando ingegneri con esperienza software e contando sul fatto che questi ingegneri sono intrinsecamente predisposti, e hanno la capacità di sostituire l’automazione per il lavoro umano. In generale, un team SRE è responsabile per disponibilità, latenza, prestazioni, efficienza, gestione del cambiamento, monitoraggio, rispetto alle emergenze e pianificazione della capacità.
Un team SRE è tendenzialmente composto da ingegneri che hanno competenze in due aree:
Nel ciclo di vita del software, ovvero la filiera di procedure che conduce dall’idea di una funzionalità alla sua messa in opera, vi sono due due attività fondamentali svolte dal team:
I membri del team con competenze in ingegneria e sviluppo software hanno come obiettivo principale quello di focalizzarsi su progettazione e costruzione di sistemi software, ma devono anche raggiungere un adeguato livello di competenza per quanto riguarda l’intero ciclo di vita degli oggetti software, che è tendenzialmente esclusivo dominio delle IT Operations.
La standardizzazione e l’automazione sono due componenti essenziali del modello SRE: ingegneri IT e team Ops lavorano affinché i processi vengano automatizzati, soprattutto se si tratta di lavori manuali e ripetitivi che possono condurre ad errori umani.
Applicando la standardizzazione e l’automazione i team SRE riescono ad ottimizzare l’affidabilità di un sistema migliorandolo. La cultura Site Reliability Engineer (SRE) può aiutare i team che intraprendono il passaggio da approccio tradizionale ad approccio cloud native.
La parola reliability non ha un’esatta corrispondenza nella lingua italiana, ma un’approssimazione di tali concetti potrebbe essere la triade di sostantivi: affidabilità, sicurezza, attendibilità. Tra gli obiettivi di un team SRE infatti c’è anche quello di trovare dei modi per migliorare la progettazione e la gestione di sistemi IT al fine di renderli più «reliable».
La definizione data da Microsoft del SRE Engineer è, invece, la seguente:
SRE è una disciplina di ingegneria informatica dedicata ad assistere le organizzazioni nell’ottenimento in modo sostenibile dei livelli di affidabilità appropriati per sistemi, servizi e prodotti.
La creazione di un’applicazione è prima di tutto un costo per un’organizzazione perché impiega diversi professionisti richiedendone tempo e lavoro, se non funziona per l’organizzazione si rivela uno spreco sia monetario che di credibilità.
Allo stesso tempo, bisogna tenere in considerazione che pochi sistemi hanno davvero necessità di offrire un’affidabilità prossima al 100% ed esistono anche poche situazioni in cui sia realmente possibile e utile ottenere una disponibilità prossima a tale obiettivo
Si parla quindi di affidabilità “appropriata”: risorse e lavoro impiegati nello sviluppo di un’applicazione aumentano man mano che aumenta il grado di affidabilità desiderato. La ricerca di affidabilità non necessaria può comportare ingenti sprechi di tempo e denaro, per questo è fondamentale individuare quale sia il livello di affidabilità appropriata che deve essere ricercato per un’applicazione.
Abbiamo già approfondito il confronto tra i tre framework nel nostro articolo ITIL, SRE, DevOps: quali sono le differenze e quali i punti in comune?, ma è necessario sottolineare che questi tre metodi rappresentano modi diversi di risolvere lo stesso problema e SRE non rappresenta un “passaggio evolutivo” rispetto a DevOps o ITIL, ma solo una metodo diversa per affrontare le sfide. Google stessa definisce la “cultura” SRE come specializzazione particolare di DevOps.
Per approfondire leggi anche: