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.
Il serverless computing, nonostante il nome, non elimina i server. Piuttosto, semplifica lo sviluppo delle applicazioni astraendo le attività di routine dell'infrastruttura. Ciò significa che non devi vedere, configurare, gestire o scalare le macchine sottostanti che eseguono le tue applicazioni. In sostanza, paghi per il servizio del 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 a te assegnata 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, d'altra parte, 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.
Definizioni chiave:
Serverless
PaaS
Container
VM
Nell'ambito del cloud computing serverless, esistono generalmente due tipi di servizi: Function as a Service (FaaS) e Backend as a Service (BaaS).
Nello sviluppo, il termine "serverless" viene solitamente 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 astratte dall'utente finale. Ciò può includere database, spazio di archiviazione, flussi di eventi, messaggistica e gateway API.
Alcuni degli esempi di serverless computing più comuni ed emergenti 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
Il serverless computing può contribuire a ridurre le difficoltà di definizione dell'infrastruttura per i team DevOps in termini di integrazione, test, distribuzione e deployment. Possono quindi concentrarsi sulla scrittura e sul deployment del codice direttamente 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 si tratta di una tecnologia ancora relativamente nuova. Di conseguenza, non è ancora adatta a tutti i potenziali casi d'uso.
È 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.