Informazioni su Durable Functions

Completato

Durable Functions permette di implementare complesse funzioni con stato in un ambiente serverless.

Nello scenario di esempio, l'azienda attualmente esegue un processo di approvazione manuale per le proposte di progetto. Il processo prevede diversi passaggi, la cui durata può variare. L'implementazione di un processo interno automatizzato è complessa e costosa. Il coordinamento di ogni passaggio richiede impegno. È inoltre necessario essere in grado di incorporare la logica personalizzata nel flusso di lavoro.

In questa unità verranno descritti i vantaggi di Durable Functions. Saranno illustrati i diversi tipi di funzione e i concetti chiave associati a Durable Functions.

Durable Functions

Durable Functions è un'estensione di Funzioni di Azure. Mentre Funzioni di Azure opera in un ambiente senza stato, Durable Functions può mantenere lo stato tra le chiamate di funzione. Questo approccio consente di semplificare le esecuzioni con stato complesse in un ambiente serverless.

Durable Functions può essere ridimensionato in base alle esigenze e fornisce un sistema conveniente per l'implementazione di flussi di lavoro complessi nel cloud. Alcuni dei vantaggi di Durable Functions sono i seguenti:

  • Consente di scrivere codice basato su eventi. Una funzione di Durable Functions può attendere in modo asincrono uno o più eventi esterni e quindi eseguire una serie di attività in risposta a tali eventi.

  • È possibile concatenare le funzioni. È possibile implementare modelli comuni, come il modello fan-out/fan-in, in cui viene usata una funzione per richiamarne altre in parallelo e quindi accumulare i risultati.

  • È possibile orchestrare e coordinare le funzioni, nonché specificarne l'ordine di esecuzione.

  • Lo stato viene gestito automaticamente. Non è necessario scrivere codice personalizzato per salvare le informazioni sullo stato per una funzione a esecuzione prolungata.

Durable Functions consente di definire flussi di lavoro con stato usando una funzione di orchestrazione. Una funzione di orchestrazione offre i seguenti vantaggi aggiuntivi:

  • È possibile definire i flussi di lavoro nel codice. Non è necessario scrivere una descrizione JSON oppure usare uno strumento di progettazione del flusso di lavoro.

  • È possibile chiamare le funzioni in modo sincrono e asincrono. L'output delle funzioni chiamate viene salvato in locale nelle variabili e usato nelle chiamate di funzione successive.

  • Azure imposta automaticamente checkpoint dello stato di avanzamento di una funzione quando la funzione è in attesa. Azure può scegliere di disidratare la funzione e salvarne lo stato mentre la funzione è in attesa, per preservare le risorse e ridurre i costi. Quando l'esecuzione della funzione viene avviata di nuovo, Azure la riattiva e ne ripristina lo stato.

Tipi di funzione

È possibile usare tre tipi di funzione di Durable Functions: client, di orchestrazione e di attività.

Le funzioni client sono il punto di ingresso per creare un'istanza di un'orchestrazione di Durable Functions. Possono essere eseguite in risposta a un evento da numerose origini, ad esempio una nuova richiesta HTTP in arrivo, un messaggio inviato a una coda di messaggi o un evento in arrivo in un flusso di eventi. È possibile scriverle in uno qualsiasi dei linguaggi supportati.

Le funzioni dell'agente di orchestrazione descrivono le modalità di esecuzione delle azioni e l'ordine in cui vengono eseguite. È possibile scrivere la logica di orchestrazione nel codice (C# o JavaScript).

Le funzioni di attività sono l'unità di base del lavoro in un'orchestrazione di Durable Functions. Una funzione di attività contiene le operazioni effettive eseguite dalle attività orchestrate.

Modelli di applicazione

È possibile usare Durable Functions per implementare numerosi modelli comuni di flusso di lavoro. Questi modelli includono:

  • Concatenamento di funzioni: In questo criterio il flusso di lavoro esegue una sequenza di funzioni in un ordine specificato. L'output di una funzione viene applicato all'input della funzione successiva nella sequenza. L'output della funzione finale viene usato per generare un risultato.

    Diagram illustrating a function chaining pattern.

  • Fan-out/fan-in: In questo criterio vengono eseguite più funzioni in parallelo e quindi viene atteso il completamento di tutte le funzioni. I risultati delle esecuzioni parallele possono essere aggregati o usati per calcolare un risultato finale.

    Diagram illustrating a fan out/fan in pattern.

  • API HTTP asincrone: Questo criterio risolve il problema di coordinare lo stato di operazioni a esecuzione prolungata con client esterni. Una chiamata HTTP può attivare l'azione a esecuzione prolungata, quindi reindirizzare il client a un endpoint di stato. Il client può determinare quando l'operazione è stata completata eseguendo il polling di questo endpoint.

    Diagram illustrating an async HTTP API pattern.

  • Monitoraggio: Questo criterio implementa un processo ricorrente in un flusso di lavoro, alla ricerca di un cambiamento di stato. È ad esempio possibile usare questo modello per eseguire il polling finché non vengono soddisfatte specifiche condizioni.

    Diagram illustrating a monitor pattern.

  • Interazione umana: Questo criterio combina processi automatizzati che comportano anche un qualche tipo di interazione umana. Un processo manuale all'interno di un processo automatizzato è complesso da gestire perché gli utenti non sono altrettanto reattivi e a disponibilità elevata della maggior parte dei computer. Puoi incorporare l'interazione umana usando i timeout e una logica di compensazione che viene eseguita se l'utente non interagisce correttamente entro un tempo di risposta specificato. Un processo di approvazione è un esempio di processo che coinvolge l'interazione umana.

    Diagram illustrating a human interaction pattern.

Confronto con App per la logica

Durable Functions e App per la logica sono servizi di Azure che abilitano un carico di lavoro serverless. Durable Functions di Azure è una potente opzione di calcolo serverless per eseguire una logica personalizzata. App per la logica di Azure è più adatto per l'integrazione di servizi e componenti di Azure. È possibile usare entrambe le tecnologie per creare orchestrazioni complesse. Con Durable Functions di Azure è possibile sviluppare orchestrazioni scrivendo codice e usando l'estensione Durable Functions. Con App per la logica di Azure è possibile creare orchestrazioni usando l'area di progettazione o modificando i file di configurazione.

Nella tabella seguente sono elencate alcune delle differenze principali tra Durable Functions di Azure e App per la logica di Azure.

Attività Durable Functions di Azure App per la logica di Azure
Sviluppo Code-first (imperativo) Design-first (dichiarativo)
Connettività Circa una dozzina di tipi di associazioni incorporati. È possibile scrivere codice per associazioni personalizzate. Grande raccolta di connettori. Enterprise Integration Pack per B2B. È anche possibile creare connettori personalizzati.
Azioni Ogni attività è una funzione di Azure. È possibile scrivere il codice per le funzioni di attività. Grande raccolta di azioni predefinite. È possibile integrare la logica personalizzata tramite i connettori personalizzati.
Monitoraggio Azure Application Insights Portale di Azure, log di Monitoraggio di Azure
Gestione API REST, PowerShell, Visual Studio Portale di Azure, API REST, PowerShell, Visual Studio, estensione di Visual Studio Code

Verificare le conoscenze

1.

Informazioni su Durable Functions

2.

Quale delle seguenti affermazioni descrive meglio il ruolo della funzione dell'agente di orchestrazione in un flusso di lavoro?

3.

Quale delle seguenti definizioni descrive meglio il motivo per cui il modello di applicazione con interazione umana trae vantaggio da Durable Functions?