L'ultima in ordine di tempo è stata Oracle con il progetto
open source Fn, lanciato dall'OpenWorld di San Francisco insieme ad
altre novità: oggi tutti i principali cloud provider hanno una loro offerta di
serverless computing. O, come alcuni preferiscono chiamarla in stile "aaS", di
Functions-as-a-Service. Provider come AWS (con AWS Lambda), Google (con le Cloud Functions) o Microsoft (con le Azure Functions) considerano il serverless computing come un elemento chiave nella crescita dello sviluppo in cloud, ma per molte imprese il concetto in sé e le possibili applicazioni non sono proprio evidenti. Anche perché si tratta di un campo realtivamente nuovo in cui le cose cambiano velocemente.
Il serverless computing non è ovviamente davvero senza server. L'espressione nasce perché contrariamente al modello di sviluppo cloud più tradizionale non ci si deve preoccupare di definire prima le caratteristiche delle macchine virtuali o dei container che muoveranno la nostra applicazione. Di questo aspetto
si occupa direttamente l'ambiente cloud, a noi sta solo creare il codice che esegue i compiti desiderati.
L'unità base dell'approccio serverless è la
funzione: un blocco di codice che esegue un compito ben preciso e che si attiva al verificarsi di eventi altrettanto specifici. A quel punto la piattaforma cloud
attiva autonomamente le risorse di computing e storage che servono a eseguire la funzione e le varia a seconda delle necessità. Quando la funzione si completa, le risorse allocate sono disattivate e tutto torna allo stato "silente" di prima. Il modello ha due importanti vantaggi: gli sviluppatori devono pensare solo al codice e non all'infrastruttura, la gestione automatizzata è più semplice e garantisce che non ci siano risorse
allocate inutilmente.
Questo approccio non sarebbe probabilmente mai nato se per le applicazioni cloud-native non ci si fosse spostati decisamente verso un
modello a microservizi. Se si crea un'applicazione assemblando più servizi diversi che hanno compiti ben specifici, realizzare proprio tali servizi attraverso funzioni è un passo logico conseguente.
Ma, proprio come i microservizi, il serverless computing va bene in alcuni casi e meno bene in altri. Innanzitutto è complesso trasformare applicazioni tradizionali in collezioni di funzioni che operino seguendo la medesima logica, quindi il FaaS è intrinsecamente
legato al mondo cloud. In secondo luogo i vantaggi delle funzioni si realizzano se queste possono davvero comportarsi come devono, attivandosi e disattivandosi in maniera indipendente fra loro e dalle attivazioni precedenti e successive. Il FaaS è cioè "
stateless", non mantiene lo stato degli elementi su cui interviene. Non ha una "memoria" e se bisogna dargliela si devono attivare risorse parallele (database, cache...) che complicano lo sviluppo.
Infine, di norma tutti i servizi FaaS pongono un limite a quanto una funzione può restare attiva, di solito
qualche minuto al massimo. E non si possono sviluppare funzioni in un linguaggio qualsiasi, anche se i principali (Java, Python, PHP, C#, JavaScript...) sono quasi sempre supportati.
Per tutte queste caratteristiche le funzioni sono oggi usate soprattutto come elemento di
raccordo e integrazione fra altre applicazioni o servizi. E in ambienti che si basano intrinsecamente su una logica a eventi, come ad esempio quelli collegati a Internet of Things o alle applicazioni mobili.