La figura professionale del SRE (Site reliability engineer) è stata creata per superare inconvenienti e limitazioni insiti nel classico modello di amministrazione dei servizi IT, dove il permanere di processi manuali e la contrapposizione di obiettivi, all’interno dei team sviluppo e operation, generano costi crescenti e rallentano la gestione del ciclo di vita del software
L'era della trasformazione digitale acuisce, rispetto al passato, la criticità di ambiti come lo sviluppo software, e le funzioni aziendali preposte alla gestione del ciclo di vita del software stesso, specie quando le dimensioni dei servizi IT devono scalare verso l’alto, con conseguenti dilatazioni dei costi di amministrazione. Nasce per questo la figura del site reliability engineer.
In ingegneria del sofware, l’obiettivo principale delle organizzazioni è focalizzarsi sulla progettazione e costruzione di sistemi software: tuttavia, su un altro versante, è ugualmente importante padroneggiare quelle competenze, che, invece, si concentrano sulla gestione dell’intero ciclo di vita degli oggetti software. Tradizionalmente dominio delle IT operation, oggi, queste mansioni afferiscono quindi al site reliability engineer. La disciplina viene denominata site reliability engineering (SRE), è una materia che comprende un vasto insieme di conoscenze e competenze, e ha il compito di monitorare e amministrare i sistemi software dall’inizio del progetto, alla fase di deployment e messa in produzione, a quella di aggiustamento e armonizzazione, fino alla dismissione dei sistemi stessi.
Amministrare l’intero ciclo di vita del software
I concetti fondamentali che abbiamo appena sintetizzato vengono espressi nella prefazione del libro Site Reliability Engineering – How Google Runs Production Systems, in cui i membri del team SRE spiegano in che modo il loro coinvolgimento e impegno nella gestione dell’intero ciclo di vita del software abbia permesso a Google di costruire, implementare, monitorare e manutenere alcuni dei più grandi sistemi software al mondo.
In effetti, il termine site reliability engineer è stato coniato proprio da Google, attorno al 2003, e, in particolare, da Ben Treynor Sloss, attualmente VP Engineering del colosso di Mountain View, che a quell’epoca la società aveva assunto con l’incarico di dirigere un team di ingegneri software per gestire un ambiente di produzione.
Site reliability engineer, chi è e che ruolo ricopre
Il site reliability engineer è un ingegnere che possiede competenze sia nell’ingegneria e nello sviluppo del software, sia nelle aree disciplinari che sono, tipicamente, appannaggio delle IT operation. In effetti, talvolta, il site reliability engineer deve progettare e sviluppare i sistemi di elaborazione e può dover scrivere codice per tali sistemi in collaborazione con i team di sviluppo prodotto; altre volte, invece, deve dedicarsi alla creazione di componenti aggiuntivi richiesti dai sistemi IT, ad esempio per eseguire le operazioni di back-up e load balancing.
Altro aspetto chiave su cui si focalizzano i team SRE è l’affidabilità del sistema, che si può considerare la più importante caratteristica per poterne garantire l’utilizzo. Dunque, compito dei site reliability engineer è anche trovare i modi per migliorare la progettazione e la gestione dei sistemi IT, e per renderli più scalabili, affidabili ed efficienti.
I SRE si concentrano anche sulla gestione di molteplici servizi, che operano su sistemi di elaborazione distribuiti e sono utilizzati da grandi volumi di utenti: nel caso di Google, ad esempio, la parola “site”, nell’espressione site reliability engineer, si riferiva originariamente al compito, del SRE, di mantenere funzionante il sito dell’omonimo motore di ricerca; tuttavia, attualmente, i team SRE, oltre al search engine, devono mantenere attivi molti più servizi: dall’infrastruttura interna, ai servizi dedicati agli sviluppatori esterni, come la Google Cloud Platform (GCP).
