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.
È 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.
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
Il workflow FaaS può essere semplice ed efficiente. Spesso si basa su un modello basato su eventi in cui le azioni attivano il codice.
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.
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.
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.
Se la tua applicazione richiede risposte immediate, puoi utilizzare questi passaggi per ridurre al minimo la latenza.
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.
Per saperne di più su Function as a Service e sul serverless computing, puoi esplorare queste risorse.
Inizia a creare su Google Cloud con 300 $ di crediti senza costi e oltre 20 prodotti Always Free.