In che modo l'elaborazione serverless può migliorare le prestazioni? | Prestazioni Lambda

In un'architettura serverless, avere un maggior numero di punti di presenza ha un impatto notevolmente positivo sulle prestazioni.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Scopri di più su AWS Lambda, Lambda@Edge e Cloudflare Workers
  • Percepire le differenze di prestazioni tra le piattaforme
  • Comprendere il concetto di latenza e di punti di presenza

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

In che modo l'elaborazione serverless può migliorare le prestazioni?

Uno dei vantaggi del serverless computing è la possibilità di eseguire codice applicativo in qualunque luogo. Per definizione, in un'architettura serverless non esistono server di origine; pertanto, è possibile eseguire il codice in posizioni perimetrali geograficamente prossime agli utenti finali. Due piattaforme serverless che sfruttano questa capacità (e la conseguente riduzione della latenza) sono AWS Lambda@Edge e Cloudflare Workers. Misurando le prestazioni di Lambda rispetto a quelle di Cloudflare Workers e Lambda@Edge, è possibile osservare gli effetti della distribuzione di applicazioni serverless sul perimetro di rete I risultati dei test (di seguito) indicano che Cloudflare Workers offre solitamente una risposta più rapida.

Che cos'è AWS Lambda?

AWS Lambda è un servizio di infrastruttura serverless fornito da Amazon Web Services. Lambda ospita funzioni applicative basate su eventi (funzioni) scritte in diversi linguaggi, e le avvia e le esegue quando necessario.

Dove viene distribuito AWS Lambda?

AWS offre diverse regioni per il deployment in tutto il mondo. In genere, un'applicazione ospitata da Lambda viene eseguita in una sola di queste regioni.

Che cos'è AWS Lambda@Edge?

AWS Lambda@Edge è Lambda distribuito in tutte le regioni AWS distribuite a livello globale, anziché in una singola regione geografica locale. Sebbene Lambda supporti più linguaggi, le funzioni Lambda@Edge vengono eseguite su Node.js, un ambiente di runtime per l'esecuzione di JavaScript. Quando una funzione Lambda@Edge viene attivata, viene eseguita nella regione AWS più vicina all'origine dell'evento di attivazione, il che significa che viene eseguita il più vicino possibile alla persona o alla macchina che utilizza l'applicazione.

Ad esempio, supponiamo che un utente di Chicago richieda delle informazioni tramite un'applicazione con un'architettura serverless. Se l'infrastruttura dell'applicazione è ospitata tramite AWS Lambda nella regione US-East-1 (Virginia), la richiesta dovrà viaggiare fino a raggiungere un centro AWS in Virginia, e la risposta dovrà viaggiare fino a tornare a Chicago. Ma se l'applicazione è ospitata tramite AWS Lambda@Edge, la richiesta e la risposta dovranno viaggiare solo da e verso la regione AWS più vicina, la US-East-2, che si trova in Ohio. Questa diminuzione della distanza riduce la latenza rispetto a AWS Lambda.

AWS Lambda@Edge e Cloudflare Workers a confronto

Similmente a AWS Lambda@Edge, i Cloudflare Workers sono funzioni JavaScript basate su eventi, e risiedono in datacenter dislocati in tutto il mondo. Tuttavia, esistono molte differenze importanti tra questi due servizi di infrastruttura serverless. Cloudflare Workers viene eseguito direttamente su Chrome V8 anziché su Node.js, e Cloudflare dispone di datacenter propri in 200 città sparse in tutto il mondo. Poiché utilizzano direttamente V8, i Cloudflare Workers possono avviarsi molto più velocemente e consumare molte meno risorse rispetto ad altre piattaforme serverless. Nell'esempio precedente, se l'utente di Chicago stesse cercando di ottenere una risposta da un'applicazione creata con Cloudflare Workers, la richiesta verrebbe indirizzata al PoP di Cloudflare a Chicago invece che in Ohio.

Che cos'è la latenza? In che modo la latenza influisce sul comportamento degli utenti?

Nel networking, per "latenza" si intende la durata del ritardo che intercorre prima che le informazioni richieste vengano caricate All'aumentare della latenza, aumenta anche il numero di utenti che abbandonano una data pagina web.

Anche delle piccole riduzioni dei tempi di caricamento aumentano notevolmente l'engagement degli utenti. Uno studio condotto d Walmart ha dimostrato che un miglioramento di un secondo nel tempo di caricamento di una pagina aumenta le conversioni del 2%. Al contrario, all'aumentare della latenza, gli utenti hanno maggiori probabilità di smettere di utilizzare un sito o un'applicazione. La latenza diminuisce man mano che la distanza che le informazioni devono percorrere si riduce.

Cosa sono i punti di presenza (PoP)?

Un punto di presenza (PoP) è un luogo in cui delle reti di comunicazione si interconnettono. Nel contesto di Internet, è il luogo in cui risiede l'hardware (router, switch, server e così via) che consente alle persone di connettersi al web. Quando si parla di una rete perimetrale, o "edge", un punto di presenza è l'ubicazione fisica di un server perimetrale. Un numero maggiore di PoP sul perimetro si traduce in risposte più rapide per un numero maggiore di utenti, poiché la probabilità che un PoP sia geograficamente vicino a un utente aumenta all'aumentare dei PoP.

Quanto velocemente rispondono, in media, le funzioni serverless?

Cloudflare ha eseguito dei test mettendo a confronto AWS Lambda, Lambda@Edge e Cloudflare Workers al fine di dimostrare la reattività del serverless e testare l'efficacia della distribuzione di funzioni serverless su più PoP. Le funzioni di test erano dei semplici script che al momento dell'esecuzione rispondevano indicando l'ora del giorno corrente.

Il grafico seguente mostra i tempi di risposta delle funzioni di AWS Lambda (blu), AWS Lambda@Edge (verde) e Cloudflare Workers (rosso). Per questo test, le funzioni di AWS Lambda erano in hosting nella regione US-East-1.

aws-lambda-e-cloudflare-workers-a-confronto

In un'architettura serverless, la posizione geografica in cui il codice viene eseguito impatta sulla latenza. Se il codice dell'applicazione viene eseguito con maggiore prossimità all'utente, le prestazioni migliorano perché le informazioni non devono viaggiare lontano e l'applicazione risponde più velocemente. Sebbene i tempi di risposta siano stati diversi per tutti e tre i servizi, le risposte di Cloudflare Workers sono state generalmente le più rapide. Lambda@Edge è stato il secondo service in termini di velocità, a riprova dei vantaggi derivanti dall'esecuzione di funzioni serverless in più sedi.

Sebbene le regioni AWS siano dislocate in tutto il mondo, Cloudflare dispone di un numero maggiore di PoP totali. Cloudflare ha anche eseguito dei test limitati al Nord America, escludendo i ritardi causati dalla risoluzione DNS. I risultati mostrati di seguito costituiscono un altro esempio di come un numero maggiore di PoP riduca la latenza e migliori le prestazioni. Da notare come le risposte di Cloudflare Workers richiedono il minor tempo.

lambda-e-workers-a-confronto

I cold start serverless: quanto velocemente rispondono i nuovi processi in un'architettura serverless?

Nel cloud computing serverless, un “cold start”, o avviamento a freddo, si riferisce al momento in cui una funzione non eseguita di recente, deve rispondere a un dato evento. Tali funzioni devono essere "attivate" prima di poter essere eseguite; in genere, l'operazione richiede alcuni millisecondi, e questo può causare ulteriori problemi di latenza.

Cloudflare Workers ha eliminato completamente i cold start, il che significa che non richiedono tempi di spin-up. Questo accade per ogni punto della rete globale di Cloudflare. Al contrario, sia le funzioni Lambda che quelle di Lambda@Edge possono impiegare più di un secondo per rispondere da un cold start.

Le differenze sono dovute principalmente al fatto che Cloudflare Workers viene eseguito su Chrome V8, anziché su Node.js. Node.js è basato su Chrome V8, richiede più tempo per l'avvio e ha un maggiore overhead di memoria. Di solito, le istanze V8 impiegano meno di 5 millisecondi per avviarsi.

Scopri di più su Cloudflare Workers.