In questo articolo parleremo del paradigma serverless e del servizio AWS Lambda. Scopriremo come un colosso del calibro di Netflix serve centinaia di milioni di utenti in tutto il mondo in modo scalabile e sicuro usando dei microservizi.
Cosa vuol dire il serverless? Cos’è una funzione Lambda? Come usa Netflix il servizio AWS Lambda?
Indice degli argomenti
Quando parliamo di cloud computing parliamo a tutti gli effetti di paradigma serverless.
Partiamo dalle basi: il termine Serverless deriva dall’unione delle parole “server” e “less”, e letteralmente vuol dire “senza server”. Il “senza server” ha cambiato non solo il modo in cui utilizziamo applicazioni e servizi web, ma soprattutto, il nostro modo di pensare e progettare gli stessi.
È per questo motivo che parliamo di un vero e proprio paradigma, perché il serverless si è imposto come la nuova base da cui partire nello sviluppo di applicazioni e servizi web resilienti.
Scopriamo quindi cos’è il paradigma serverless e come funziona.
Il paradigma serverless può essere sintetizzato in quattro concetti chiave:
Questo modo rivoluzionario di approcciarsi alle risorse informatiche permette alle imprese di concentrare gli sforzi sul cuore della loro attività: lo sviluppo.
Avere l’opportunità di servirsi di un’infrastruttura solida e flessibile senza impegnarsi in onerosi investimenti iniziali è un vantaggio competitivo ormai imprescindibile per le imprese, perché, ad esempio, dà spazio a quegli imprenditori innovativi che altrimenti avrebbero la strada sbarrata a causa degli elevati costi dell’hardware.
Il serverless permette inoltre di ridurre il time-to-market dei prodotti digitali e migliorare continuamente il prodotto utilizzando il tempo risparmiato dalle attività non creative come il provisioning, la ricerca di finanziamenti e la manutenzione.
Per questi ed altri motivi il serverless è un forte incentivo verso le startup ad alto tasso tecnologico, sempre più bisognose di irrompere nel mercato in modo rapido e sorprendente per soddisfare le crescenti esigenze degli “utenti 2.0”.
Ma startup a parte, moltissimi player internazionali si avvantaggiano di questo nuovo paradigma per distribuire applicazioni e servizi nel modo più semplice, veloce ed affidabile possibile.
Ad esempio Netflix, che non ha bisogno di presentazioni, poggia gran parte della sua imponente infrastruttura informatica sul servizio di cloud computing Amazon Web Services.
“I sistemi operativi hanno permesso l’astrazione della gestione dell’hardware, e grazie alle API di AWS, per la prima volta siamo in grado di controllare in modo programmatico l’intera infrastruttura dei sistemi attraverso un nuovo livello di astrazione“
-Neil Hunt, ex Chief Product Officer di Netflix
Il colosso statunitense dello streaming ci fornisce un importante esempio di come il serverless computing possa fare la differenza in termini di scalabilità dell’infrastruttura informatica.
Netflix usa dei microservizi progettati su AWS Lambda per gestire una serie di attività in modo automatico, tra le quali:
E se visti così possono sembrare solo quattro piccoli punti in una lista, possiamo affidarci ai numeri per contestualizzare la grandezza ed il peso di queste operazioni in termini di potenza di calcolo.
Netflix vanta 167 milioni di utenti in tutto il mondo e nel solo 2014 il suo catalogo conteneva già 7 miliardi di ore di video.
Se questo non bastasse ad impressionarvi, secondo un recente report, Netflix consuma circa il 12,6% della banda mondiale. Niente male per un servizio di streaming nato soltanto 12 anni fa.
Ma cos’è AWS Lambda?
Scopriamo di cosa si tratta per capire come funziona e come semplifica la vita di colossi del calibro di Netflix.
AWS Lambda è un servizio di cloud computing che permette l’esecuzione di codice in risposta ad eventi senza la necessità di configurare server o componenti di rete. Si parla infatti di Event-driven compute o code on demand.
Le principali caratteristiche di AWS Lambda sono:
Adesso proviamo a capire come funziona utilizzando un esempio pratico.
Per spiegare il funzionamento di Lambda utilizzerò un esempio molto basilare.
Abbiamo già detto che Lambda è l’esecuzione di codice in risposta ad eventi. Il più semplice ciclo di funzionamento di Lambda può quindi svilupparsi in questo modo:
Nell’esempio che segue, la mia funzione Lambda avrà il compito di creare le anteprime delle foto che vengono caricate sulla mia app.
Cominciamo con la prima fase: l’evento.
L’evento che aziona la mia funzione Lambda, il cosidetto trigger, è l’upload della foto all’interno di un bucket S3.
Quindi, ogni volta che un utente carica una foto sulla mia app, la mia funzione Lambda viene azionata.
Nella seconda fase del ciclo, Lambda esegue il mio codice su una macchina gestita da AWS creando l’anteprima della foto.
Non appena l’operazione viene conclusa, Lambda mi restituisce una risposta:
In questo modo si conclude il ciclo di funzionamento e la mia funzione Lambda termina.
Cos’è successo dunque?
Ho ottenuto le anteprime per la mia applicazione, ma è stato Lambda a gestire cpu, banda e sistemi operativi per conto mio.
E grazie alle caratteristiche di cui abbiamo parlato sopra, ad esempio l’autoscaling, non devo preoccuparmi se la mia applicazione raggiunge i migliaia di utenti che caricano migliaia di foto. Sarà AWS a gestire automaticamente la quantità di risorse da allocare alla mia funzione Lambda in base al numero di eventi che la azionano.
Quindi, posso gestire i picchi di traffico senza preoccuparmi di fare il provisioning delle risorse e senza rischiare sovraccarichi.
Ma attenzione, Lambda non è pensato per ogni tipo di applicazione.
ll servizio Lambda è progettato per contesti in cui non viene richiesta una grande potenza di calcolo ed un uso intensivo di memoria. L’esempio della creazione delle anteprime è infatti un caso d’uso comune proprio perché si tratta di un’operazione “leggera” in termini di potenza di calcolo.
Tra i limiti di default del servizio Lambda troviamo infatti:
In pratica, non posso utilizzare Lambda per eseguire un algoritmo di Machine Learning, perché in genere queste operazioni comportano l’analisi di grandi quantità di dati e richiedono un tempo di esecuzione molto lungo.
Lambda risulta essere infatti il miglior sistema per l’esecuzione di “codice intermedio”, e nell’architettura di un’applicazione serverless è praticamente indispensabile per un’efficace comunicazione tra i diversi servizi cloud AWS.
Leggi il Case Study per approfondire il funzionamento di Lambda e dei microservizi serverless.
Case Study: il connettore Hubspot – Zoho
Costruiamo insieme il tuo successo
Ascolta l'articolo |
Angelo Lombardo