Piccole specializzazioni software crescono. La Site Reliability Engineering interessa sempre di più alle aziende: perché e di cosa si tratta esattamente?
Autore: Valerio Mariani
Si chiama Site Reliability Engineering e promette di crescere in popolarità. Siamo nell’ambito della creazione e della gestione delle applicazioni, tema molto caldo, ormai da tempo. Il lento ma costante abbandono dei contesti legacy, la virata verso il SaaS e l’approccio al cloud hanno richiesto una rivoluzione obbligata agli sviluppatori. Si sono fatti largo il DevOps, il pensiero Agile, proprio per accelerare sviluppo e gestione applicativa dei servizi cloud native.
Gli sviluppatori, così, ripensano il loro ruolo nel nuovo contesto e crescono specializzazioni impensabili anche solo qualche anno fa. In verità, il Site Reliability Engineering nasce circa 20 anni fa in Google, e il colosso di Mountain View ci credette tanto fino a investire in mille specialisti già nel 2016. Google ha fatto scuola e, oggi, aziende come Airbnb, Dropbox, IBM, LinkedIn, Netflix e Wikimedia, adottano il paradigma SRE. Secondo un report del DevOps Institute del 2021, il 22% delle aziende nel mondo ha adottato il modello. Nato nel contesto dei siti e dei web service, c’è voluto poco perché si espandesse a qualsiasi infrastruttura IT, se non altro perché ora le applicazioni sfruttano servizi e protocolli di rete.
“Gli SRE stanno assumendo un ruolo più strategico, poiché le organizzazioni hanno una crescente necessità di garantire ai team le risposte e l’automazione intelligente necessarie per accelerare la trasformazione digitale”. Inizia così il commento al rapporto sull’SRE di Dynatrace, specializzata nelle soluzioni di software intelligence che semplifichino la complessità del cloud.
I risultati dello State of SRE Report: 2022 Edition confermano la tendenza. L’88% dei site reliability engineer afferma che ora c'è una maggiore comprensione dell'importanza strategica del loro ruolo rispetto a tre anni fa. Inoltre, il 71% delle aziende sta aumentando l’uso dell'automazione per ridurre il lavoro per gli sviluppatori e gli SRE. L’obiettivo è chiaro: semplificare la complessità degli ambienti cloud, sempre più ibridi e multicloud. Insomma, sempre più difficili da gestire.
La definizione formale di Site Reliability Engineering è di un modello, relativo alle operazioni IT, applicabile dai team di sviluppo nella gestione dei sistemi e nell'automazione delle operazioni. Con questo metodo, si trasferiscono ai progettisti del software o ai team DevOps le attività eseguite tradizionalmente, e spesso manualmente, dagli operativi. Gli specialisti di SRE hanno il compito di automatizzare il più possibile i processi applicativi, in modo da alleggerire il carico delle operazioni manuali, e per questo sfruttano delle piattaforme apposite.
L’ascesa dell’interesse per il SRE dimostra la validità del modello nella creazione di sistemi software altamente scalabili e affidabili. Con le piattaforme adeguate è possibile agire direttamente sul codice e gestire sistemi di grandi dimensioni e centinaia o migliaia di macchine riducendo il time to market.
La standardizzazione e l'automazione sono due componenti essenziali del modello SRE che, oltre a sgravare i team da un lavoro lento, noioso e complesso, migliora fin da subito l'affidabilità di un sistema e, successivamente, garantisce aggiornamenti veloci ed efficaci.
Di fronte alla complessità di gestione di piattaforme e servizi cloud native, dovuta all’eterogeneità delle piattaforme stesse, è necessario perseguire la semplicità. La gestione di un ambiente composto da cloud privato e pubblico non può risolversi con l’approccio puntuale tradizionale: uno specialista per ogni ambiente e per ogni applicazione. I partner IT e i cloud service provider avrebbero enormi difficoltà a trovare competenze sempre diverse e, inoltre, un’attività di gestione singola per ogni piattaforma rappresenterebbe un grande spreco di tempo.
Così, meglio puntare a un modello standard, snello e basato su un’unica piattaforma di gestione delle applicazioni in ambienti distribuiti.
Chi appartiene a un team SRE deve avere competenze di sviluppo ma, soprattutto, deve essere capace di gestire un processo. I team SRE sono responsabili della distribuzione, della configurazione e del monitoraggio del codice, nonché delle operazioni legate a: disponibilità, latenza, gestione delle modifiche, risposta alle emergenze e gestione della capacità dei servizi in produzione.
Già, perché la questione della sicurezza del codice sta diventando una priorità. Quasi il 70% degli SRE intervistati da Dynatrace prevede di avere un ruolo sempre più importante rispetto alla sicurezza. E il pensiero va subito all’utilizzo di librerie di terze parti, magari open source, che rischiano di provocare danni irreparabili, come nel caso Log4j.
Le aziende, d’altra parte, utilizzano principalmente l’automazione nei processi SRE per risolvere le vulnerabilità della sicurezza e gli errori delle applicazioni, aumentare la velocità di rilascio di applicazioni e servizi e prevedere le violazioni agli SLO (obiettivi del livello di servizio) prima che si verifichino.