Jump to section

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

Copia URL

Function-as-a-Service, o FaaS, è un tipo di servizio di cloud computing che consente agli sviluppatori di creare, eseguire e gestire i pacchetti applicativi come funzioni, senza dover mantenere un'infrastruttura propria.

FaaS, è un modello di esecuzione basato su eventi, che viene eseguito in container stateless; le funzioni gestiscono la logica e lo stato sul lato server utilizzando i servizi di un provider FaaS.

Le soluzioni FaaS sono disponibili sui principali cloud pubblici; il provisioning può essere eseguito on premise, garantendo un aumento netto delle capacità ai reparti IT enterprise che si occupano di sviluppo delle app. Scarica la guida alla tua strategia cloud native per implementare un approccio serverless con FaaS.

Alcuni esempi di FaaS molto diffusi sono:

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

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

Sebbene sia tipicamente una piattaforma di cloud computing che utilizza servizi di cloud computing, il modello si sta espandendo così da includere anche 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 su un sistema operativo. 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.

FaaS offre agli sviluppatori un'astrazione per eseguire le applicazioni web 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 misurata on demand dal provider di servizi, 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 platform-as-a-service (PaaS).  

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à, intere applicazioni sono composte da una combinazione di funzioni, microservizi e servizi a lunga esecuzione.

Un provider rende la funzione disponibile tramite una interfaccia di programmazione delle applicazioni (API) e gestisce l'allocazione delle risorse. Essendo basate sugli eventi, le funzioni sono facilmente scalabili e la scalabilità consente di ottenere maggiore efficienza e valore aziendale.

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 e della funzionalità delle risorse.

Un servizio basato su eventi che richiede la scalabilità orizzontale può funzionare bene come funzione, così come le applicazioni RESTful

Il modello FaaS è perfetto per transazioni con volumi elevati e 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 e 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 per sfruttare appueno le tecnologie più recenti e sistemi di orchestrazione dei container come Kubernetes.

  • 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 e in base alle esigenze
  • È possibile scrivere le funzioni utilizzando qualsiasi linguaggio di programmazione

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.

Keep reading

ARTICOLO

Stateful e stateless

La condizione di stateful o stateless di un elemento dipende dalla durata della registrazione dell'interazione con l'elemento stesso e dalle modalità di memorizzazione di questa informazione.

ARTICOLO

Cos'è Quarkus?

Quarkus è uno stack Java Kubernetes native realizzato per le macchine virtuali Java (JVM) e per la compilazione nativa, che ottimizza Java specificamente per i container.

ARTICOLO

Cos'è il serverless computing?

Il serverless computing è un modello di sviluppo cloud native che consente agli sviluppatori di creare ed eseguire applicazioni senza gestire i server.

Scopri di più sulle applicazioni cloud native

Prodotti

Una piattaforma applicativa aziendale che offre servizi verificati per consentire la distribuzione delle app sulle infrastrutture preferite.

Risorse

White paper

Panoramica di Red Hat sullo sviluppo cloud native

Ebook

Il percorso verso le applicazioni cloud native

EBOOK

Cloud native e cloud ibrido: come definire la tua strategia.

Formazione

Formazione gratuita

Developing Cloud-Native Applications with Microservices Architectures