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.

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.

Scopri come Google Cloud rende il serverless adatto alle tue esigenze

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. 

Comprendere il 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 rispetto ad 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 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.

Risolvi le tue sfide aziendali con Google Cloud

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

Confronto tra i modelli di cloud computing

Definizioni chiave:

  • Oneri amministrativi: il livello di impegno richiesto per gestire e mantenere l'infrastruttura sottostante
  • Modello di costo: il metodo utilizzato per calcolare e addebitare il consumo di risorse
  • Requisiti di manutenzione: la quantità di manutenzione, patch e aggiornamenti continui richiesti
  • Scalabilità: la capacità di regolare automaticamente le risorse in risposta alla variazione della domanda
  • Assenza di stato: indica se l'applicazione archivia i dati del client da una sessione all'altra

Serverless

  • Onere amministrativo: minimo
  • Modello di costo: pagamento in base al consumo
  • Requisiti di manutenzione: nessuno
  • Scalabilità: automatica e istantanea
  • Condizione stateless: in genere stateless

PaaS

  • Onere amministrativo: medio
  • Modello di costo: pagamento per istanza
  • Requisiti di manutenzione: bassi
  • Scalabilità: scalabilità manuale o automatica
  • Condizione stateless: può essere stateful o stateless

Container

  • Onere amministrativo: medio-alto
  • Modello di costo: pagamento per container
  • Requisiti di manutenzione: medi
  • Scalabilità: scalabilità manuale o automatica
  • Condizione stateless: può essere stateful o stateless

VM

  • Onere amministrativo: alto
  • Modello di costo: pagamento per VM
  • Requisiti di manutenzione: alti
  • Scalabilità: scalabilità manuale o automatica
  • Condizione stateless: può essere stateful o stateless

Tipi di 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. Questi elementi logici (o funzioni) vengono eseguiti in container completamente gestiti dal fornitore 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. 

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. 

Casi d'uso del serverless computing

Alcuni degli esempi di serverless computing più comuni ed emergenti includono:

API e integrazione di terze parti

  • Caso d'uso: sincronizzare senza problemi lead/clienti tra diverse applicazioni aziendali (ad esempio, da CRM ad automazione del marketing)
  • Soluzione serverless: una funzione Cloud Run attivata da HTTP riceve webhook dal sistema di origine (ad esempio, Salesforce), trasforma i dati e chiama l'API del sistema di destinazione (ad esempio, HubSpot), spesso utilizzando Secret Manager per le credenziali
  • Prodotti serverless di Google Cloud: Cloud Run Functions e Secret Manager

Azioni programmate e basate su trigger

  • Caso d'uso: automatizzare la generazione e la distribuzione di report di routine
  • Soluzione serverless: un job Cloud Scheduler attiva quotidianamente una funzione Cloud Run tramite Pub/Sub; la funzione esegue una query su un data warehouse (ad esempio, BigQuery), elabora i dati in un report e lo invia tramite un'API di posta elettronica
  • Prodotti serverless di Google Cloud: Cloud Scheduler, Pub/Sub, Cloud Run Functions e BigQuery

Automazione dei processi IT

  • Caso d'uso: ridurre i costi del cloud identificando e gestendo automaticamente le risorse di computing inattive
  • Soluzione serverless: un job Cloud Scheduler notturno attiva una funzione Cloud Run tramite Pub/Sub; questa funzione utilizza l'API Compute Engine e Cloud Monitoring per identificare le istanze inattive e le arresta o le elimina automaticamente, registrando le azioni in Cloud Logging
  • Prodotti serverless di Google Cloud: Cloud Scheduler, Pub/Sub, Cloud Run Functions, Cloud Monitoring e Cloud Logging

Elaborazione in tempo reale e asincrona

  • Caso d'uso: elaborare e arricchire flussi di dati ad alto volume (ad esempio, attività degli utenti) per ottenere insight e azioni immediate
  • Soluzione serverless: gli eventi clickstream dell'utente vengono trasmessi in modalità flusso a Pub/Sub; una funzione Cloud Run (o un servizio Cloud Run) consuma questi eventi, li arricchisce con i dati di Firestore e quindi pubblica i dati arricchiti in un altro argomento Pub/Sub per l'analisi in tempo reale in BigQuery o per consigli personalizzati
  • Prodotti serverless di Google Cloud: Pub/Sub, Cloud Run Functions, Cloud Run, Firestore e BigQuery

Workflow CI/CD e DevOps

  • Caso d'uso: automatizzare la creazione, il test e il deployment di microservizi in caso di modifiche al codice
  • Soluzione serverless: un trigger Cloud Build monitora un repository Git (ad esempio, Cloud Source Repositories); al momento del commit del codice, Cloud Build esegue i test, crea un'immagine container in Artifact Registry ed esegue automaticamente il deployment della nuova versione in Cloud Run
  • Prodotti serverless di Google Cloud: Cloud Build, Cloud Run, Artifact Registry e Cloud Source Repositories

Elaborazione di immagini/video

  • Caso d'uso: genera automaticamente varianti di immagini ottimizzate (ad esempio, miniature, formati diversi) al momento del caricamento
  • Soluzione serverless: una funzione Cloud Run viene attivata quando una nuova immagine viene caricata in un bucket Cloud Storage; questa funzione elabora l'immagine (ridimensionamento, conversione del formato), salva le nuove versioni in Cloud Storage e aggiorna i metadati in Firestore
  • Prodotti serverless di Google Cloud: Cloud Storage, Cloud Run Functions e Firestore

Applicazioni AI e agenti AI

  • Caso d'uso: esegui inferenze AI in tempo reale utilizzando LLM come Llama 3.1, Gemma 2, Mistral e altri
  • Soluzione serverless: Cloud Run si integra con modelli di AI come l'API Gemini, gli endpoint Vertex AI o i modelli ospitati su un servizio Cloud Run abilitato per GPU; può anche fungere da endpoint API scalabile e ospitare agenti di AI
  • Prodotti serverless della piattaforma Google Cloud: Cloud Run, Cloud Storage, Firestore

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

Svantaggi del serverless computing

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. 

  • Idoneità limitata per i casi d'uso: le architetture serverless non sono sempre adatte ad applicazioni con requisiti specifici, come processi a esecuzione prolungata o esigenze di latenza molto bassa
  • Vincoli di prestazioni: le funzioni serverless possono subire avvii a freddo (esecuzione iniziale ritardata) e possono avere limitazioni sul tempo di esecuzione e sulla memoria
  • Vincoli al fornitore: la migrazione di applicazioni serverless tra provider di servizi cloud può essere complessa a causa delle differenze nelle API e nelle configurazioni
  • Visibilità del server ridotta: gli sviluppatori hanno una visibilità limitata sull'infrastruttura sottostante, il che rende difficile la risoluzione dei problemi di prestazioni o l'ottimizzazione dell'utilizzo delle risorse
  • Avvio lento: le funzioni serverless a volte possono subire un "avvio a freddo" in cui si verifica un ritardo nella chiamata della funzione, che può influire sulla latenza

Fai il prossimo passo

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

Google Cloud