Serverless computing è una delle espressioni più moderne e innovative del cloud.
Si tratta di un modello in cui non c'è gestione e approvvigionamento dei server. Apparentemente un particolare, che in realtà porta una serie di vantaggi che non si limitano all'ambito puramente tecnico. E dunque risponderemo alla domanda:
perché serverless è un beneficio per il business?
Focus sul prodotto
Il focus sul prodotto è la motivazione che preferisco di più.
Serverless è una soluzione di outsourcing, perché permette di delegare all'esterno tutto ciò che non rientra nel business core dell'organizzazione. Dunque le aziende possono concentrarsi sul prodotto, ossia ciò che è strategico per il successo; il resto non è davvero importante.
Ciò consente anche di avere team più coesi e orientati alla delivery del prodotto.
Business continuity
I servizi serverless offrono un'altissima scalabilità e affidabilità. Senza entrare nei particolari, vuol dire che le applicazioni che costruiamo potenzialmente non vanno mai giù. Che ci siano guasti alla rete, che si rompano dei server, che ci siano un paio o milioni di utenti collegati contemporaneamente, il servizio rimane fruibile.
Immagina di mettere un'offerta imperdibile per il Black Friday. Gli utenti arrivano di corsa sul tuo e-commerce e i server non reggono il traffico. Soldi e reputazione buttati: sarebbe un peccato, no?
Certo, magari la vita fosse così semplice: gli incidenti possono capitare anche nelle applicazioni serverless, non c'è cloud che tenga. Tuttavia il livello di prevenzione che serverless offre è altissimo e non impattiamo affatto sui costi (ne parleremo tra un istante).
Basso time-to-market
I public cloud provider offrono servizi gestiti che funzionano in modalità serverless e che permettono di sviluppare il prodotto molto velocemente. Ad esempio, mi è capitata la necessità di costruire un'applicazione Spark per la trasformazione di grosse moli di dati. Normalmente servirebbero settimane solo per il provisioning del cluster, ossia l'insieme dei server su cui far girare l'applicazione. Ebbene, con una soluzione serverless (nel mio caso AWS Glue), il cluster è stato configurato nel giro di qualche ora. Insomma, il tempo di scrivere lo script (NB: il prodotto, cioè che è importante per il business) ed eravamo già pronti per andare in produzione.
Agilità
Con la diffusione di Internet, passando per la bolla delle dot-com e la nascita della new economy, il mondo del business ha cominciato ad evolvere in modo estremamente veloce. Perciò il mondo IT oggi deve essere in grado di rispondere al cambiamento altrettanto velocemente. Le applicazioni serverless sono di natura debolmente accoppiate, isolano i fallimenti, hanno tempi di deployment molto bassi e fanno leva su servizi gestiti dal provider. Questo porta ad essere estremamente veloci e inclini al cambiamento, accelerando la capacità di portare innovazione.
Siamo negli anni della Digital Transformation e serverless può essere una scelta strategica, in quanto può essere introdotto facilmente in sistemi legacy, consentendo una migrazione al cloud liscia e graduale.
Abbattimento della TCO
Il Total Cost of Ownership è il costo che deriva dal possesso. Che si tratti di hardware o software, il semplice fatto di possedere qualcosa, e quindi di avere delle responsabilità, comporta dei costi: licenze, manutenzione, sicurezza, e così via. Pensateci bene, qual è il vantaggio di gestire l'infrastruttura, installare le patch di sicurezza, configurare i server, aggiornare le dipendenze di sistema, gestire i runtime? Sono costi che bisogna sostenere nei sistemi tradizionali, ma è difficile che ci sia un vantaggio reale dal punto di vista del business.
Con serverless c'è anche la possibilità di abbattere il CapEx, ossia il flusso di cassa impiegato normalmente per l'acquisto di hardware, software, licenze. Solitamente si tratta di grosse spese messe a budget e che comportano uscite di grossi capitali. Come se non bastasse, possono essere necessari acquisti imprevisti, dovute a sostituzioni necessarie o atte a sfruttare opportunità di mercato, e questo probabilmente limita la possibilità di usufruire di sconti da acquisti in stock. Infine, l'hardware acquistato va in contro a deprezzamento e obsolescenza nel giro di pochi anni.
Insomma, è un tema di budgeting e flusso di cassa che oggi sono una preoccupazione di tutte le aziende. Serverless ci permette di concentraci puramente sui costi OpEx, ossia solo quelli necessari all'operatività della baracca.
Efficientamento dei costi
Serverless abilita un modello di prezzi pay-per-use, ossia paghiamo per le risorse che utilizziamo, cioè dobbiamo sostenere solo i costi realmente necessari e nessun costo di overprovisioning. In pratica, se sul tuo e-commerce non ci sono utenti, non hai costi. Se c'è un utente avremo un costo X; se ce ne sono 100, avremo un costo di 100 * X. Questo ci dice due cose. Innanzitutto serverless permette di abbattere i costi fissi e di considerare solo costi variabili. La seconda è che la scalabilità dei costi offerta da serverless è lineare rispetto all'incremento di lavoro richiesto, che in termini economici vuol dire che il costo marginale unitario è costante.
Certo, paghiamo per quello che consumiamo, ma nel caso in cui il workload sia costante e massiccio, ovviamente non è detto che il costo alla fine sia più basso, in comparazione ad un'applicazione non-serverless equivalente. Tuttavia l'analisi dei costi non si ferma alla fattura del provider a fine mese, per cui il tema è molto più complesso di come appare. Un'applicazione non-serverless comporta in realtà un mucchio di costi nascosti, dovuti alla TCO, alla lentezza di innovazione, alla gestione dell'infrastruttura, che nel tempo incidono considerevolmente.
Sostenibilità
Questo è un tema che mi sta molto a cuore e che odio dover semplificare. Perciò preciso che quel che scrivo rimane su una linea puramente teorica, non sapendo di fatto come i provider gestiscono i servizi internamente.
Il concetto che voglio trasmettere è che serverless, riducendo l'overprovisioning all'osso, grazie al fatto di allocare solo le risorse realmente necessarie all'applicazione in un dato istante, permette di ottimizzare i consumi dell'infrastruttura fisica, riducendo le emissioni da parte del provider. In pratica, se volessimo far girare 500 applicazioni, potremmo aver bisogno di 80 server anziché di 100. Come già detto, questa è una super-semplificazione, ma tornerò sul tema in futuro.
Insomma, le organizzazioni che hanno davvero la sostenibilità ambientale nei propri valori e nella propria strategia d'impresa, potrebbero trovare in serverless un modello ideale.
Conclusioni
In questo post ho voluto mettere in luce quelli che secondo me sono i vantaggi principali dal punto di vista del business di un'organizzazione. Se vuoi approfondire il tema, contattami!