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

10 luglio 2021

Cos'è FaaS?

Function as a service (FaaS) è un servizio di cloud computing che consente ai clienti di eseguire codice in risposta agli eventi, senza gestire l'infrastruttura complessa tipicamente associata alla creazione e al lancio delle applicazioni di microservizi.

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. Questa funzione consente agli sviluppatori di concentrarsi esclusivamente sulle singole funzioni nel codice dell'applicazione.

Veduta aerea di uno snodo di autostrade

Rimani con la testa nel cloud 


Ricevi la newsletter settimanale Think per una guida esperta sull'ottimizzazione delle impostazioni multicloud nell'era dell'AI.

FaaS e serverless a confronto

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, compresi calcolo, archiviazione, database, messaggistica e gateway API, dove la configurazione, la gestione e la fatturazione dei server sono invisibili all'utente.

Tuttavia, FaaS, sebbene forse sia la tecnologia più centrale nelle architetture serverless, si concentra 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.

AI Academy

Prepararsi all'AI con l'hybrid cloud

Condotto dai migliori leader di pensiero di IBM, il programma di studi è stato progettato per aiutare i dirigenti aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti in AI che possono favorire la crescita.

Vantaggi di FaaS

FaaS è uno strumento prezioso per la migrazione efficiente ed economica delle applicazioni nel cloud. Di seguito ce ne sono alcuni altri:

  • 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. Questa funzione 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. Pertanto, FaaS è 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, back-end, elaborazione di dati o stream o per creare chatbot online o back-end 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 utilizzare 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%.

FaaS, PaaS, container e VM a confronto

FaaS, PaaS (Platform-as-a-Service)containermacchine 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 continua: nessuna, rispetto ad una scala che passa da facile a difficile per PaaS, container e VM.

  • Ridimensionamento elastico: ogni azione viene 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 o risorsa esterna. Gli altri modelli possono utilizzare http, mantenere un socket o una connessione aperti per lunghi periodi di tempo e possono memorizzare lo stato in memoria tra le chiamate.

  • Manutenzione: il fornitore FaaS gestisce tutta la manutenzione. Questo vale anche per il PaaS. I container e le VM richiedono una manutenzione significativa che include l'aggiornamento e la gestione dei sistemi operativi, delle immagini dei container, delle connessioni e altro.

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

  • 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 open source di orchestrazione dei contenitori, fondamentale per la gestione delle applicazioni cloudKnative 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.

Soluzioni correlate
IBM Cloud Virtual Server for VPC

IBM Cloud Virtual Server for VPC è una famiglia di server virtuali Intel x86, IBM Z e IBM LinuxONE basati su IBM Cloud Virtual Private Cloud.

Esplora Cloud Virtual Server
Cloud Web Hosting 

I server dedicati IBM Cloud offrono una soluzione di web hosting scalabile con traffico di backhaul illimitato e gratuito e molte opzioni di personalizzazione.

Esplora le soluzioni di web hosting
Servizi di consulenza cloud 

Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.

Servizi cloud
Fai il passo successivo

Rafforza la tua presenza sul web con le soluzioni di web hosting affidabili e sicure di IBM Cloud. Dai siti web ad alto traffico alle applicazioni aziendali, gli IBM Cloud Bare Metal Servers offrono flessibilità, trasferimento dati illimitato e portata globale su misura per le tue esigenze di hosting.

Esplora il web hosting di IBM Cloud Crea un account IBM Cloud gratuito