
Le funzioni Lambda sono una parte cruciale di qualsiasi distribuzione serverless su Amazon Web Services. Tuttavia, non sono magici e possono presentare alcuni svantaggi, come partenze a freddo, a causa dei limiti fisici dell'hardware. La Provisioned Concurrency può aiutare ad alleviare il problema.
Cosa sono gli “avvii a freddo”?
“ Avviamenti a freddo” sono un grosso problema per Lambda, specialmente se considerato per un'applicazione sensibile alla latenza. Il termine si riferisce al tempo di avvio necessario per rendere operativo da zero l'ambiente di esecuzione di una funzione Lambda.
Le funzioni Lambda saranno mantenute “calde” per un po' dopo averli invocati. Le funzioni non VPC saranno warm per 5 minuti e le funzioni VPC saranno warm per 15 minuti. Durante questo periodo, se la funzione viene richiamata di nuovo, risponderà immediatamente. Questo è ottimo per i servizi che presentano un traffico costante e regolare.
Tuttavia, se il codice non viene eseguito da un po' di tempo o se deve essere ridimensionato ed eseguire più funzioni simultanee, verrà avviato da zero. Secondo l'analisi di AWS, gli avviamenti a freddo si verificano in meno dell'1% delle richieste nei carichi di lavoro di produzione, il che è accettabile per molti scenari.

Tuttavia, a seconda del runtime utilizzato (Java e .NET impiegano entrambi un po' di tempo per la compilazione JIT), un avvio a freddo potrebbe ritardare l'invocazione della funzione di diversi secondi. Questo può essere inaccettabile per le applicazioni sensibili alla latenza.
Niente più avvii a freddo
La modalità Provisioned Concurrency di Lambda può aiutare a risolvere questo problema. Puoi pensarle come istanze riservate per le funzioni Lambda: essenzialmente stai riservando una certa quantità di capacità e una funzione Lambda verrà mantenuta calda per l'intero periodo.
Ciò ha grandi vantaggi, inclusa la rimozione quasi completa dei costi di avvio. In realtà non dovrai preoccuparti affatto dell'ottimizzazione del codice di inizializzazione, poiché verrà eseguito una volta e rimarrà in esecuzione. Questo è un grande vantaggio per i linguaggi compilati JIT come Java e C#/.NET, che possono avere file binari di grandi dimensioni e tempi di avvio per caricarli.
Rispetto all'esempio precedente, in cui le funzioni vengono avviate a freddo, la concorrenza con provisioning li avvia tutti in anticipo e li tiene al caldo. Quando è necessaria un'invocazione, Lambda utilizzerà le funzioni warm per eseguirla.

Tuttavia, ha i suoi svantaggi. A causa del modo in cui Lambda seleziona le versioni per le funzioni, la concorrenza con provisioning non funziona con il tag $LATEST. Dovrai creare un nuovo alias, eseguire il provisioning della concorrenza per tale alias e quindi aggiornarlo quando la versione cambia.
È anche importante capire che nonostante l'esecuzione della funzione per lunghi periodi di volta, la concorrenza con provisioning non rende l'applicazione stateful. Le funzioni Lambda possono e verranno distrutte e non dovresti trattarle come un server EC2.
Quanto costa Provisioned Concurrency?
< p>La risposta a questa domanda dipende dalla frequenza con cui viene eseguita la funzione e dalla frequenza con cui vengono creati più ambienti di esecuzione per soddisfare la domanda parallela.
Il numero principale di cui preoccuparsi per la concorrenza con provisioning è il numero di esecuzioni di funzioni in esecuzione allo stesso tempo. Ad esempio, se hai una funzione che viene chiamata dieci volte al secondo e ogni chiamata dura 500 ms, quella funzione avrà in media 5 esecuzioni simultanee al secondo.
Nel complesso, la concorrenza con provisioning non costa molto di più delle normali funzioni Lambda. Puoi utilizzare il calcolatore dei prezzi di AWS per capire quanto ti costerà personalmente. Ad esempio, un Lambda chiamato 10 volte al secondo, con un tempo di chiamata di 500 ms e 256 MB di memoria costerà $ 60 al mese per essere eseguito.

Tuttavia, la stessa funzione, ma con 10 esecuzioni fornite, costa un po' di più a $ 64,50 al mese. Nel complesso, è probabile un piccolo aumento del 5-10% del costo, a seconda dell'utilizzo.
Tuttavia, la concorrenza con provisioning è in realtà più economica per GB al secondo di utilizzo. Ciò significa che se si esegue costantemente un utilizzo molto vicino al 100%, può essere più economico prenotare la simultaneità rispetto all'utilizzo dei normali prezzi Lambda. Ciò si riduce in gran parte al fatto che è complessivamente più economico ridurre la quantità di tempo che Lambda impiega nel codice di inizializzazione.
LEGGI SUCCESSIVO
- › Batterie usa e getta e batterie ricaricabili: quale è meglio?
- › Come formattare un'unità USB in FAT32 su Windows 11 o Windows 10
- › Le migliori app di podcast per iPhone e iPad
- › Into the Android-Verse: la storia del robot Android
- › IPv4 vs. IPv6: quali sono le differenze?
- › Threads è la nuova app per social media dei creatori di Facebook & Instagram