Function as a service (FaaS) è una categoria di servizi di cloud computing che fornisce una piattaforma che consente ai clienti di sviluppare, eseguire e gestire funzionalità di un'applicazione senza la complessità di dover creare e mantenere l'infrastruttura tipicamente associata allo sviluppo e al lancio di un'app.[1]
Lo sviluppo di un'applicazione secondo questo modello permette di ottenere un'architettura serverless e viene tipicamente utilizzata quando si creano applicazioni costituite da microservizi.
FaaS inizialmente veniva offerto da varie start-up intorno al 2010, come PiCloud.[2]
AWS Lambda è stata la prima offerta FaaS da parte di un grande fornitore di cloud pubblico, seguita da Google Cloud Functions, Microsoft Azure Functions, OpenWhisk (open source) di IBM/Apache nel 2016 e Oracle Cloud Fn (open source).[3]
Le FaaS spesso si basano su piattaforme e framework proprietari dei fornitori di servizi cloud. Ciò può limitare la flessibilità e la portabilità, poiché la migrazione a un altro fornitore o l'integrazione con i sistemi esistenti potrebbe diventare complessa.[4]
I casi di utilizzo di FaaS sono associati ad una funzionalità "on demand" che consente di spegnere l'infrastruttura di supporto e di non sostenere alcuna spesa quando non è in uso.
Le principali funzioni riguardano la trasformazioni dei dati come[5]:
I servizi di hosting di applicazioni Platform as a service (PaaS) sono simili a FaaS in quanto permettono agli sviluppatori di non dover configurare e gestire l'infrastruttura server; tuttavia, tali servizi hanno in genere sempre almeno un processo server in esecuzione che riceve richieste esterne ma sono gestiti in maniera automatizzata dal servizio.[6]
FaaS non richiede l'esecuzione costante di alcun processo del server. La gestione di una richiesta iniziale può richiedere più tempo rispetto ad una piattaforma di hosting di applicazioni (fino a diversi secondi), la cache però può consentire la gestione di richieste successive entro millisecondi.[7] Poiché gli sviluppatori pagano solo per il tempo di esecuzione delle funzioni - e nessun tempo di inattività del processo - si possono ottenere costi più bassi con una maggiore scalabilità a costo della latenza.