Che cos'è FaaS (Function-as-a-Service)?
FaaS rende più semplice per gli sviluppatori di applicazioni cloud eseguire e gestire le applicazioni a microservizi.
Iscriviti alla newsletter IBM
Sfondo nero e blu con forme geometriche interconnesse
Cos'è FaaS?

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.

 

Confronto tra FaaS e Serverless

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.

Vantaggi di FaaS

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:

  • Ti concentri maggiormente sul codice, non sull'infrastruttura: con FaaS puoi dividere il server in funzioni che possono essere dimensionate automaticamente e indipendentemente, così non devi gestire l'infrastruttura. Ciò ti consente di concentrarti sul codice dell'app e può ridurre drasticamente il time-to-market.
  • Paghi solo per le risorse che usi, quando le usi: con FaaS paghi solo quando si verifica un'azione. Al termine dell'azione, tutto si ferma: nessun codice viene eseguito, nessun server inattivo, non si sostiene alcun costo. FaaS è quindi conveniente, soprattutto per carichi di lavoro dinamici o attività pianificate. FaaS offre inoltre un costo totale di proprietà superiore per scenari con carichi elevati.

  • Ridimensiona automaticamente: con FaaS, le funzioni vengono ridimensionate automaticamente, indipendentemente e istantaneamente, in base alle necessità. Quando la domanda diminuisce, FaaS si riduce automaticamente.

  • Ottieni tutti i vantaggi di una solida infrastruttura cloud: FaaS offre un'elevata disponibilità intrinseca perché è distribuito su più zone di disponibilità per area geografica e può essere implementato in un numero qualsiasi di regioni senza costi incrementali.
Principi e best practice FaaS

Esistono diverse best practice che puoi seguire per rendere FaaS più facile da implementare e più efficace:

  • Fai in modo che ciascuna funzione esegua una sola azione: le funzioni FaaS devono essere progettate per eseguire un singolo lavoro in risposta a un evento. Rendi l'ambito del codice limitato, efficiente e leggero in modo che le funzioni vengano caricate ed eseguite rapidamente.

  • Fai in modo che le funzioni non chiamino altre funzioni: il valore aggiunto di FaaS consiste nell'isolamento delle funzioni. Troppe funzioni aumenteranno i tuoi costi ed elimineranno il valore dell'isolamento delle tue funzioni.

  • Usa il minor numero possibile di librerie nelle tue funzioni: l'utilizzo di troppe librerie può rallentare le funzioni e renderle più difficili da ridimensionare.
Casi di utilizzo FaaS

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

Confronto tra FaaS e PaaS, contenitori e VM

FaaS, PaaS (Platform-as-a-Service)contenitorimacchine 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:

  • Tempo di provisioning: millisecondi, rispetto minuti e ore per gli altri modelli.

  • Amministrazione continuativa: nessuna, rispetto ad una gestione che rispettivamente passa da facile a difficile per PaaS, contenitori e VM.

  • Ridimensionamento elastico: ogni azione viene sempre, istantaneamente e intrinsecamente ridimensionata, rispetto agli altri modelli che offrono un ridimensionamento automatico, ma lento, che richiede un'attenta regolazione delle regole di ridimensionamento automatico.

  • Pianificazione della capacità: non necessaria, rispetto agli altri modelli che richiedono un mix di ridimensionamento automatico e pianificazione della capacità.

  • Connessioni e stato persistenti: la capacità limitata di mantenere persistenti le connessioni e lo stato deve essere mantenuta in un servizio/risorsa esterna. Gli altri modelli possono sfruttare http, mantenere un socket o una connessione aperti per lunghi periodi di tempo e possono memorizzare lo stato in memoria tra le chiamate.

  • Manutenzione: tutta la manutenzione è gestita dal provider FaaS. Questo vale anche per PaaS; i contenitori e le VM richiedono una manutenzione significativa che include l'aggiornamento/la gestione dei sistemi operativi, delle immagini dei contenitori, delle connessioni, ecc.

  • Alta disponibilità (HA) e disaster recovery (DR): anche in questo caso, l'HA intrinseca al modello FaaS è senza sforzi o costi aggiuntivi. Gli altri modelli richiedono costi e sforzi di gestione aggiuntivi. Sia nel caso di VM che dei contenitori, l'infrastruttura può essere riavviata automaticamente.

  • Utilizzo delle risorse: le risorse non sono mai inattive: vengono richiamate solo su richiesta. Tutti gli altri modelli presentano almeno un certo grado di capacità inattiva.

  • Limiti delle risorse: FaaS è l'unico modello che presenta limiti di risorse sulla dimensione del codice, attivazioni simultanee, memoria, lunghezza di esecuzione, ecc.

  • Granularità di addebito e fatturazione: per blocchi di 100 millisecondi, rispetto all'ora (e talvolta al minuto) di altri modelli.
Kubernetes/Knative e FaaS

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:

Soluzioni correlate
IBM Cloud Code Engine

Esegui immagini di contenitori, processi batch o codice sorgente come carichi di lavoro serverless, senza necessità di dimensionamento, distribuzione, rete o scalabilità. 

Esplora IBM cloud code engine
IBM Cloud Functions

Sviluppa codice semplificato che si esegue in modo scalabile, on demand con questa piattaforma di programmazione FaaS (Functions-as-a-Service).

Esplora IBM Cloud Functions
Risorse Cos'è il serverless?

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.

Cosa sono i contenitori?

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.

Cos'è PaaS?

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.

Fai il passo successivo

La piattaforma serverless completamente gestita IBM Cloud Code Engine consente di concentrarsi sulla scrittura di codice, non sulla gestione dell'infrastruttura. Integra le tue immagini container, i tuoi lavori batch o il tuo codice sorgente e lascia che IBM Cloud Code Engine gestisca e protegga l'infrastruttura sottostante al posto tuo. Non dovrai occuparti personalmente del ridimensionamento, dell’implementazione o della scalabilità dei cluster di container. Non sono neanche richieste competenze di rete.

Esplora IBM cloud code engine