Come ottimizzare le funzioni AWS Lambda con Provisioned Concurrency e Auto Scaling

Le funzioni AWS Lambda sono una soluzione serverless per l'esecuzione di codice nel cloud senza impostazioni i tuoi server. Lo svantaggio principale è che i tempi di inizializzazione possono essere elevati, con conseguente aumento della latenza. Con Provisioned Concurrency, puoi risolvere questo problema.

Cos'è Provisioned Concurrency?

Le funzioni Lambda vengono eseguite nei propri “ambienti di esecuzione,” che di solito vengono avviati automaticamente quando viene effettuata una richiesta. Dopo l'invocazione di una funzione, l'ambiente sarà mantenuto “caldo” per circa 5-15 minuti e il codice di inizializzazione non dovrà essere eseguito di nuovo.

Tuttavia, dopo tale periodo, o se è necessario servire più richieste contemporaneamente, è necessario un nuovo ambiente di esecuzione essere accelerato, portando a un aumento dei tempi di avvio chiamato “avvio a freddo.” Questo può essere particolarmente pronunciato con linguaggi che devono eseguire grandi quantità di compilazione JIT all'avvio, come Java e .NET.

Per risolvere questo problema, AWS ha una funzionalità chiamata Provisioned Concurrency, in cui puoi essenzialmente riservare un certo numero di ambienti di esecuzione affinché siano permanentemente caldi durante il giorno. Ciò significa che tutto il codice di inizializzazione viene eseguito in anticipo e non devi sperimentare avvii a freddo.

Se ti affidi a Lambda per servire le richieste rivolte agli utenti, potresti prendere in considerazione la simultaneità del provisioning anche se finisce per costare un po' di più. Anche se gli avviamenti a freddo di solito rappresentano solo l'1% delle richieste, quell'1% può essere secondi in più trascorsi in attesa del caricamento di un'applicazione, anche se ciò dipenderà dal tempo di esecuzione e dalle dimensioni del codice.

Quanto costa la concorrenza con provisioning?

A differenza delle istanze EC2 riservate, la concorrenza con provisioning è ancora per lo più “paga per quello che usi” prezzi, come il resto di Lambda. Paghi una piccola tariffa per ogni ora di provisioning di ciascun ambiente, quindi paghi per le richieste Lambda come di consueto.

Tuttavia, poiché il traffico è più prevedibile da parte di AWS ed è più economico per non dover eseguire continuamente il codice di inizializzazione, il costo di calcolo per funzione per le richieste effettuate con la concorrenza con provisioning è in realtà inferiore. Non ci sono svantaggi nemmeno per il superamento del limite: ti verranno addebitati solo i prezzi di concorrenza standard.

Nel complesso, la concorrenza con provisioning può essere leggermente più economica (circa il 5-10%) se si dispone di un traffico molto prevedibile e si riserva esattamente quella capacità. Tuttavia, in alcuni casi può anche essere un po' più costoso. Ti consigliamo di controllare le tue analisi e collegarle al calcolatore dei prezzi Lambda di AWS per saperne di più.

Abilitazione della concorrenza fornita

h2>

L'attivazione della concorrenza con provisioning è piuttosto semplice, ma ha uno svantaggio: non può puntare alla versione $LATEST predefinita. Questo tag è un alias che può cambiare e non punta a una versione specifica e la concorrenza con provisioning deve riservare una versione specifica. Quindi, dovrai pubblicare una nuova versione da Lambda, se non ne hai già una:

Quindi, configura un alias che punti a quella versione. Questo alias può essere aggiornato, il che attiverà un aggiornamento per gli ambienti forniti.

Una volta impostato il tuo alias, puoi aggiungere una nuova configurazione di concorrenza da Lambda 8217;s, sotto Configurazione > Concorrenza. Puoi anche configurarlo direttamente dalle impostazioni dell'alias.

Le impostazioni per la simultaneità del provisioning sono semplici: seleziona un alias e inserisci un importo per il provisioning.

Puoi anche impostare e aggiornare questo valore utilizzando l'API AWS o la CLI, che può essere utilizzato per automatizzarlo durante il giorno:

aws lambda put-provisioned-concurrency-config –function-name MyFunction –qualifier LatestProvisioned –provisioned-concurrent-executions 10

Autoscaling con Provisioned Concurrency

Poiché la concorrenza con provisioning può essere regolata durante il giorno, può anche essere collegata ad Application Auto Scaling di AWS per regolarla in base all'utilizzo. Collegarlo è semplice e richiede solo pochi comandi dall'AWS CLI o dall'API, poiché non esiste ancora una console di gestione per questo.

Innanzitutto, dovrai registrare Lambda fungere da obiettivo di ridimensionamento. Qui dovrai modificare il nome della funzione (MyFunction) e l'alias (LatestProvisioned) e regolare anche gli intervalli di capacità minima e massima.

aws application-autoscaling register-scalable-target –service-namespace lambda –resource-id function:MyFunction:LatestProvisioned –min-capacity 2 –max-capacity 10 –scalable-dimension lambda:function:ProvisionedConcurrency < p>Poi, puoi abilitare un criterio di ridimensionamento automatico, utilizzando il nome della funzione e l'alias come ID risorsa e configurandolo con un criterio di ridimensionamento JSON. Questo esempio lo imposta per aumentare e diminuire la scalabilità quando LambdaProvisionedConcurrencyUtilization supera o scende al di sotto del 70%.

aws application-autoscaling put-scaling-policy –service-namespace lambda –scalable-dimension lambda:function:ProvisionedConcurrency –resource-id function:MyFunction:LatestProvisioned –policy-name my-policy –policy-type TargetTrackingScaling –target-tracking-scaling-policy-configuration '{ “TargetValue”: 0.7, “PredefinedMetricSpecification”: { “PredefinedMetricType”: “LambdaProvisionedConcurrencyUtilization” }}'

Questo non rileva tutti i casi, ad esempio come rapidi picchi di utilizzo che non durano a lungo, ma funziona bene per un traffico costante e ti farà risparmiare denaro la sera quando il traffico è basso.

LEGGI SUCCESSIVO

    < li>› Microsoft Edge sta reprimendo lo spam nelle notifiche
  • › Come creare GIF su iPhone
  • › Come guardare UFC 290 Volkanovski contro Rodrigueza in diretta online
  • › Quale logo Apple era il migliore? Uno sguardo indietro
  • › La tastiera meccanica Corsair raggiunge il prezzo più basso di tutti i tempi e altre offerte
  • › Questo nuovo ASUS Tiny PC è sorprendentemente potente

Posted

in

by

Tags: