All'interno del servizio Azure Functions, è stato recentemente introdotta una nuova funzionalità: Azure Durable Function. Consente all'applicazione serverless di memorizzare e gestire lo stato durante l'esecuzione. Vengono forniti, in maniera trasparente, checkpoint sullo stato di esecuzione della function e questo ci aiuta a gestire riavvii imprevisti.
Per gestire lo stato abbiamo ora a disposizione un orchestrator function che consente di definire, tramite il nostro codice, un flusso di esecuzione tra più Azure Functions. La definizione del flusso non è quindi grafica come avviene nel servizio Logic Apps, ma deve essere esplicitata dal programmatore.
Il tipico scenario di utilizzo di una Azure Durable Functions trova applicazione quando andiamo a definire una catena di funzioni che tra di loro condividono un dato; tipicamente le variabili di uscita di una funzione e la variabile di ingresso della successiva.
L'orchestrator di funzioni consente salvare lo stato della variabile di output, inoltre ogni qual volta una funzione rimane in attesa del completamento della successiva viene eseguito il check point della funzione. Lo stato di una funzione, gestito da Azure Durable Functions, non viene mai perso in caso la macchina virtuale venga spenta o riavviata.
Una applicazione di Azure Durable Functions è la seguente; vengono richiamate 3 diverse funzioni sequenzialmente. Prima F1, poi F2 ed infine F3.
public static async Task<object> Run(DurableOrchestrationContext ctx) { var x = await ctx.CallActivityAsync<object>("F1"); var y = await ctx.CallActivityAsync<object>("F2", x); return await ctx.CallActivityAsync<object>("F3", y); }
Dietro le quindi l'OrchestratorContext ci agevola notevolmente il lavoro. Ogni qualvolta rimaniamo in attesa del completamento della funzione (await), viene memorizzato un checkpoint con lo stato della funzione chiamante. In questo modo è possibile ripristinare lo stato in ogni momento dell'esecuzione anche su una istanza o una macchina diversa.
Il checkpoint avviene tramite il pattern Event-Sourcing che oltre a memorizzare lo stato corrente del dato, conserva tutti i cambiamenti che l'oggetto ha subito nel tempo. L'utilizzo dell'Event-Sourcing è trasparente e le modifiche che avvengono nel sistema vengono archiviate in un durable storage.
Le Azure Durable Functions utilizzano l'Azure Storage Account e più specificatamente blob, queue e tables.
Viene utilizzato di default lo storage associato al servizio impostato per Azure Functions ma è possibile utilizzarne un diverso per questioni di performance. La gestione della scrittura dei dati sull'Azure Storage è responsabilità diretta delle durable function e non è richiesto al programmatore la loro gestione.
Da sottolineare che in questo momento l'unico linguaggio supportato per la funzionalità descritta è il C#.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Utilizzare Model as a Service su Microsoft Azure
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Miglioramenti nell'accessibilità con Angular CDK
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Eseguire operazioni sui blob con Azure Storage Actions
Utilizzare i primary constructor in C#
Migliorare la sicurezza dei prompt con Azure AI Studio
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Limitare le richieste lato server con l'interactive routing di Blazor 8
I più letti di oggi
- Aggiungere il metodo SelectMany alla classe Array in TypeScript
- Usare gateway dedicati con Azure Cosmos DB per migliorare le prestazioni
- Recuperare i Popup aperti in una Windows Store app
- AI&ML Conf 2020 - Online
- Preview 4 per ASP.NET MVC
- Speciale Windows Store app: costruire app con WinRT per Windows 8
- Microsoft Security Bulletin MS02-050
- Microsoft Security Bulletin MS04-033
- Attivare l'output caching su ASP.NET Web API
- Ottimizzare l'utilizzo di banda tramite ETag in ASP.NET Core Web API