Accedi / Registrati Account

Applicazioni cloud native

Cos'è il FaaS (Function-as-a-Service) computing?

Function-as-a-Service, o FaaS, è un modello di cloud computing basato su eventi, che viene eseguito in container stateless; le funzioni gestiscono la logica e lo stato sul lato server utilizzando i servizi. 

Questo modello consente agli sviluppatori di creare, eseguire e gestire i pacchetti applicativi come funzioni, senza doversi occupare della propria infrastruttura.

FaaS è una modalità di esecuzione dell'elaborazione serverless, con la quale gli sviluppatori scrivono la logica di business che viene eseguita in container Linux totalmente gestiti da una piattaforma.

In genere questa piattaforma si trova nel cloud, ma il modello si sta espandendo per integrare deployment on premise e ibridi.

Nel modello serverless, gli sviluppatori non si occupano dei problemi legati all'infrastruttura, come la gestione o il provisioning dei server o l'allocazione delle risorse. Tali attività sono delegate a una piattaforma come Red Hat OpenShift, che consente agli sviluppatori di dedicarsi alla scrittura del codice e alla realizzazione del valore aziendale.

Una funzione è un elemento software che esegue la logica di business. Le applicazioni sono costituite da numerose funzioni.

L'impiego di un modello FaaS è una delle modalità per realizzare un'app con un'architettura serverless, ma la maggiore diffusione del concetto di serverless computing spinge gli sviluppatori alla ricerca di soluzioni che supportano la creazione di microservizi serverless e di container stateless.

Alcuni esempi di FaaS molto diffusi sono:

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions (open source)
  • OpenFaaS (open source)

Come funziona il modello Function-as-a-Service?

FaaS offre agli sviluppatori un'astrazione per eseguire le applicazioni in risposta a eventi, senza gestire i server. Ad esempio, l'upload di un file genera un codice personalizzato che transcodifica il file in diversi formati.

L'infrastruttura FaaS viene in genere utilizzata on demand, principalmente mediante un modello di esecuzione basato su eventi; in questo modo è presente quando necessario, senza tuttavia richiedere l'esecuzione costante dei processi server in background, come accade con il modello PaaS (Platform-as-a-Service)

Le moderne soluzioni PaaS offrono capacità serverless integrate nei comuni flussi di lavoro utilizzati dagli sviluppatori per distribuire le applicazioni, rendendo meno evidenti i confini tra PaaS e FaaS. 

Nella realtà, le applicazioni moderne sono composte da una combinazione di funzioni, microservizi e servizi a lunga esecuzione.

Un provider cloud rende la funzione disponibile e gestisce l'allocazione delle risorse. Essendo basate sugli eventi e non sulle risorse, le funzioni sono facilmente scalabili.

Esistono vincoli architettonici per poter sfruttare alcuni di questi vantaggi, ad esempio limiti di tempo per l'esecuzione di una determinata funzione; per questa ragione, una funzione deve poter essere avviata ed eseguita rapidamente. 

Le funzioni si avviano in millisecondi ed elaborano le singole richieste. In presenza di numerose richieste simultanee, il sistema crea il numero di copie della funzione necessarie per soddisfare la domanda.

Al diminuire della domanda, l'applicazione procede automaticamente con l'eliminazione delle copie non necessarie. La scalabilità dinamica è un vantaggio del modello FaaS; è anche conveniente, poiché i provider addebitano solo il costo delle risorse utilizzate e non dei tempi morti.

Nell'esecuzione on premise, questa dinamicità può aumentare la densità della piattaforma, consentendo l'esecuzione di più carichi di lavoro e l'ottimizzazione del consumo delle risorse.

Un servizio basato su eventi che richiede la scalabilità orizzontale può funzionare bene sia come funzione sia come applicazione RESTful. 

Il modello FaaS è perfetto per transazioni con volumi elevati, carichi di lavoro con frequenza sporadica come la generazione di report, l'elaborazione di immagini o attività programmate. Esempi di utilizzo comuni sono l'elaborazione dei dati, i servizi IoT, le app mobile o web.

FaaS consente di realizzare un'applicazione totalmente serverless oppure in parte serverless e in parte costituita da componenti di microservizi convenzionali.

I vantaggi di FaaS

  • Maggiore produttività degli sviluppatori e tempi di sviluppo più rapidi
  • Nessuna responsabilità per la gestione dei server
  • Scalabilità facilitata, con estensione orizzontale gestita dalla piattaforma
  • Vengono addebitate solo le risorse consumate
  • È possibile scrivere le funzioni utilizzando qualsiasi linguaggio di programmazione

Quali sono le differenze tra FaaS e serverless computing?

Inizialmente, FaaS e serverless indicavano concetti piuttosto simili. Nel tempo, il significato di serverless si è ampliato per includere un insieme più vasto di schemi e pratiche architetturali che utilizzano in modo esteso servizi comuni in aggiunta alla logica di business personalizzata codificata in FaaS.

Il modello serverless può essere utilizzato dai microservizi e dalle app tradizionali, a condizione che questi siano containerizzati e rispettino i requisiti di scalabilità dinamica e gestione dello stato. 

Il termine "serverless" viene utilizzato anche per indicare servizi gestiti come database e sistemi di messaggistica, che non prevedono l'intervento di uno sviluppatore o di un amministratore perché sono, appunto, gestiti da un provider cloud o da un'azienda terza.  

La combinazione di servizi FaaS e servizi di back-end comuni, come database, messaggistica e autenticazione, connessi principalmente tramite un'architettura basata su eventi, è ciò che consente agli sviluppatori in ambito serverless di ottenere i maggiori vantaggi.

Kubernetes: la base del serverless computing

Red Hat OpenShift Logo

Una piattaforma per container e Kubernetes che velocizza il deployment delle applicazioni cloud native.

Red Hat OpenShift Application Runtimes logo

Una selezione di runtime e framework di applicazioni ottimizzati per lo sviluppo di app cloud native.

Altri utilizzi di FaaS