Accedi / Registrati Account

Applicazioni cloud-native

I vantaggi del serverless computing

Definiamo "serverless" (senza server) un modello di cloud computing in cui gli sviluppatori di applicazioni non devono occuparsi del provisioning dei server o della scalabilità delle proprie app; queste attività di routine vengono eseguite infatti dal provider cloud, consentendo agli sviluppatori di inviare il codice in produzione più rapidamente rispetto ai modelli tradizionali.

In sostanza l'approccio serverless consente agli sviluppatori di dedicarsi, non tanto all'infrastruttura, ma al codice. Lo chiamiamo "serverless" perché agli sviluppatori non interessano le specifiche del server. Naturalmente, i server restano presenti, ma vengono gestiti dal provider cloud.

Nello specifico, un provider cloud come Amazon o Google esegue i server fisici allocando dinamicamente le proprie risorse per conto di un utente, che può distribuire il codice direttamente nell'ambiente di produzione. Il concetto è simile in qualche modo a quello di un prodotto IaaS (Infrastructure-as-a-Service) di cloud pubblico, ma la differenza sostanziale sta nel fatto che vengono addebitati solo i costi delle risorse di elaborazione effettivamente utilizzate per l'esecuzione del codice.

Come funziona l'elaborazione serverless?

In un modello IaaS standard, l'utente acquista in anticipo unità di capacità, pagando quindi i componenti server sempre attivi necessari per l'esecuzione delle applicazioni. Il modello serverless funziona in modo differente: un evento attiva l'esecuzione del codice applicativo, quindi il provider cloud alloca le risorse per tale codice in modo dinamico e all'utente ne viene addebitato l'utilizzo fino al termine dell'esecuzione del codice. Oltre agli ovvi vantaggi in termini di costo ed efficienza, il metodo serverless evita agli sviluppatori le attività di routine e ripetitive associate alla scalabilità delle applicazioni e al provisioning del server.

L'elaborazione serverless prevede due metodi principali. Il primo è noto come Backend-as-a-Service (BaaS), nel quale l'applicazione è costituita da una serie di servizi e applicazioni di terze parti. Il secondo è detto Function-as-a-Service (FaaS), nel quale gli sviluppatori scrivono la logica personalizzata sul lato server, che viene tuttavia eseguita in container completamente gestiti da un provider cloud. I due metodi consentono di realizzare un'applicazione totalmente serverless oppure in parte serverless e in parte costituita da componenti di microservizi convenzionali.

Backend-as-a-Service (BaaS)

Il metodo BaaS, anche noto come Mobile Backend-as-a-Service (MBaaS), è un metodo di elaborazione serverless che si basa principalmente su applicazioni e servizi di terze parti. Un provider cloud può ad esempio offrire servizi di autenticazione, funzioni di crittografia aggiuntive, database accessibili dal cloud e dati di consumo altamente affidabili. L'accesso a questi servizi back-end avviene in genere con una chiamata a un'interfaccia di programmazione delle applicazioni (API) definita dal provider cloud; l'integrazione nei sistemi è più semplice rispetto allo sviluppo di queste funzionalità internamente all'azienda.

Function-as-a-Service (FaaS)

Il metodo Function-as-a-Service (FaaS) prevede un livello di controllo maggiore rispetto al BaaS, perché la logica sul lato server è scritta dagli sviluppatori. Completata la fase di scrittura, tuttavia, viene distribuita in container gestiti da un provider cloud: è questo il vantaggio principale dell'elaborazione serverless. I container, nello specifico, sono:

  • Stateless: semplificano l'integrazione dei dati.
  • Temporanei: possono essere eseguiti per un breve periodo di tempo.
  • Attivati da eventi: vengono eseguiti automaticamente quando necessario.
  • Totalmente gestiti da un provider cloud, affinché l'utente paghi solo per ciò che utilizza e non per server e applicazioni sempre attivi.

Quali sono i pro e i contro del serverless?

In primo luogo, il serverless accresce la produttività degli sviluppatori e riduce i costi operativi. Spostando le attività di routine relative al provisioning e alla gestione dei server sul provider cloud, agli sviluppatori resta più tempo da dedicare alle proprie applicazioni. Il vantaggio è maggiore quando tutti i componenti di terze parti dell'applicazione vengono integrati tramite BaaS, invece di essere scritti in azienda. In un modello serverless, i costi operativi risultano ridotti perché viene addebitato solo il tempo di calcolo effettivamente impiegato nel cloud, e non quello di esecuzione e gestione continuativa dei server enterprise.

Vanno tuttavia considerati anche alcuni aspetti più sconvenienti dovuti alla mancata esecuzione dei propri server o al mancato controllo sulla logica del lato server. Cedere il controllo di questi aspetti dello stack IT, ad esempio, può spingere verso il monopolio del fornitore. I provider cloud possono imporre limiti severi all'interazione con i propri componenti, limitando la flessibilità e la personalizzazione dei tuoi sistemi. La decisione di passare a un altro provider può comportare il costo di aggiornamento dei sistemi nel caso in cui questi debbano essere adeguati alle specifiche del nuovo fornitore.

Kubernetes: la base dell'elaborazione serverless

Cloud computing

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

Cloud computing

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

Scopri i vantaggi delle architetture serverless