Probabilmente avete sentito parlare di SaaS, PaaS e IaaS, ma conoscete il Function as a Service (FaaS)?

Il mercato del FaaS sta crescendo rapidamente. Secondo Allied Market Research, nel 2018 il mercato valeva 3,01 miliardi di dollari. Si prevede che questo valore raggiungerà i 24 miliardi di dollari entro il 2026, il che significa che il settore crescerà a un tasso di crescita annuale composto (CAGR) del 29,7% dal 2020 al 2026.

Considerando questa crescita, si può dire che il FaaS è un affare piuttosto importante.

Ma cos’è il FaaS e come funziona? Per aiutarvi a rispondere a queste domande, questo articolo illustra le basi del FaaS, i motivi per cui le persone dovrebbero (e non dovrebbero) usare il FaaS e lo stato del mercato globale del FaaS nel 2022.

Cominciamo.

Cos’È il Function as a Service (FaaS)?

Il Function as a Service (FaaS) è una forma di cloud computing che aiuta sviluppatrici e sviluppatori a lavorare meglio eliminando la necessità di mantenere l’infrastruttura applicativa. Quando chi si occupa di sviluppo si serve del FaaS, usa una piattaforma FaaS per costruire, eseguire e supervisionare i pacchetti di applicazioni.

A questo punto potreste pensare che il FaaS assomigli al serverless computing, e in effetti è così. Il serverless computing consente di affidare la gestione di database, gateway API, storage, messaggistica e altre infrastrutture a un fornitore terzo. Il FaaS è un tipo di serverless computing.

Uno schema che descrive il funzionamento del serverless computing e le differenze con il traditional computing
Come funziona il serverless computing (Fonte: iviewlabs)

Anche se questa potrebbe essere la prima volta che leggete di FaaS, è probabile che nella pratica l’abbiate già incontrato. Molti programmi e applicazioni popolari usano il FaaS, come Alexa di Amazon.

Se avete familiarità con Alexa, saprete che potete ampliare le sue funzioni creando delle “abilità”. Come le app, le abilità permettono ad Alexa di fare cose che esulano dalla sua configurazione di base. Per esempio, controllare la presenza di notifiche nella vostra app, avviare una nuova chat o riprodurre un audio personalizzato.

Amazon gestisce tutte le skill di Alexa attraverso AWS Lambda. Quando create una nuova skill, la create come funzione da distribuire attraverso AWS Lambda. AWS Lambda esegue la funzione per voi e si occupa dell’infrastruttura, come la sicurezza e la gestione del database.

Quindi, come funziona FaaS passo dopo passo? Vediamolo di seguito.

Come Funziona il FaaS?

Per capire il FaaS, dovete conoscere due termini chiave:

  1. “Architettura monolitica”: = un’applicazione autonoma che viene eseguita indipendentemente da altre applicazioni. Queste applicazioni gestiscono internamente l’interfaccia utente, le funzioni aziendali e l’interfaccia dati. Il codice dell’architettura monolitica si basa su altri frammenti di codice.
  2. “Architettura a microservizi”: = un frammento di codice che gestisce alcuni piccoli compiti. Questi microservizi sono separati (anche se insieme costituiscono un’intera applicazione).

Ecco un diagramma che mostra le differenze tra l’architettura monolitica e l’architettura a microservizi:

La differenza tra architettura monolitica e architettura a microservizi
Architettura monolitica vs. architettura a microservizi (Fonte: BMC)

La principale differenza pratica tra le architetture a microservizi e quelle monolitiche si nota quando si esegue o si aggiorna una funzione. Con un’architettura monolitica, l’intero programma esegue la funzione in una sola volta (come per esempio l’aggiornamento di un’applicazione). Con un’architettura a microservizi, potete eseguire la funzione del microservizio in modo indipendente.

Il FaaS è l’elemento che aiuta le architetture a microservizi a funzionare.

Quando eseguite una nuova funzione di microservizio, dovete solo creare la funzione. Poi, il vostro provider FaaS prende la funzione, la esegue e si occupa della gestione della funzione da quel momento in poi.

Dato che FaaS è uno strumento che lavora su input dell’utente, è fondamentale notare che ogni funzione FaaS deve essere responsabile di un solo compito. Questo compito viene eseguito quando viene attivato il suo trigger. Per esempio, una funzione che produce una copia della ricevuta dell’utente funzionerà solo se l’utente preme “scarica ricevuta”.

FaaS usa il “modello di esecuzione guidato dagli eventi”, il che significa che le funzioni si attivano solo quando vengono attivate. Allo stesso modo, non vengono eseguite in background.

Quindi, cos’altro può fare il FaaS?

Quali Servizi Include il FaaS?

Sebbene tutti i fornitori siano diversi, i fornitori di FaaS offrono generalmente questi servizi:

  • Servizi di autenticazione. Gestiscono i processi di login e di autenticazione degli utenti del vostro programma.
  • Servizi di database. Vi aiutano ad archiviare le informazioni nei database in modo che il vostro programma possa usarle. I provider FaaS gestiscono per voi la manutenzione di alcuni database.
  • Archiviazione di file. I provider FaaS possono archiviare i dati e i file della vostra applicazione, in modo che non dobbiate ospitarli sul vostro server.
  • Reporting. I provider FaaS possono controllare gli errori o le minacce alla sicurezza del vostro programma e avvisarvi quando trovano qualcosa che non va.

In generale, questi servizi aiutano chi sviluppa a lavorare in modo più intelligente. Vediamo ora i pro del FaaS.

I Vantaggi del Modello FaaS

Con il FaaS, non dovete preoccuparvi dell’infrastruttura o della distribuzione, ma solo di scrivere la logica dell’applicazione. Pertanto, se implementato correttamente, il FaaS può ridurre notevolmente il tempo necessario per costruire e distribuire un programma.

Anche la costruzione e la distribuzione sono più semplici con il FaaS. Il tempo di provisioning richiede solo pochi secondi invece di ore e ore. Inoltre, non vi limita a particolari linguaggi o risorse. I provider FaaS possono eseguire codice nella maggior parte delle lingue e potete accelerare il processo di creazione usando le cache e i database offerti dal vostro provider.

Il modello FaaS è molto scalabile e la pianificazione della capacità è molto più semplice. Se avete bisogno di più risorse, potete semplicemente consultare le istruzioni del vostro provider FaaS per aggiornare il vostro utilizzo. Molti provider FaaS offrono una scalabilità orizzontale: in caso di picchi di utilizzo, il provider vi fornirà semplicemente risorse aggiuntive per far fronte al picco.

Inoltre, non dovrete preoccuparvi della manutenzione, del Disaster Recovery (DR) o della sicurezza.

Infine, il FaaS è molto efficiente. I fornitori vi addebitano solo le risorse che usare, quindi probabilmente pagherete molto meno per il FaaS che per il vostro hardware. Allo stesso modo, le vostre funzioni non vengono eseguite in background e rimangono inattive. Non dovrete nemmeno pagare per farle inattivare.

Quindi, il FaaS è un prodotto completo? Non proprio.

I Contro del Modello FaaS

Il modello FaaS elimina alcune delle maggiori sfide associate allo sviluppo di un programma, ma richiede anche di limitare notevolmente il vostro controllo. Non potete prendere molte decisioni sul server, sulla sicurezza o sul database utilizzato dal vostro codice. Spetta invece al vostro fornitore.

In modo analogo, il debug è spesso un po’ più difficile perché non avete il pieno controllo del sistema. Anche i test sono difficili, perché il codice FaaS non sempre si traduce senza problemi nell’ambiente di test.

Inoltre, dovete rispettare i rigidi requisiti del vostro fornitore FaaS. Le funzioni FaaS possono completare solo un’azione, quindi se non siete abituati a questo, dovrete cambiare il modo in cui voi e il vostro team scrivete il codice. Allo stesso modo, potrebbe essere necessario riscrivere il codice delle applicazioni esistenti per renderlo adatto all’implementazione FaaS, quindi FaaS è spesso più adatto ai nuovi programmi che a quelli vecchi.

Infine, scegliere il FaaS significa spesso impegnarsi a lungo termine con un unico fornitore. Quando costruite i vostri programmi, lavorate con il sistema e i requisiti del vostro fornitore. Naturalmente, cambiando fornitore potreste dover rifare parte del vostro lavoro e potenzialmente interrompere le vostre funzioni.

Pro e Contro

Pro Contro
Distribuire il codice più velocemente

Il provisioning richiede millisecondi

Codice in qualsiasi lingua

Disaster Recovery (DR) automatizzato

Efficiente dal punto di vista dei costi

Scalabile

Perdita di controllo sul server

Il debug è più difficile

I test richiedono più tempo

Siete vincolati al vostro fornitore

Dovete scrivere codice adatto al FaaS

FaaS vs SaaS, PaaS e IaaS

Ora che ne sapete di più sul FaaS, potreste chiedervi come si relaziona con le altre opzioni Anything as a Service (XaaS) come IaaS, SaaS e PaaS.

I servizi IaaS, PaaS e FaaS hanno scopi simili: aiutano le aziende a gestire le applicazioni in modo più economico ed efficace. Tuttavia, ogni opzione offre qualcosa di diverso.

L’Infrastruttura come Servizio (IaaS) vi permette di affittare la potenza di calcolo (come RAM e CPU). Con l’IaaS, dovete comunque gestire internamente alcune funzioni dell’applicazione (come la sicurezza).

La piattaforma come servizio (PaaS) vi permette di affittare strumenti hardware e software per costruire la vostra applicazione. Un esempio comune è AWS Elastic Beanstalk.

A differenza di IaaS e PaaS, FaaS vi permette di affittare uno spazio per eseguire funzioni in modo indipendente. Questa caratteristica lo rende più scalabile.

Ecco un breve riassunto di come funzionano i tre sistemi:

Grafico che spiega la differenza tra FaaS, IaaS e PaaS rispetto al sistema pre-cloud
Come il FaaS si differenzia da IaaS e PaaS (Fonte: thenewstack.io)

Il Software as a Service (SaaS) non è orientato alla creazione di applicazioni o programmi. Al contrario, vi permette di affittare le applicazioni in modo da non doverle costruire internamente. Ci sono migliaia di opzioni SaaS disponibili, dagli strumenti di analisi dei dati ai plugin SEO di WordPress.

Dimensioni del Mercato, Quote e Fornitori Principali

La crescita del FaaS riflette un cambiamento generale nel modo in cui le aziende sviluppano nuovi programmi.

Nei decenni precedenti, gli sviluppatori creavano grandi sistemi come progetti pluriennali. Oggi, molte organizzazioni privilegiano un approccio allo sviluppo di tipo Development Operations (DevOps). DevOps dà la priorità allo sviluppo e al miglioramento continuo di un programma, poco alla volta.

Grafico che mostra come funziona DevOps
Come funziona DevOps (Fonte: Atlassian)

Allo stesso modo, le organizzazioni usano sempre più spesso i servizi cloud per rendere le cose più sicure ed efficienti. Secondo Oracle, presto le organizzazioni archivieranno nel cloud una quantità di dati sensibili 600 volte superiore.

Questa tendenza è visibile nei dati raccolti da Statista su 7.164 dirigenti C-suite. Tra il 2019 e il 2021, l’uso di un singolo servizio di cloud pubblico o privato è diminuito e la maggior parte delle organizzazioni ha adottato più soluzioni cloud.

Grafico a barre sull’uso dei modelli di computing architecture nelle aziende globali tra 2019 e 2021
Utilizzo della tecnologia cloud (Fonte: Statista)

Anche gli investimenti nel cloud computing sono in crescita. Un altro studio condotto da Statista su centinaia di grandi imprese in tutto il mondo ha dimostrato che l’83% delle aziende intervistate investe annualmente più di 1,2 milioni di dollari nel cloud computing pubblico. Questa cifra è in aumento rispetto al 50% del 2019.

Le persone si rivolgono al FaaS perché è a prova di futuro e scalabile. Inoltre, offre una migliore produttività e prestazioni, un time-to-market più rapido per le app e un modo più economico per produrre nuovi programmi.

Questi vantaggi attraggono molti settori, tra cui le organizzazioni bancarie (o “BFSI”), i beni di consumo e la vendita al dettaglio, l’intrattenimento, le telecomunicazioni, i servizi informatici e tecnologici (ITES), la sanità e la produzione. Ecco quanto ogni settore contribuisce al mercato FaaS:

Grafico a torta sull’uso del FaaS in vari settori
Quali settori utilizzano il FaaS (Fonte: MarketsandMarkets)

A differenza del SaaS, non ci sono migliaia di fornitori FaaS tra cui le aziende possono scegliere. La stragrande maggioranza dei FaaS usa soluzioni offerte dai principali operatori, tra cui AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud e Cloudflare Workers.

Ora ci occuperemo di ciascuno di questi fornitori.

AWS Lambda

Lanciato da Amazon nel novembre 2014, AWS Lambda è uno strumento FaaS estremamente popolare. Nel quarto trimestre del 2021, il 33% degli utenti del cloud usava un servizio AWS.

Homepage di AWS Lambda
AWS Lambda

AWS Lambda offre un supporto nativo per molti linguaggi di programmazione, tra cui Node.js, C#, Python, Ruby, Go, Java e Powershell. Come abbiamo detto nel paragrafo “Cos’è la Function as a Service (FaaS)?” Alexa usa AWS Lambda.

Caratteristiche e Funzioni:

  • Si collega ad altri strumenti AWS
  • Monitora le prestazioni del vostro programma con Amazon CloudWatch
  • Oltre 200 integrazioni con strumenti SaaS
  • Potete distribuire container docker (AWS ha introdotto questa funzione nel dicembre 2020)

Pro:

  • Potete creare il vostro backend usando Lambda API o l’Amazon API gateway
  • Potete distribuire funzioni come immagini di container
  • Potete connettervi a database relazionali con Amazon RDS Proxy
  • Potete scegliere la quantità di memoria da dedicare a ciascuna funzione

Contro:

  • Se non usate già AWS, la configurazione richiederà molto tempo e fatica

Funzioni di Microsoft Azure

Microsoft Azure Functions è una funzionalità di Microsoft Azure, che Microsoft ha lanciato per la prima volta come “Windows Azure” nel febbraio 2010. Azure Functions consente di eseguire codice event-driven tramite FaaS. Nel quarto trimestre del 2021, il 21% degli utenti del cloud usava Azure.

Homepage di Microsoft Azure Functions
Microsoft Azure Functions

Caratteristiche e Funzioni:

  • Potete collegare le vostre funzioni a più di 250 connettori in Azure Logic Apps
  • Supporta JavaScript, C#, F#, Powershell, PHP, Python e Java
  • Fornisce molti tutorial per i nuovi utenti
  • Vi aiuta ad analizzare il vostro programma attraverso Azure Application Insights

Pro:

  • Azure Functions usa un modello di programmazione integrato
  • Ideale per i team che usano DevOps
  • Sono disponibili diversi piani

Contro:

  • Azure Functions non supporta Node.js o Ruby

Google Cloud Functions

Google Cloud è la terza soluzione di cloud computing più popolare dopo AWS e Azure. Attualmente ha una quota di mercato del 10%. Google Cloud Functions è una funzione FaaS di Google Cloud, un servizio che offre oltre 100 prodotti per una vasta gamma di utilizzi.

Pagina di Google Cloud Functions
Google Cloud

Caratteristiche e Funzioni:

  • Il debug e il logging sono integrati in Google Cloud Functions (tramite CloudTrace e CloudDebugger)
  • Potete usare i trigger da Google Assistant, Google Cloud, Firebase o da qualsiasi applicazione che usi HTTP
  • Google Cloud Functions si integra con molti partner di Google

Pro:

  • Chi desidera funzionalità multi-cloud o ibride può utilizzarlo
  • È open-source, quindi potete passare facilmente a un’altra piattaforma FaaS, se preferite
  • È molto facile da usare
  • Google fornisce molte risorse gratuite ai nuovi utenti

Contro:

  • I servizi basati su container di Google Cloud Function sono meno avanzati rispetto ad altri fornitori FaaS

IBM Cloud

IBM Cloud nasce da SoftLayer, una piattaforma di cloud pubblico che IBM ha acquistato nel giugno 2013. IBM ha trasformato la piattaforma in Bluemix e l’ha lanciata come strumento PaaS nel luglio 2014. Da allora, IBM ha ribattezzato il servizio con il nome di IBM Cloud e ne ha ampliato le funzionalità in FaaS.

Homepage di IBM Cloud
IBM Cloud

A partire dal quarto trimestre del 2021, il 4% degli utenti del cloud ha usato IBM Cloud. Funziona sull’ecosistema Apache OpenWhisk.

Caratteristiche e Funzioni:

  • Potete cercare contenuti video
  • Potete collegare il vostro programma ad altri programmi attraverso le API di IBM Watson
  • IBM offre funzioni precostituite per alcune attività comuni
  • Supporta Node.js, Python, Swift, PHP, Go, Ruby, Java e .NET Core

Pro:

  • Ottimo per la creazione di applicazioni mobili
  • Facile da imparare
  • Monitora la vostra applicazione attraverso IBM Cloud Monitoring

Contro:

  • Limita il tempo di memoria della vostra funzione a dieci minuti o a 2048 MB

Alibaba Cloud

Alibaba Cloud non è così conosciuto come altre opzioni di cloud computing, ma detiene comunque una discreta quota di mercato del 6%. Lanciato da Alibaba nel 2008, Alibaba Cloud si rivolge alle aziende online e a coloro che utilizzano gli altri servizi di Alibaba.

Homepage di Alibaba Cloud
Alibaba Cloud

Il FaaS è una delle offerte di Alibaba Cloud, insieme alla Content Delivery Network (CDN), all’archiviazione dei dati e all’elaborazione dei big data.

Caratteristiche e Funzioni:

  • Si integra con gli altri servizi informatici di Alibaba
  • A prova di disastro, poiché Alibaba ospita le funzioni su cluster in più aree
  • Transcodifica video
  • AI reasoning
  • Supporta Node.js, Python, Java, PHP e C#

Pro:

  • Offre un’opzione gratuita per chi non ha bisogno di eseguire molto codice
  • Altamente scalabile
  • Potete usare molti tipi di trigger

Contro:

  • Può essere difficile spostare le funzioni da Alibaba a un altro fornitore FaaS

Cloudflare Workers

Gestito da Cloudflare, Cloudflare Workers è un sistema FaaS adatto a chi si affaccia allo sviluppo e a chi vuole eseguire codice quasi istantaneamente. Cloudflare Workers offre un piano gratuito e prezzi scalabili.

Homepage di Cloudflare Workers
Cloudflare Workers

Caratteristiche e Funzioni:

  • Supporta JavaScript, C++, Rust e C
  • Potete archiviare immagini, PDF e altri file su Cloudflare Workers per distribuirli come risorse statiche
  • A prova di disastro, Cloudflare Workers usa una rete globale di server
  • Si integra con altri prodotti Cloudflare

Pro:

  • È più economico di molte altre opzioni FaaS
  • È facile da usare per chi è alle prime armi in ambito sviluppo
  • Potete iniziare a lavorare molto rapidamente
  • Cloudflare offre tutorial dettagliati e risorse che possono aiutarvi a costruire la vostra applicazione

Contro:

  • Cloudflare Workers è meno robusto di altre opzioni e più adatto a chi ha progetti di piccole dimensioni

Migliori Pratiche Faas

Sì, il FaaS è una tecnologia, ma è anche una mentalità che chi sviluppa deve adottare per creare programmi e applicazioni.

Per ottenere il massimo da FaaS, seguite queste buone pratiche:

  • Ricordate i limiti di FaaS. FaaS non è adatto a tutti i programmi e se cercate di creare un programma non adatto a FaaS con FaaS, vi costerà tempo, fatica e denaro.
  • Eseguite solo funzioni a singola azione su FaaS. Se eseguite funzioni con più azioni, interrompete l’ambiente isolato in cui le funzioni FaaS funzionano meglio. Questa interruzione rallenterà la vostra applicazione e ne ridurrà l’efficienza.
  • Non eseguite funzioni con dipendenze. Le dipendenze creano errori e problemi di scalabilità.
  • Osservate attentamente il tempo di caricamento. Il tempo di caricamento deriva dalle librerie o dalle funzioni che richiedono molta memoria. Un tempo di caricamento elevato rallenta il vostro programma e finisce per frustrare gli utenti.
  • Riducete il numero di connessioni al Relationship Database Management System (RDBMS) che usate. Queste connessioni aumentano il tempo necessario alle funzioni per funzionare e introducono un punto di errore nel vostro programma.

Avete Bisogno del FaaS?

Il FaaS è una tecnologia innovativa e rivoluzionaria per alcuni, ma non per chiunque.

Le organizzazioni che ottengono il massimo dal FaaS sono disposte a costruire programmi con architetture di microservizi in cui ogni funzione fa solo una cosa. Queste funzioni devono lavorare in modo indipendente: se sono dipendenti, si incorre in problemi di scalabilità.

Se volete costruire un’applicazione con un’architettura monolitica o con funzioni che dipendono l’una dall’altra, il FaaS potrebbe non funzionare bene. Allo stesso modo, se non volete impegnarvi a lungo termine con un unico fornitore, il FaaS potrebbe essere una scelta poco lungimirante.

Naturalmente, potete sempre sfruttare la tecnologia cloud senza FaaS. Per esempio, potreste investire in PaaS o IaaS per esternalizzare alcune funzioni della vostra applicazione nel cloud. Questa opzione vi offrirebbe alcuni dei vantaggi in termini di costi ed efficienza del cloud computing, ma non dovreste costruire il vostro programma all’interno delle restrizioni del modello FaaS.

In alternativa, se non avete bisogno di creare un programma che faccia qualcosa di altamente di nicchia o specializzato, considerate di investire in uno strumento SaaS. Alcuni strumenti SaaS sono anche open-source, quindi potreste essere in grado di adattare uno strumento esistente alle vostre esigenze.

Riepilogo

Il FaaS non è una noia tecnica o una nuova tendenza. È una tecnologia scalabile di cui ci si deve aspettare una maggiore diffusione nel prossimo decennio.

Spiegare il FaaS a volte può sembrare difficile, ma il FaaS è semplicemente un servizio che permette a chi sviluppa di scrivere ed eseguire codice usando un’infrastruttura gestita da qualcun altro. Molti servizi che usate regolarmente, come Alexa, usano il FaaS. I fornitori di FaaS più comuni sono IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions e Microsoft Azure Functions.

Sebbene il FaaS sia molto efficace per alcune aziende, non è adatto a chiunque. Il FaaS funziona meglio per l’esecuzione di codice isolato e senza stati che esegue una singola funzione.

Vorremmo passare il microfono (o la tastiera) a voi. Come usate il FaaS nella vostra azienda? Avete qualche consiglio da dare a chi si avvicina per la prima volta a questa tecnologia? Raccontatecelo nei commenti qui sotto.

Matteo Duò Kinsta

Redattore Capo presso Kinsta e Content Marketing Consultant per sviluppatori di plugin WordPress. Entra in contatto con Matteo su Twitter.