Cos'è il serverless?

Copia URL

Con serverless si intende un modello di sviluppo cloud native che consente agli sviluppatori di creare ed eseguire applicazioni senza gestire i server. Il termine "serverless" non indica l'assenza dei server, quanto piuttosto la loro astrazione dallo sviluppo applicativo. Le attività di routine per il provisioning, la manutenzione e la scalabilità dell'infrastruttura server vengono gestite da un provider di servizi cloud.

Con il serverless, gli sviluppatori creano pacchetti di codice all'interno di container per il deployment. Dopo il deployment le app serverless rispondono alle richieste e si adattano automaticamente in base alle diverse esigenze di scalabilità. L'utilizzo delle soluzioni serverless offerte dai provider di cloud pubblico viene solitamente misurato on demand tramite un modello di esecuzione basato su eventi, pertanto le funzioni serverless non costano nulla, quando non vengono utilizzate.

Scopri Red Hat OpenShift Serverless

I termini serverless computing e architettura serverless sono spesso considerati interscambiabili, ma in realtà indicano concetti diversi. Con serverless computing si fa riferimento al modello di sviluppo applicativo, mentre per architettura serverless si intende l'approccio alla progettazione di un'applicazione. 

Serverless computing 

Il serverless computing è diverso dagli altri modelli di cloud computing, poiché il provider di servizi cloud è responsabile di gestire sia l'infrastruttura cloud che la scalabilità delle app. Anziché dover occuparsi del provisioning e della manutenzione dei server, è possibile eseguire le applicazioni su risorse di computing gestite in automatico e fornite dai provider di servizi cloud. Il serverless computing è basato sugli eventi, scalabile in automatico e, in genere, soggetto a tariffe a consumo. Le app serverless vengono distribuite in container che vengono avviati on demand al momento della chiamata.

In un modello di cloud computing Infrastructure-as-a-Service (IaaS) standard, gli utenti acquistano unità di capacità, ovvero pagano a un provider di cloud pubblico i componenti server che sono utilizzati per l'esecuzione delle proprie applicazioni e che sono sempre attivi. L'utente è responsabile di aumentare la capacità del server durante i picchi di domanda e ridurla quando non occorre più. L'infrastruttura cloud necessaria per l'esecuzione di un'applicazione rimane attiva anche quando quest'ultima non è in uso.

Tipi di serverless computing

Il serverless computing può rientrare in diverse categorie.

  • Function-as-a-Service (FaaS): il modello FaaS prevede l'esecuzione di funzioni basate sugli eventi in container a breve termine. Non richiede la gestione di istanze server, e l'esecuzione avviene solo quando avviata.
  • Backend-as-a-Service (BaaS): l'approccio BaaS offre servizi back end completamente gestiti per l'autenticazione, i database, la messaggistica e lo storage. Viene spesso utilizzato per applicazioni web e mobile.
  • Database serverless: i database serverless sono scalabili in automatico e non richiedono la gestione dell'infrastruttura.
  • Container serverless: i container serverless vengono eseguiti senza provisioning manuale e sono scalabili dinamicamente.
  • Edge computing serverless: l'edge computing serverless esegue il codice in una posizione più vicina a quella degli utenti per ridurre la latenza.

Architettura serverless

Con architettura serverless si intende un approccio alla progettazione in cui le app vengono avviate solo se necessario. Quando un evento attiva l'esecuzione del codice, il provider di cloud pubblico assegna le risorse per tale codice e l'utente paga il servizio solo fino alla fine dell'esecuzione. L'approccio serverless sottrae inoltre gli sviluppatori ai compiti legati alla scalabilità delle app e al provisioning dei server. Attività di routine quali gestione del sistema operativo e file system, applicazione delle patch di sicurezza, bilanciamento del carico e gestione della capacità vengono affidate al provider di servizi cloud. È possibile realizzare un'applicazione completamente serverless oppure in parte serverless e in parte costituita da microservizi convenzionali.

Il concetto di architettura serverless che include microservizi è indicato dal termine "microservizi serverless". Con i microservizi serverless, l'architettura serverless consente agli sviluppatori di scrivere il codice, mentre i microservizi suddividono l'applicazione in componenti più piccoli e gestibili. Questa combinazione può avere come risultato uno sviluppo e un deployment più rapidi. 

Risorse da Red Hat

Vantaggi

  • Delega delle attività di gestione dei server: senza la necessità di occuparsi del provisioning, della manutenzione e della scalabilità dei server, gli sviluppatori hanno più tempo da dedicare alle proprie applicazioni.
  • Convenienza economica: con una tariffa a consumo, paghi solo per l'uso effettivo delle funzionalità, riducendo quindi i costi delle risorse inutilizzate.
  • Sviluppo e deployment più rapidi: la produttività degli sviluppatori cresce, grazie a una gestione ridotta dell'infrastruttura e deployment che richiedono una configurazione minima.
  • Scalabilità automatica: le funzioni e i servizi vengono ridotti o ampliati in base alla domanda.
  • Sicurezza integrata: le patch e gli aggiornamenti di sicurezza vengono gestiti dal provider, riducendo i rischi legati alle configurazioni errate dei server.

Svantaggi

  • Complessità dell'architettura: i flussi di lavoro basati sugli eventi possono diventare complessi a causa delle numerose funzioni che interagiscono in modo asincrono.
  • Limitazioni all'interazione: i provider di servizi cloud potrebbero imporre limitazioni all'uso dei loro componenti, riducendo quindi la flessibilità.
  • Vendor lock in: i servizi serverless che sono strettamente integrati negli ecosistemi dei fornitori di servizi cloud possono rendere complessa la migrazione.

Scenari di utilizzo del modello serverless

L'architettura serverless è perfetta per le applicazioni stateless asincrone che possono essere avviate istantaneamente. È ottimale anche per gli scenari di utilizzo che comportano picchi di domanda improvvisi e imprevedibili.

Alcuni esempi includono l'elaborazione batch dei file di immagine in arrivo, che può essere richiesta raramente ma deve essere disponibile quando arriva un grosso batch di immagini da elaborare contemporaneamente, oppure il monitoraggio delle modifiche a un database, che richiedono l'applicazione di una serie di funzioni, come i controlli per verificare che rispettino gli standard di qualità o la loro conversione automatica.

Le app serverless sono anche adatte agli scenari di utilizzo che prevedono flussi di dati in entrata, chatbot, attività pianificate o logica di business.

Gli altri scenari di utilizzo comuni del modello includono le interfacce di programmazione delle applicazioni (API) back end e le app web, l'automazione dei processi di business, i siti web serverless e l'integrazione fra più sistemi.

In un modello serverless, un provider cloud esegue i server fisici allocando le proprie risorse per conto degli utenti, che possono distribuire il codice direttamente nell'ambiente di produzione.

FaaS, il modello serverless più comune incentrato sulle funzioni basate sugli eventi, consente agli sviluppatori di scrivere una logica personalizzata sul lato server che sia distribuita in container completamente gestiti da un provider di servizi cloud. Tali container sono: 

  • Stateless, quindi semplificano l'integrazione dei dati.
  • Temporanei, perciò possono essere eseguiti per un breve periodo di tempo.
  • Attivati da eventi, ossia vengono eseguiti automaticamente quando necessario.
  • Completamente gestiti, così paghi solo per ciò che usi.

Con il modello FaaS, gli sviluppatori hanno un controllo maggiore e possono richiamare le funzioni tramite le API, gestite dal provider cloud con un gateway API.

I principali fornitori cloud offrono soluzioni FaaS, tra cui AWS Lambda, Azure Functions, Google Cloud e IBM Cloud Functions. Alcune aziende utilizzano piattaforme open source come Red Hat® OpenShift® Serverless (basato su Knative) per eseguire i propri ambienti FaaS.

Opposto al FaaS è il modello BaaS, la controparte legata ai servizi back end che offre agli sviluppatori l'accesso a servizi di terze parti come autenticazione, crittografia e database, solitamente tramite API. L'approccio BaaS semplifica le attività di back end, ma offre un controllo limitato sulla logica personalizzata delle applicazioni.

Scopri di più sul FaaS

Kubernetes è una nota piattaforma di gestione delle applicazioni containerizzate, che però non supporta in modo nativo i carichi di lavoro serverless. Knative è un progetto open source che aggiunge i componenti necessari per il deployment, l'esecuzione e la gestione di applicazioni serverless su Kubernetes.

Knative abilita gli ambienti serverless consentendo di distribuire il codice su piattaforme Kubernetes come Red Hat OpenShift. Con Knative gli utenti creano pacchetti di codice come immagini del container, e il sistema avvia e arresta in automatico le istanze in base alla domanda.

Knative ha tre componenti principali:

  • Creazione: converte il codice sorgente in container.
  • Fornitura: in automatico, distribuisce ed espande su larga scala i container in base alle richieste.
  • Eventi: gestisce gli eventi provenienti da varie sorgenti, come applicazioni, servizi cloud, sistemi Software-as-a-Service (SaaS)flussi per Apache Kafka, per attivare le funzioni.

A differenza delle soluzioni serverless tradizionali, Knative supporta un'ampia gamma di carichi di lavoro, dalle app monolitiche ai microservizi fino alle piccole funzioni. Può essere eseguito su qualsiasi piattaforma basata su Kubernetes, inclusi gli ambienti on premise.

Knative offre alcuni vantaggi chiave.

  • Carichi di lavoro serverless e microservizi supportati: è possibile distribuire all'interno di Kubernetes funzioni stateless basate sugli eventi, ma anche microservizi a lungo termine, scalabili in modo dinamico, che non richiedono la manutenzione manuale delle istanze server.
  • Ottimizzazione di costi e risorse: a differenza dei microservizi tradizionali, in cui spesso i pod sono sempre in esecuzione, Knative supporta la riduzione a zero, ossia dealloca le risorse che non sono richieste per ridurre i costi.
  • Flessibilità e API standardizzate: Knative segue pattern Kubernetes native e funziona su più provider cloud.

Knative unisce le potenzialità del serverless computing a Kubernetes, semplificando il deployment e la gestione dei carichi di lavoro serverless.

Crea un'architettura serverless con Knative

Red Hat OpenShift Serverless consente di creare e distribuire applicazioni serverless più rapidamente, senza la preoccupazione di dover gestire l'infrastruttura. Offre una piattaforma serverless di livello aziendale, per la massima portabilità e coerenza fra ambienti ibridi e multicloud. 

Con OpenShift Serverless, gli sviluppatori possono creare applicazioni cloud native e source centric usando una serie di Custom Resource Definitions (CRD) e i relativi controller in Kubernetes. Semplifica, inoltre, il lavoro dei team operativi, poiché si installa facilmente su Red Hat OpenShift, è stato testato con gli altri prodotti Red Hat e consente di accedere ai servizi del pluripremiato supporto tecnico.

OpenShift Serverless agevola sviluppo e installazione di app serverless, grazie all'integrazione delle applicazioni con altri servizi di Red Hat OpenShift Container Platform, come Red Hat OpenShift Service Mesh e il monitoraggio del cluster. Gli sviluppatori possono utilizzare un'unica piattaforma dove ospitare i loro microservizi e le applicazioni esistenti e serverless. Le applicazioni vengono raggruppate come container Linux® da poter eseguire ovunque. 

Crea una funzione su OpenShift Serverless

Hub

Il blog ufficiale di Red Hat

Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Cos'è la migrazione delle applicazioni?

La migrazione delle applicazioni è un processo capace di migliorare i carichi di lavoro trasferendo un'applicazione da un ambiente all'altro.

Integrated Development Environment (IDE)

Un IDE, o ambiente di sviluppo integrato, è un software progettato per la realizzazione di applicazioni che aggrega strumenti di sviluppo comuni in un'unica interfaccia utente grafica.

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.

Sviluppo e distribuzione delle applicazioni: risorse consigliate

Articoli correlati