FaaS o Function-as-a-Service, è un servizio di cloud computing che consente, senza l'infrastruttura complessa tipicamente associata alla creazione e al lancio di applicazioni di microservizi, di eseguire codice in risposta a eventi.
L'hosting di un'applicazione software su Internet richiede in genere il provisioning e la gestione di un server virtuale o fisico e la gestione di un sistema operativo e dei processi di hosting del server Web. Con FaaS, l'hardware fisico, il sistema operativo della macchina virtuale e la gestione del software del server Web sono tutti gestiti automaticamente dal provider del servizio cloud. Ciò consente agli sviluppatori di concentrarsi esclusivamente sulle singole funzioni nel codice dell'applicazione.
Serverless e Functions-as-a-Service (FaaS) sono spesso confusi tra loro ma la verità è che FaaS è in realtà un sottoinsieme di serverless.
Serverless è focalizzato su qualsiasi categoria di servizio, che si tratti di elaborazione, archiviazione, database, messaggistica, gateway API, ecc. dove la configurazione, la gestione e la fatturazione dei server sono invisibili all'utente finale.
FaaS, dal canto suo, sebbene sia forse la tecnologia principale nelle architetture serverless, è focalizzata sul paradigma di elaborazione basata sugli eventi in cui il codice dell'applicazione, o i contenitori, vengono eseguiti solo in risposta a eventi o richieste.
FaaS è uno strumento prezioso se stai cercando di migrare le applicazioni nel cloud in modo efficiente ed economico. Di seguito sono riportati alcuni vantaggi di cui beneficerai:
Esistono diverse best practice che puoi seguire per rendere FaaS più facile da implementare e più efficace:
Grazie alla sua capacità di isolare e ridimensionare facilmente le transazioni, FaaS è utile per carichi di lavoro paralleli ad alto volume. Può anche essere utilizzato per creare sistemi di backend o per attività come elaborazione dati, conversione di formato, codifica o aggregazione di dati.
FaaS è anche un buono strumento per app Web, backend, elaborazione di dati/stream o per creare chatbot online o backend per dispositivi IoT. FaaS può aiutarti a gestire e utilizzare servizi di terze parti. Se stai prendendo in considerazione lo sviluppo di app Android, ad esempio, puoi adottare un approccio FaaS per tenere sotto controllo i costi. Poiché andrai incontro a spese solo quando la tua app si connette al cloud per una funzione specifica come l'elaborazione in batch, i costi possono risultare notevolmente inferiori rispetto a un approccio tradizionale.
FaaS può anche aumentare notevolmente le prestazioni di elaborazione. Ad esempio, due studenti hanno recentemente lavorato con gli specialisti IBM per esplorare come sfruttare le IBM Cloud Functions per le simulazioni Monte Carlo (metodi matematici utilizzati per stimare i risultati futuri di determinati eventi difficili da prevedere) per stimare i prezzi delle azioni.Le simulazioni Monte Carlo sviluppano un importante carico di calcolo ad alte prestazioni. La combinazione di Monte Carlo e IBM Cloud Functions ha consentito al team di eseguire calcoli su vasta scala e di concentrarsi sulla logica di business. Utilizzando FaaS, il team ha completato un'intera simulazione Monte Carlo in circa 90 secondi con 1.000 chiamate simultanee. In confronto, l'esecuzione dello stesso flusso su un laptop con quattro core della CPU ha richiesto 247 minuti e un utilizzo della CPU quasi del 100%.
Per vedere altri esempi di casi d'uso FaaS, consulta "A Recap of the Key Advantages Offered by IBM Cloud Functions".
FaaS, PaaS (Platform-as-a-Service), contenitori e macchine virtuali (VM) ricoprono tutti un ruolo fondamentale nell'ecosistema serverless. Poiché FaaS è l'elemento più centrale e più identificativo dello stack serverless, vale la pena esplorare, attraverso alcuni elementi chiave, in che modo FaaS differisce dagli altri modelli comuni di elaborazione oggi sul mercato:
Kubernetes e Knative rappresentano le "condutture" dietro FaaS. Kubernetes è uno strumento di orchestrazione dei contenitori open source, fondamentale per la gestione delle applicazioni cloud. Knative consente di lavorare in modalità serverless all'interno di un cluster Kubernetes.
La combinazione di Knative e Kubernetes consente di sfruttare le funzioni di Kubernetes come monitoraggio, sicurezza, registrazione e autenticazione e combinarle con i vantaggi di Knative come la creazione automatizzata di container, la piena portabilità e il lavoro in ambienti ibridi.
I creatori di questa tecnologia credevano che nella creazione di app cloud gli sviluppatori non dovessero dover scegliere tra serverless e contenitori. L'obiettivo era aumentare la disponibilità e la congruenza dei contenitori con il potente ridimensionamento e l'accesso on-demand dell'architettura serverless.
Guarda questo video per ulteriori informazioni su Knative:
Esegui immagini di contenitori, processi batch o codice sorgente come carichi di lavoro serverless, senza necessità di dimensionamento, distribuzione, rete o scalabilità.
Sviluppa codice semplificato che si esegue in modo scalabile, on demand con questa piattaforma di programmazione FaaS (Functions-as-a-Service).
Il serverless è un modello di sviluppo ed esecuzione di applicazioni di cloud computing che consente agli sviluppatori di realizzare ed eseguire codice applicativo senza eseguire il provisioning o gestire server o infrastruttura di backend.
I contenitori sono unità eseguibili di software che impacchettano il codice dell'applicazione insieme alle relative dipendenze delle librerie e possono essere eseguiti ovunque, sia su desktop, IT tradizionale o cloud.
PaaS, o Platform-as-a-Service, fornisce una piattaforma cloud completa, flessibile ed efficiente in termini di costi per sviluppare, eseguire e gestire le applicazioni.