Menu

Cos'è Site Reliability Engineering (SRE)?

lente di ingrandimento

Site Reliability Engineering (SRE) è una disciplina che consente di creare sistemi software altamente scalabili e affidabili mediante l'applicazione di pratiche di software engineering a problemi di infrastrutture e operazioni. Gli SRE esperti possono creare soluzioni in grado di bilanciare le attività dei team di sviluppo e di quelli operativi. Google ha aperto la strada a questo ruolo. Per approfondimenti, leggi l'e-book di Google "Site Reliability Engineering".

SRE e DevOps

Gli SRE (Site Reliability Engineer) si occupando di sviluppo e operazioni, ma non lavorano necessariamente nell'area DevOps. Il concetto di SRE esiste dal 2003, il che significa che è nato prima di DevOps. Il termine è stato reso popolare da Ben Treynor, che ha creato il Site Reliability Team di Google. Secondo Treynor, un approccio SRE è "ciò che accade quando a un software engineer viene affidato il compito di gestire le operazioni."

Entrambe le discipline, DevOps e SRE, puntano a migliorare il ciclo di release aiutando gli addetti alle attività di sviluppo e alle operazioni a osservare i rispettivi aspetti del processo durante l'intero ciclo di vita dell'applicazione. Inoltre, sono entrambi a favore dell'automazione e del monitoraggio, per ridurre il tempo che passa da quando uno sviluppatore effettua una modifica a quando questa viene implementata in produzione. Gli SRE e DevOps puntano a questo risultato senza compromettere la qualità del codice o del prodotto stesso.

SRE e DevOps pongono due domande diverse ma ugualmente importanti:

DevOps chiede cosa occorre fare.

SRE chiede come fare quella attività.

I compiti quotidiani degli ingegneri SRE

Gli ingegneri SRE misurano gli indicatori del livello di servizio (SLI) e gli obiettivi del livello di servizio (SLO), mentre i team DevOps misurano percentuale di errori e percentuale di successo nel tempo. Gli SRE condividono le responsabilità relative ai seguenti pilastri DevOps per il miglioramento infrastrutturale:

Ridurre i silos organizzativi

Gli SRE non discutono di quanti silos esistono in azienda, ma incoraggiano tutti i soggetti coinvolti ad affrontare il problema. Questo confronto viene gestito utilizzando gli strumenti e le tecniche disponibili in tutta l'azienda, favorendo la distribuzione delle responsabilità tra tutti i dipendenti.

Accettare gli insuccessi come normali

Gli SRE devono assicurarsi che non ci siano troppi errori o guasti. A tale scopo, utilizzano una formula composta da punteggi SLI e SLO. Gli SLI contano gli errori per richiesta, calcolando la latenza della richiesta, il throughput delle richieste al secondo o gli errori per richiesta per tempo. Gli SLO sono derivati da soglia e percentuale e rappresentano il successo degli SLI in un determinato periodo di tempo.

Implementare un cambiamento graduale

Gli ingegneri SRE sono tutti a favore del cambiamento, ma in modo lento e metodico. Poiché le aziende vogliono muoversi più velocemente, richiedono release frequenti, aggiornando continuamente il prodotto. Pertanto, DevOps e SRE devono rispondere rapidamente, mantenendo al tempo stesso un ritmo costante e controllato.

Sfruttare strumenti e automazione

Gli SRE devono automatizzare i processi a condizione che questo offra valore agli sviluppatori e alle operazioni rimuovendo le attività manuali.

Misurare tutto

I team SRE devono essere sicuri che tutto stia andando nella direzione giusta. A questo scopo possono impostare avvisi per i diversi scenari, adottando la revisione del codice peer e/o l'utilizzo di unit test.

Il futuro del Site Reliability Engineering (SRE)

Il Site Reliability Engineering (SRE) e DevOps sono due discipline di tendenza con alcuni punti in comune. I loro obiettivi essenziali sono capire come misurare il successo o il fallimento e come ottenere affidabilità continua in ogni applicazione. L'affidabilità non riguarda solo l'infrastruttura, ma è importante in ogni fase del processo, dalla qualità delle applicazioni alle performance fino alla sicurezza. Gli ingegneri SRE si occupano di ogni singolo processo, dal codice sorgente all'implementazione, per questo svolgono una vera e propria funzione di ponte dallo sviluppo alle operazioni.

Continua a leggere