Che cos'è Function as a Service (FaaS)?

Function as a service (FaaS) è un modello di cloud computing in cui sviluppi piccole parti di codice modulari chiamate funzioni e un provider di servizi cloud le esegue in risposta a eventi specifici. In questo modello, ti concentri interamente sulla logica del codice, mentre il runtime serverless gestisce l'infrastruttura. Il provider cloud gestisce l'hardware fisico, il sistema operativo e il software del server web.

Questo approccio è diverso dalle applicazioni tradizionali basate su server o dalle architetture monolitiche. In questi modelli precedenti, in genere si gestisce un server che viene eseguito continuamente, anche quando nessuno utilizza l'applicazione. Con FaaS, la piattaforma esegue il codice solo quando viene attivato da un evento specifico. Ciò consente di creare applicazioni in modo efficiente, poiché le risorse vengono utilizzate solo quando necessario.

FaaS, PaaS e IaaS a confronto

È utile comprendere il confronto tra FaaS e altri modelli di servizi cloud come Platform as a Service (PaaS) e Infrastructure as a Service (IaaS). Sebbene FaaS appartenga alla più ampia categoria "serverless", in cui il provider gestisce i server, offre un livello di astrazione distinto. Il serverless comprende qualsiasi servizio, come database, archiviazione o calcolo, in cui il provider gestisce i server. FaaS è specificamente la parte di computazione serverless che esegue il codice in risposta agli eventi.

  • FaaS si concentra sul codice basato su eventi. Esegui il deployment di una singola funzione che esegue un'attività specifica in risposta a un evento, ad esempio il caricamento di un file. La piattaforma gestisce la scalabilità automaticamente, spesso fino a zero quando è inattiva.
  • PaaS fornisce una piattaforma per creare ed eseguire intere applicazioni. Sebbene anche PaaS elimini la necessità di gestire hardware e sistemi operativi, in genere mantiene l'applicazione in esecuzione continua, in attesa delle richieste degli utenti. È più adatto ad applicazioni web complete che a singoli trigger di eventi.
  • IaaS offre il massimo controllo, ma richiede la massima gestione. Noleggi macchine virtuali (VM) e spazio di archiviazione, ma sei responsabile della gestione del sistema operativo, dei runtime e del middleware.

Confronto dei modelli di servizi cloud

Funzionalità

FaaS (Function as a Service)

PaaS (Platform as a Service)

IaaS (Infrastructure as a Service)

Unità principale

Una singola funzione (piccolo snippet di codice)

Un'intera applicazione

Macchine virtuali (VM)

Scalabilità

Scalabilità istantanea per ogni richiesta (anche fino a zero)

Più lento, si ridimensiona in base alle regole configurate

Scalabilità automatica manuale o preconfigurata

Modello di determinazione del prezzo

Pagamento in base al tempo di esecuzione (millisecondi)

Paga per le risorse in esecuzione (uptime)

Paga per le risorse allocate (dimensioni/tempo)

Manutenzione

Nessuna (il provider gestisce tutto)

Inferiore (il provider gestisce il sistema operativo/runtime)

Più elevata (gestisci il sistema operativo, gli aggiornamenti e le patch)

Ideale per

Attività basate su eventi, glue code (codice di integrazione), elaborazione dei dati

App web, servizi a esecuzione prolungata

App legacy, infrastruttura personalizzata complessa

Funzionalità

FaaS (Function as a Service)

PaaS (Platform as a Service)

IaaS (Infrastructure as a Service)

Unità principale

Una singola funzione (piccolo snippet di codice)

Un'intera applicazione

Macchine virtuali (VM)

Scalabilità

Scalabilità istantanea per ogni richiesta (anche fino a zero)

Più lento, si ridimensiona in base alle regole configurate

Scalabilità automatica manuale o preconfigurata

Modello di determinazione del prezzo

Pagamento in base al tempo di esecuzione (millisecondi)

Paga per le risorse in esecuzione (uptime)

Paga per le risorse allocate (dimensioni/tempo)

Manutenzione

Nessuna (il provider gestisce tutto)

Inferiore (il provider gestisce il sistema operativo/runtime)

Più elevata (gestisci il sistema operativo, gli aggiornamenti e le patch)

Ideale per

Attività basate su eventi, glue code (codice di integrazione), elaborazione dei dati

App web, servizi a esecuzione prolungata

App legacy, infrastruttura personalizzata complessa

Come funziona Function as a Service

Il workflow FaaS può essere semplice ed efficiente. Spesso si basa su un modello basato su eventi in cui le azioni attivano il codice.

  1. Deployment del codice: scrivi una piccola parte di codice o una funzione che esegue una singola attività e la carichi sul tuo provider di servizi cloud.
  2. Attivazione dell'evento: si verifica un evento, ad esempio un utente che fa clic su un pulsante, un caricamento di file in un archivio o l'arrivo di un messaggio in una coda.
  3. Allocazione delle risorse: il provider cloud riconosce l'evento e fornisce immediatamente l'ambiente di esecuzione necessario.
  4. Esecuzione della funzione: il codice viene eseguito, svolge la sua attività e produce un risultato, ad esempio l'elaborazione dei dati o l'invio di una notifica.
  5. Disattivazione e fatturazione: una volta completata l'attività, le risorse vengono rilasciate immediatamente e ti vengono addebitati solo i millisecondi in cui il codice è stato eseguito.

Casi d'uso comuni per FaaS

FaaS è versatile e si adatta bene a molte architetture di applicazioni moderne.

Puoi suddividere applicazioni complesse in parti piccole e indipendenti che comunicano tramite eventi.

FaaS funziona bene per attività come il ridimensionamento di un'immagine subito dopo che un utente la carica o la pulizia dei dati non appena arrivano.

Puoi utilizzare le funzioni per alimentare la logica alla base delle app mobili o elaborare i dati provenienti dai dispositivi Internet of Things (IoT).

Le attività che possono essere suddivise in molti piccoli lavori simultanei, come la codifica video, vengono eseguite in modo molto efficiente su FaaS.

Puoi sostituire le attività pianificate tradizionali con funzioni che vengono eseguite in momenti specifici per eseguire la manutenzione o generare report.

Vantaggi principali dell'adozione di FaaS

L'adozione della tecnologia cloud FaaS offre diversi vantaggi per sviluppatori e aziende.

Scalabilità automatica e istantanea

La tua applicazione può gestire un improvviso picco di traffico, da un singolo utente a migliaia, senza che tu debba configurare nulla manualmente.

Controllo dei costi superiore (pagamento a consumo)

Paghi solo quando il codice è in esecuzione, il che può comportare un notevole risparmio sui costi rispetto al pagamento di server inattivi.

Maggiore velocità degli sviluppatori

Gli sviluppatori possono scrivere codice ed eseguirne il deployment rapidamente senza perdere tempo nella gestione dei server o nella configurazione dell'infrastruttura.

Concentrati sul codice dell'applicazione, non sulla gestione dell'infrastruttura

I team possono dedicare le proprie energie alla creazione di valore per i clienti anziché alla patch dei server o alla gestione dei sistemi operativi.

Alta affidabilità e resilienza

Le piattaforme FaaS in genere eseguono il codice su più zone, quindi se un'area ha esito negativo, l'applicazione continua a funzionare.

Problema comune per gli sviluppatori: "avvio a freddo"

Uno dei problemi più comuni che gli sviluppatori devono affrontare con FaaS è l'"avvio a freddo". Quando la funzione non viene eseguita per un po', il provider di servizi cloud arresta l'ambiente per risparmiare risorse. La volta successiva in cui un evento attiva la funzione, si verifica un leggero ritardo mentre il sistema configura l'ambiente e carica il codice. Questo ritardo, chiamato avvio a freddo, può rallentare l'applicazione.

Come ridurre gli avvii a freddo

Se la tua applicazione richiede risposte immediate, puoi utilizzare questi passaggi per ridurre al minimo la latenza.

  1. Riduci le dimensioni del codice: rivedi il codice e rimuovi eventuali librerie o dipendenze di grandi dimensioni che non sono strettamente necessarie. Più piccola è la funzione, più velocemente si carica.
  2. Utilizza il caricamento lento: struttura il codice in modo che carichi solo le variabili o le connessioni pesanti quando sono effettivamente necessarie all'interno della logica della funzione, anziché caricarle immediatamente all'avvio della funzione.
  3. Configura le istanze minime: la maggior parte dei principali fornitori di servizi cloud consente di impostare un numero di "istanze minime". In questo modo, almeno un'istanza della funzione rimane sempre attiva e pronta all'uso, eliminando il ritardo di avvio.
  4. Scegli un runtime più veloce: alcuni linguaggi di programmazione, come Go o Python, in genere si avviano più velocemente di altri, come Java. Se la velocità è fondamentale, valuta la possibilità di scrivere funzioni sensibili alla latenza in un linguaggio più leggero.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti senza costi da spendere su Google Cloud.

FaaS e funzioni Cloud Run

Function as a service descrive un modello di cloud computing e Cloud Run Functions è il prodotto Google Cloud che dà vita a questo concetto. Fornisce una soluzione FaaS scalabile con pagamento a consumo che consente di eseguire il codice senza gestione del server.

Quando scegli Cloud Run Functions, adotti un approccio serverless in cui Google Cloud gestisce l'infrastruttura sottostante. Tu fornisci il codice e la piattaforma gestisce l'ambiente di esecuzione, gli aggiornamenti del sistema operativo e le funzionalità di scalabilità automatica. Questa integrazione ti consente di eseguire il deployment di funzioni per uso specifico che rispondono a eventi, come richieste HTTP o modifiche ai dati, senza dover eseguire il provisioning di una singola macchina virtuale.

Questo servizio combina la semplicità del deployment di funzioni con la potenza della tecnologia Cloud Run. Gli sviluppatori possono creare applicazioni basate su eventi utilizzando linguaggi come Python, Node.js, Go, Java, .NET e Ruby. Poiché viene eseguito sull'infrastruttura robusta di Google, le tue funzioni possono scalare da 0 a migliaia di istanze automaticamente per soddisfare la domanda.

Risorse aggiuntive

Per saperne di più su Function as a Service e sul serverless computing, puoi esplorare queste risorse.

Fai il prossimo passo

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

Google Cloud