SRE: l’approccio alle operazioni IT tra automazione e standardizzazione
Introdotto per la prima volta da Ben Treynor Sloss in Google agli inizi degli anni 2000, quello SRE è un approccio alle operazioni IT basato sull’ingegneria del software che garantisce affidabilità, scalabilità e miglioramento continuo dei prodotti web e che negli ultimi anni ha trovato sempre più applicazione.
Attraverso la standardizzazione e l’automazione, gli SRE Engineer puntano a ottimizzare e automatizzare le attività operative trovando il giusto equilibrio tra il rilascio di nuove funzionalità e la garanzia, agli utenti, di affidabilità del prodotto software.
Il Site Reliability Engineering, o ingegneria dell’affidabilità del sito, è dunque una pratica che sfrutta strumenti software per automatizzare attività quali la gestione del sistema e il monitoraggio delle applicazioni affidando agli ingegneri IT tutte quelle attività tradizionalmente eseguite dai team di Operations.
SRE: cos’è il Site Reliability Engineering?
Il concetto di SRE, Site Reliability Engineering o ingegneria dell’affidabilità del software, è stato introdotto per la prima volta attorno al 2003 da Ben Treynor Sloss, attuale VP Engineering di Google allora a capo del team di ingegneri IT.
In un momento in cui l’azienda stava affrontando serie difficoltà nella gestione di sistemi sempre più complessi e combattendo contro la frequenza delle interruzioni, Sloss ha colto la necessità di rendere ogni fase del ciclo di vita dello sviluppo del software più affidabile, fluida e sicura.
Secondo Treynor Sloss, SRE può essere definito come “quel che accade quando chiedi ad un ingegnere del software di progettare la funzione delle Operations”.
Insomma, il Site Reliability Engineering rende il team SRE responsabile del lavoro originariamente svolto manualmente dal team di Operations, traendo il meglio dal mindset e dalle competenze tipiche dell’ingegneria del software a partire dall’automazione e dalla standardizzazione per gestire sistemi di produzione e risolvere errori.
Naturalmente, questo approccio si adatta alla creazione e gestione di qualsiasi sistema software, dai siti web alle applicazioni mobile. I principi, le pratiche e i costrutti organizzativi del SRE rendono infatti possibile creare sistemi software caratterizzati da alta scalabilità e affidabilità mediante l’applicazione di pratiche di software engineering a problemi di infrastrutture e operazioni.
Il Site Reliability Engineering è naturalmente particolarmente prezioso quando si tratta di gestire sistemi complessi o tutte quelle applicazioni software che, a fronte di frequenti aggiornamenti da parte dei team di sviluppo, necessitano di rimanere affidabili per gli utenti senza generare interruzioni del servizio.
I principi chiave SRE di Google
Con l’obiettivo di diffondere l’approccio SRE, Google ha reso disponibile online un libro dedicato al tema per offrire un’analisi approfondita delle best practice.
Secondo quanto riportato, il Site Reliability Engineering si basa su una serie di principi chiave a comprendere:
- Il monitoraggio: i rischi e gli errori sono intesi dai team SRE come inevitabili al processo di implementazione del software. La soluzione consiste nell’adottare una gestione “neutrale” del rischio accettandone la possibilità e definendo il budget per gli errori in modo tale da ridurre al minimo l’impatto sugli utenti e sul sistema nel suo complesso. In questo senso, il monitoraggio costante delle prestazioni del sistema e dell’attività degli utenti aiutano anche a identificare potenziali problemi e indagare sulle cause degli incidenti;
- L’implementazione graduale delle modifiche: i rilasci di modifiche piccole ma frequenti vengono incoraggiati per mantenere salda l’affidabilità del sistema. Insomma, la progettazione delle releases viene definita con l’obiettivo di non mettere a rischio l’operatività della piattaforma o del sistema;
- L’automazione: valido per tutte quelle attività di routine o che non portano valore. È il caso, ad esempio, dei test di compilazione, che, automatizzati, permettono agli SRE di concentrarsi su progetti più rilevanti riducendo al contempo la probabilità di errori umani.
Reliability
Finora abbiamo parlato di reliability traducendola come “affidabilità”, ma che cos’è nel concreto la reliability di un prodotto software?
Il termine reliability si riferisce all’affidabilità, alla sicurezza e all’attendibilità di una soluzione software e si usa in tutti quei casi in cui l’applicativo opera in maniera corretta e coerente con quanto previsto.
Obiettivo dell’SRE, la Site Reliability è perciò la stabilità e la qualità del servizio offerto dall’applicazione agli utenti finali. È evidente che quando questa è scarsa, magari con arresti anomali o lunghi tempi di risposta dell’applicazione, altrettanto scarsa sarà l’esperienza utente. Una soluzione software non affidabile, d’altronde, aumenta le probabilità che gli utenti si rivolgano a soluzioni software più affidabili, capaci di garantirgli le performance che si aspettano.
SRE: i concetti chiave
Parlando di Site Reliability Engineering è fondamentale prendere familiarità con una serie di concetti chiave, generalmente espressi in forma di acronimo:
- SLI o Service Level Indicators: gli indicatori del livello di servizio, metriche che permettono di misurare le performance dell’applicazione e gli aspetti specifici del livello di servizio fornito. Tra questi indicatori rientrano KPI quali i tempi di latenza e il tasso di errore;
- SLO o Service Level Objectives: gli obiettivi di livello di servizio, traguardi specifici e quantificabili raggiungibili per ciascun SLI. Lo SLO per il livello richiesto di affidabilità dei sistemi è basato sul livello di downtime, noto anche come budget di errore, considerato accettabile ad indicare la soglia massima consentita per gli errori e i tempi di fermo;
- SLA o Service Level Agreement: accordo sui livelli di servizio ad includere aspetti legali che entrano in gioco se il sistema non raggiunge i suoi SLO. Gli accordi sui livelli di servizio (SLA) sono infatti documenti legali che indicano le conseguenze del mancano rispetto di uno o più SLO come, ad esempio, la risoluzione entro 24 ore del problema rilevato dal cliente.
I vantaggi del Site Reliability Engineering
Implementare il SRE porta con sé numerosi benefici.
Tra questi rientra, naturalmente, la maggior affidabilità dei sistemi software. Concentrandosi sul miglioramento delle performance del software, SRE rende possibile ridurre il numero di interruzioni e disservizi e mantenere una buona esperienza complessiva degli utenti.
Inoltre, aumentando l’affidabilità aumenta l’efficienza. Attraverso l’automazione e il monitoraggio, SRE permette ai team di individuare i problemi e risolverli per tempo, adottando un approccio proattivo all’individuazione e risoluzione di bug e vulnerabilità. Ciò è particolarmente utile alle organizzazioni, sia per risparmiare tempo e denaro, sia per mantenere alta la possibilità per il team di introdurre rapidamente nuovi prodotti e funzionalità e garantire così una costante evoluzione del prodotto.
Infine, è utile sottolineare che il SRE migliora nettamente la collaborazione tra team di sviluppo e team operativi. Se da un lato i primi hanno il bisogno di apportare rapide modifiche all’applicazione e rilasciare nuove funzionalità o correggere bug critici, i secondi hanno bisogno invece di garantire un’erogazione del servizio senza interruzioni. Proprio grazie all’approccio SRE, il team operativo può monitorare ogni aggiornamento e rispondere così per tempo a eventuali problemi emersi a seguito di modifiche.
SRE vs DevOps
Il Site Reliability Engineering, d’altro canto, non è l’unico approccio che punta a favorire la collaborazione efficace tra Operations and Development: parliamo, naturalmente, dell’approccio DevOps.
Nonostante le due pratiche si siano sviluppate in modo del tutto indipendente, è chiaro che entrambe abbiano colto la necessità di colmare il divario esistente tra questi due team con l’obiettivo ultimo di migliorare il ciclo di vita e la qualità del prodotto software.
Infatti, entrambi gli approcci garantiscono notevoli vantaggi: da cicli di sviluppo più rapidi passando per una maggior affidabilità dei servizi fino alla riduzione dei tempi di sviluppo. Ciò che è importante sottolineare, ad ogni modo, è che mentre la metodologia DevOps punta all’efficienza della pipeline di sviluppo, l’approccio SRE si concentra principalmente sulla possibilità di bilanciare la disponibilità del sito con la creazione delle nuove funzioni.
Conclusioni
Come abbiamo visto, l’approccio SRE o Site Reliability Engineering è nato con l’obiettivo ultimo di rendereogni fase del ciclo di vita dello sviluppo del software più affidabile, fluida e sicura. Per far ciò, affida le attività generalmente relegate ai team Operations ai software engineer, lasciando che questi introducano un mindset e delle competenze tipiche dell’ingegneria del software a partire dalla standardizzazione e automazione.
I vantaggi per le organizzazioni sono notevoli ed è certo che il tema dell’affidabilità sia destinato a rimanere, cambiando potenzialmente per il meglio lo sviluppo del software in futuro.
Cerchi la miglior soluzione software per il tuo business? Ci pensa Beliven, la software house specializzata nella realizzazione di soluzioni custom per rispondere alle esigenze delle aziende. Contattaci!