Che cos'è il serverless computing?

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 devi gestirle o scalarle. In altre parole, paghi per il servizio offerto da 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.

Come funziona il serverless computing?

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. 

Ecco un'analogia semplice per capire il funzionamento del serverless computing

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. 

Serverless e altri tipi di cloud computing

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 allocata rimane attiva anche se non la utilizzi. È inoltre tua responsabilità scalare la capacità del server o configurare le tue applicazioni per lo scale up o lo 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.

Esempi e casi d'uso del serverless computing

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 logiche (o funzioni) vengono eseguite in container completamente gestiti dal fornitore di servizi cloud. Le applicazioni serverless sono in genere suddivise in singole funzioni che eseguono un'azione in risposta a un evento. 

BaaS offre l'intera funzionalità di backend delle applicazioni web o mobile as a Service, come servizi di autenticazione, gestione dei 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 dei server sono astratte 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 più comuni di serverless computing includono: 

  • Integrazione con servizi e API di terze parti
  • Esecuzione di attività pianificate (ad esempio, report giornalieri, backup o logica di business) 
  • Automazione dei processi IT, come la rimozione automatica degli accessi, l'avvio di controlli di sicurezza della conformità o l'invio di approvazioni
  • Elaborazione in tempo reale di dati strutturati e non strutturati 
  • Automazione delle pipeline di integrazione e distribuzione continua (CI/CD)
  • Backend di API REST
  • Azioni basate su trigger o esecuzione di attività pianificate (ad esempio, report giornalieri, backup o logica di business)
  • Elaborazione asincrona
  • Notifiche in tempo reale o pianificate

Vantaggi del serverless computing

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à immediata

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.

Svantaggi del serverless computing

Uno dei maggiori svantaggi del serverless computing è che è ancora una tecnologia relativamente nuova. Di conseguenza, non è ancora adatto a soddisfare tutti i potenziali casi d'uso. 

Inoltre, la natura volutamente temporanea del serverless e la sua capacità di fare lo scale down fino a zero lo rendono inadatto per determinati 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 tuo servizio e hai un controllo limitato su come scalare, 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. 

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.
Parla con una persona esperta del team di vendita di Google Cloud per discutere della tua sfida unica in modo più dettagliato.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
Console
Google Cloud