Le Azure Function sono il servizio FaaS della piattaforma Microsoft che ci permettono di scrivere codice che venga eseguito senza preoccuparci del numero di istanze dei server e della capacità computazionale che mettiamo a disposizione. La loro esecuzione viene attivata tramite timer, tramite richieste HTTP o tramite input che possono variare in maniera non deterministica. Ne sono un esempio i messaggi delle code o i blob dello storage. Il vantaggio delle Function è la possibilità di usare piani a consumo che ci permettano di scalare orizzontalmente automaticamente. Lo stesso possiamo fare con un service plan riservato con l'ausilio dell'autoscale.
Ogni istanza carica il nostro codice e lo esegue, ma anche a livello dell'istanza stessa dobbiamo sapere sfruttare al meglio la CPU e la RAM messa a disposizione.
Normalmente è necessario impostare quindi se lavorare in batch e quanti elementi caricare contemporaneamente (come il caso di MaxConcurrentCalls del Service Bus Trigger), ma di recente è stata inserita la possibilità di adattare dinamicamente la concorrenza in funzione di come le nostre function si comportano.
Per sfruttare questa caratteristica è necessario aggiornare le librerie Microsoft.Azure.WebJobs.Extensions.* dei nostri trigger alla versione 5. Successivamente dobbiamo modificare il file host.json, che troviamo già disponibile inserendo i seguenti flag.
{
"version": "2.0",
"concurrency": {
"dynamicConcurrencyEnabled": true,
"snapshotPersistenceEnabled": true
}
}Il primo indica appunto di abilitare la concorrenza dinamica, il secondo di persistere le decisioni prese. Il motore parte, infatti, con una concorrenza bassa a 1 e alza livello in base alle prestazioni e al carico in coda. Le decisioni vengono memorizzate sul blob per permettere in caso di riavvio dell'istanza di partire con l'ultima decisione presa. Se abilitiamo il log, possiamo vedere queste decisioni sotto la categoria Host.Concurrency e capire, in unione alle prestazioni, se la concorrenza dinamica migliori il nostro applicativo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Agentic Workflows in GitHub
Keynote Global Azure 2026 - ASPItalia.com
Stop Building Chatbots. Build a team
Azure SQL Database per dev: tutte le novità da non perdere
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Costruire endpoint SSE in ASP.NET Core
DevSecOps per .NET: dalla teoria alla pratica
Creare una UI per i tool MCP con resource e Azure Functions
Integrare LLM alle nostre applicazioni in .NET con MCP
Ottimizzare i costi con Smart tier in Azure Blob Storage
Abilitare .NET 10 su Azure App Service e Azure Functions
Blue/Green Release in locale con .NET Aspire


