Nell'articolo dedicato a .NET Core e AWS lambda, disponibile a questo indirizzo https://www.cloudnativeitalia.com/articoli/aws/usare-aws-lambda-dotnet-core.aspx, abbiamo visto che viene riservato un processo ad ogni evento che innesca il nostro codice. Questo garantisce l'isolamento e il massimo della scalabilità. Quando usiamo una lambda che non viene regolarmente utilizzata, se non diversamente specificato tramite il provisioned concurrency, le istanze tendono a morire fino a non rimanere neanche un'istanza. Questo di per sé non è un problema, ma può tradursi in una piccola latenza di avvio che si può notare quando necessitiamo di maggiore reattività.
Per mitigare questo problema possiamo effettuare un polling ad intervalli regolari alla Lambda, inviando un messaggio o un evento che venga di fatto scartato, ma che sia in grado di mantenere attiva la lambda. Chiaramente l'esecuzione di questo evento deve essere il più veloce possibile al fine di non consumare risorse inutilmente.
Per effettuare questo polling possiamo usare CloudWatch, il quale, oltre a permetterci di monitorare i log della lambda, ci permette di creare delle regole di routing degli eventi o di generazione degli stessi. Recandoci quindi sulla gestione di CloudWatch troviamo una sezione Events->Rules dove possiamo procedere alla creazione di una Rule.
Indichiamo di voler inviare l'evento ad intervalli regolari, specificando un valore relativamente basso.
Viene anche mostrato un esempio di JSON che verrà inviato, così da permetterci di simulare l'evento e gestirlo correttamente.
Nella sezione di destra indichiamo invece la Lambda destinataria ed eventualmente personalizziamo il JSON da inviare.
Nella schermata successiva diamo un nome alla regola e proseguiamo con la sua creazione.
E' bene precisare che questa tecnica risolve parzialmente il problema, perché garantisce solo che almeno un'istanza sia disponibile. In presenza di alto utilizzo, infatti, solo il provisioned concurrency può dare maggiori garanzie.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Migliorare l'organizzazione delle risorse con Azure Policy
Generare la software bill of material (SBOM) in GitHub
Ordine e importanza per @layer in CSS
C# 12: Cosa c'è di nuovo e interessante
Applicare un filtro per recuperare alcune issue di GitHub
Utilizzare Azure Cosmos DB con i vettori
Effettuare il refresh dei dati di una QuickGrid di Blazor
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Utilizzare Model as a Service su Microsoft Azure
I più letti di oggi
- Costruire applicazioni native per ogni dispositivo con .NET e Visual Studio
- Codifica all'avanguardia con .NET MAUI: Scopri le potenzialità di sviluppo multi-piattaforma
- Criptare la comunicazione con mTLS in Azure Container Apps
- Utilizzare AAD su SQL Database durante lo sviluppo con Visual Studio
- Modificare il valore di una variabile LESS da JavaScript
- Utilzzare un iconic font per disegnare le icone con HTML5 e FontAwesome
- Generare un grafico a barre utilizzando il canvas e la libreria Chart.js
- Definire stili a livello di libreria in Angular
- Disabilitare il link highlighting sui browser mobile con HTML5
- #IE10 in modalità metro non supporterà plug-in. tutte le info su http://aspitalia.com/4t