Un’architettura serverless consente agli sviluppatori di concentrarsi sulla logica applicativa senza preoccuparsi della gestione dell’infrastruttura server. E’ quindi banalmente del codice che funziona sulla rete senza che lo sviluppatore abbia pensato all’infrastruttura server dove questo gira. Un esempio Γ¨ il processing di una chiamata API, o di un messaggio SQS/SNS, o il processing di un modifica ad un record in DynamoDB o, in generale, funzioni che vengono eseguite on-demand in risposta a eventi. In un sistema serverless, il cloud provider gestisce automaticamente l’infrastruttura, inclusi provisioning, scaling e manutenzione dei server: l’unica cosa che conosce lo sviluppatore Γ¨ l’entry point, tutto il resto Γ¨ delegato e trasparente. Gli sviluppatori scrivono .

Esempi di servizi serverless:

  • AWS Lambda (Amazon Web Services)
  • Azure Functions (Microsoft Azure)
  • Google Cloud Functions (Google Cloud)
  • IBM Cloud Functions

Un’architettura serverless ha molto senso per l’esecuzione di task brevi ed eventi sporadici, mentre per applicazioni a lungo termine o complesse ha senso un’infrastruttura classica.

Vantaggi e Svantaggi

Vantaggi di ServerlessSvantaggi di Serverless
ScalabilitΓ  automaticaCold start puΓ² aumentare latenza iniziale
Paghi solo per l’usoDifficoltΓ  a gestire processi complessi e persistenti
Minima gestioneLegato all’ecosistema del provider
RapiditΓ  di sviluppoDebugging e testing meno immediati
Alta disponibilitΓ Limitazioni di runtime e risorse per funzione
Vantaggi di Server ClassicoSvantaggi di Server Classico
Controllo completo sull’ambienteCosti fissi anche in caso di bassa attivitΓ 
Pieno accesso hardware e softwareNecessitΓ  di manutenzione continua
Adatto a task complessi e statelessScalabilitΓ  manuale
Ecosistema flessibileMaggior tempo per setup e configurazione

Esempio

Un esempio comune Γ¨ l’elaborazione di immagini caricate dagli utenti su un sito web. La funzione serverless puΓ² essere attivata dall’evento di caricamento di un’immagine su un bucket S3 (AWS).

  1. Un’immagine viene caricata in un bucket S3.
  2. AWS Lambda si attiva, ridimensiona l’immagine a 128x128 pixel e la salva in una cartella β€œresized” all’interno dello stesso bucket.