Il serverless computing è un modello di esecuzione del cloud computing che alloca le risorse macchina in base all'uso. Nell'ambito di un modello serverless, gli sviluppatori possono creare ed eseguire applicazioni senza dover gestire server e pagare solo per la quantità esatta di risorse utilizzate. Il fornitore di servizi cloud è responsabile del provisioning, della gestione e della scalabilità dell'infrastruttura cloud che esegue il codice dell'applicazione.
Sebbene il nome possa essere fuorviante, serverless non significa "senza server". Le app serverless astraggono le attività di routine dell'infrastruttura associate allo sviluppo delle applicazioni. Non hai visibilità sulle macchine che eseguono le tue applicazioni, non puoi configurarle e non hai bisogno di gestirle o scalarle. In altre parole, paghi per il servizio di un server, non per il server stesso.
Dal punto di vista dello sviluppo, è come se non ci fossero affatto server: gli sviluppatori scrivono il codice, ne eseguono il deployment in produzione e il cloud provider gestisce il resto.
Quando si tratta di creare applicazioni, gli sviluppatori di solito devono svolgere una serie di attività di gestione dei server per poter eseguire il deployment del codice, come la definizione delle risorse per l'elaborazione e l'archiviazione, l'applicazione di patch, il bilanciamento del carico e altro ancora. Tutti questi elementi aggiuntivi portano a tempi di provisioning più lunghi e a costi operativi aggiuntivi, che in ultima analisi rallentano i team di sviluppo.
Il serverless computing cerca di fornire agli sviluppatori un'esperienza "serverless" invisibile, che elimina la necessità di preoccuparsi dei server o di qualsiasi cosa possa essere necessaria per eseguire un'applicazione. Il fornitore di servizi svolge tutto il lavoro dietro le quinte per assicurarsi che tu abbia le risorse per eseguire il codice e soddisfare i requisiti senza che ti venga addebitata la capacità inuttilizzata.
Pensa al serverless come alla fornitura di acqua potabile a casa tua. Potresti scavare un pozzo, testare la qualità dell'acqua, installare e mantenere tutti gli impianti idraulici esterni necessari per portare l'acqua dentro casa. In alternativa, puoi collegarti alla rete idrica del tuo comune. Ti basta aprire il rubinetto per avere accesso a tutta l'acqua che vuoi quando ne hai bisogno e il comune ti invia una fattura mensile per la quantità esatta di acqua che consumi.
Allo stesso modo, i cloud provider avviano automaticamente le risorse dell'infrastruttura e gli ambienti di runtime necessari per eseguire le tue app serverless e fanno lo scale down automatico a zero al termine dell'esecuzione. In genere, l'addebito avviene in base alle risorse durante il tempo di esecuzione. Tuttavia, questo può variare in base al servizio e al fornitore.
Ma aspetta, non ci sono altri tipi di cloud computing che forniscono risorse on demand con pagamento a consumo? È vero, anche i modelli di servizi cloud come Infrastructure as a Service (IaaS) e Platform as a Service (PaaS) forniscono accesso on demand alle risorse di elaborazione.
Tuttavia, l'infrastruttura cloud allocata a te rimane attiva anche se non la utilizzi. È inoltre tua responsabilità scalare la capacità del server o configurare le tue applicazioni per fare lo scale up o scale down in risposta alla domanda degli utenti.
Le architetture serverless, invece, sono basate su eventi. In questo modello, il fornitore fornisce risorse solo quando un evento attiva l'esecuzione del tuo codice e scala istantaneamente e automaticamente in base alle richieste.
Nell'ambito del cloud computing serverless, esistono generalmente due tipi di servizi: Function as a Service (FaaS) e Backend as a Service (BaaS).
FaaS fornisce le risorse di elaborazione necessarie per eseguire la logica delle applicazioni in risposta alle richieste. Queste parti logiche (o funzioni) vengono eseguite in container completamente gestiti dal provider di servizi cloud. Le applicazioni serverless sono solitamente suddivise in singole funzioni che eseguono un'azione in risposta a un evento.
BaaS offre l'intera funzionalità di backend delle applicazioni web o per dispositivi mobili come servizio, ad esempio come servizi di autenticazione, gestione di database, archiviazione sul cloud, notifiche push e hosting. BaaS elimina anche la necessità di gestire server, container e macchine virtuali.
Nell'ambito dello sviluppo, il termine "serverless" di solito viene utilizzato per descrivere le offerte FaaS. Tuttavia, è importante notare che FaaS è tecnicamente un sottoinsieme della tecnologia serverless. Il serverless computing include qualsiasi tipo di servizio in cui la gestione, la configurazione, la scalabilità e la fatturazione del server sono astratti dall'utente finale. Ciò può includere database, spazio di archiviazione, flussi di eventi, messaggistica e gateway API.
In generale, il serverless computing viene ancora utilizzato principalmente per attività semplici e di breve durata. Alcuni degli esempi di serverless computing più comuni includono:
Maggiore produttività degli sviluppatori
Gli sviluppatori supportati dal serverless si concentrano sulla scrittura del codice e sull'ottimizzazione della logica di business, invece di preoccuparsi del provisioning, della gestione o della scalabilità dell'infrastruttura.
Scalabilità pronta all'uso
Le architetture serverless fanno lo scale up o lo scale down in maniera intrinseca. A differenza della scalabilità automatica in altri tipi di cloud computing, che richiede un'ottimizzazione delle regole, la scalabilità automatica del serverless è istantanea e può fare lo scale down fino a zero.
Determinazione del prezzo flessibile
I modelli di determinazione dei prezzi serverless spesso prevedono addebiti in base all'utilizzo effettivo e al tempo necessario per eseguire una funzione. Inoltre, non paghi per la capacità inutilizzata e questo contribuisce a ridurre i costi operativi associati all'esecuzione e alla gestione dei tuoi server.
Deployment più rapido
Con il serverless, i team DevOps non devono dedicare tempo alla definizione dell'infrastruttura necessaria per l'integrazione, i test, la distribuzione o il deployment del codice. Possono limitarsi a scrivere ed eseguire il deployment in produzione.
Supporto di qualsiasi linguaggio
Gli ambienti serverless supportano qualsiasi linguaggio o framework, consentendo ai team di sviluppare nel linguaggio o con il framework (Go, Python, Java, Node.js, .NET e altri ancora) con cui si sentono più a proprio agio.
Uno dei maggiori svantaggi del serverless computing è che è ancora una tecnologia relativamente nuova. Di conseguenza, non è ancora adatta a tutti i potenziali casi d'uso.
Inoltre, la natura intenzionalmente temporanea del serverless e la sua capacità di fare lo scale down fino a zero lo rendono inadatto per alcuni tipi di applicazioni. Non è progettato per eseguire il codice per lunghi periodi e non è sempre in grado di gestire applicazioni con requisiti rigorosi di bassa latenza, come le applicazioni di servizi finanziari.
Infine, i vantaggi di affidare la gestione di tutte le risorse di elaborazione a un provider di terze parti possono comportare anche diversi svantaggi. Anche se consente di dedicare più tempo al codice, può essere difficile eseguire la migrazione a un nuovo cloud provider. Inoltre, non hai visibilità su dove o come viene eseguito il servizio e hai un controllo limitato sulla scalabilità, su quale tipo di codice hardware viene eseguito e sulle situazioni di ripristino di emergenza.
Tuttavia, il serverless computing ha molti aspetti positivi, in particolare per le organizzazioni che vogliono aiutare gli sviluppatori a muoversi più velocemente e cercano un modo più semplice ed economico per creare applicazioni basate su cloud.
È inoltre chiaro che alcuni degli attuali punti deboli verranno risolti nel tempo man mano che il serverless computing continuerà a evolversi. In particolare, è già stato fatto molto lavoro sulle implementazioni open source dei modelli serverless e sulla ricerca di modi per rendere i servizi cloud più aperti affinché le soluzioni siano trasferibili tra piattaforme e ambienti diversi.
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.