O que são as Durable Functions?

Concluído

As Durable Functions permitem que você implemente funções com estado complexas em um ambiente sem servidor.

No cenário de exemplo, sua empresa atualmente segue um processo de aprovação manual para propostas de design de projeto. O processo tem várias etapas, e cada uma delas pode variar quanto à duração. A implementação de um processo automatizado na empresa é complexa e cara. A coordenação de cada etapa exige muito esforço. Além disso, você precisa conseguir incorporar uma lógica personalizada no fluxo de trabalho.

Nesta unidade, você saberá mais sobre os benefícios das Durable Functions. Você aprenderá sobre os diferentes tipos de função e os principais conceitos associados às Durable Functions.

Durable Functions

As Durable Functions são uma extensão do Azure Functions. Enquanto o Azure Functions opera em um ambiente sem estado, o Durable Functions pode reter o estado entre as chamadas de função. Essa abordagem permite que você simplifique execuções com estado complexas em um ambiente sem servidor.

O Durable Functions é ampliado conforme o necessário e fornece uma maneira econômica de implementar fluxos de trabalho complexos na nuvem. Alguns benefícios do uso das Durable Functions incluem:

  • Elas permitem escrever um código controlado por evento. Uma função durável pode esperar de forma assíncrona por um ou mais eventos externos e, em seguida, executar uma série de tarefas em resposta a esses eventos.

  • Você pode encadear as funções. Você pode implementar padrões comuns, como fan-out/fan-in, que usa uma função para invocar outras em paralelo e acumular os resultados.

  • Você pode orquestrar e coordenar funções e especificar a ordem em que as funções devem ser executadas.

  • O estado é gerenciado para você. Você não precisa escrever seu próprio código para salvar as informações de estado de uma função de execução prolongada.

O Durable Functions permite que você defina fluxos de trabalho com estado usando uma função de orquestração. Uma função de orquestração oferece estes benefícios extras:

  • Você pode definir os fluxos de trabalho no código. Você não precisa escrever uma descrição JSON nem usar uma ferramenta de design de fluxo de trabalho.

  • As funções podem ser chamadas de forma síncrona e assíncrona. A saída das funções chamadas é salva localmente em variáveis e usada em chamadas de função posteriores.

  • O Azure marca o ponto de verificação do progresso de uma função automaticamente quando a função aguarda. O Azure pode optar por desidratar a função e salvar seu estado enquanto a função aguarda, para preservar recursos e reduzir custos. Quando a função começa a ser executada novamente, o Azure a reidrata e restaura seu estado.

Tipos de função

Você pode usar três tipos de função durável: Cliente, Orquestrador e Atividade.

As funções Cliente são o ponto de entrada para a criação de uma instância de uma orquestração das Durable Functions. Elas podem ser executadas em resposta a um evento de muitas fontes, como uma nova solicitação HTTP recebida, uma mensagem postada em uma fila de mensagens e um evento recebido em um fluxo de eventos. Você pode escrevê-las em uma das linguagens compatíveis.

As funções de Orquestrador descrevem como as ações são executadas e a ordem na qual serão executadas. Você escreve a lógica de orquestração no código (C# ou JavaScript).

As funções de Atividade são as unidades básicas de trabalho em uma orquestração do Durable Functions. Uma função de atividade contém o trabalho real realizado pelas tarefas que estão sendo orquestradas.

Padrões de aplicativo

Você pode usar as Durable Functions para implementar muitos padrões comuns de fluxo de trabalho. Esses padrões incluem:

  • Encadeamento de funções: nesse padrão, o fluxo de trabalho executa uma sequência de funções em uma ordem especificada. A saída de uma função é aplicada à entrada da próxima função na sequência. A saída da função final é usada para gerar um resultado.

    Diagram illustrating a function chaining pattern.

  • Fan out/fan in: esse padrão executa várias funções em paralelo e aguarda a conclusão de todas as funções. Você pode agregar os resultados das execuções paralelas ou usá-los para calcular um resultado final.

    Diagram illustrating a fan out/fan in pattern.

  • APIs HTTP assíncronas: esse padrão resolve o problema de coordenação do estado de operações de execução prolongada com clientes externos. Uma chamada HTTP pode deflagrar a ação de execução prolongada e redirecionar o cliente para um ponto de extremidade de status. O cliente pode saber quando a operação é concluída pela sondagem desse ponto de extremidade.

    Diagram illustrating an async HTTP API pattern.

  • Monitorar: esse padrão implementa um processo recorrente em um fluxo de trabalho, possivelmente procurando uma alteração no estado. Por exemplo, você pode usar esse padrão para sondagem até que as condições específicas sejam atendidas.

    Diagram illustrating a monitor pattern.

  • Interação humana: esse padrão combina processos automatizados que também envolvem alguma interação humana. Um processo manual em um processo automatizado é difícil porque as pessoas não são tão altamente disponíveis e dinâmicas como a maioria dos computadores. Você pode incorporar a interação humana usando tempos limite e uma lógica de compensação que será executada se o humano não conseguir interagir corretamente dentro de um tempo de resposta especificado. Um processo de aprovação é um exemplo de um processo que envolve a interação humana.

    Diagram illustrating a human interaction pattern.

Comparação com os Aplicativos Lógicos

As Durable Functions e os Aplicativos Lógicos são serviços do Azure que permitem workloads sem servidor. As Durable Functions do Azure destinam-se a ser uma opção de computação sem servidor eficiente para executar uma lógica personalizada. Os Aplicativos Lógicos do Azure são mais adequados para a integração de componentes e serviços do Azure. Use uma dessas tecnologias para criar orquestrações complexas. Com as Durable Functions do Azure, você desenvolve orquestrações escrevendo o código e usando a extensão Durable Functions. Com os Aplicativos Lógicos, você cria orquestrações usando a área de design ou editando arquivos de configuração.

A seguinte tabela lista algumas das principais diferenças entre as Durable Functions do Azure e os Aplicativos Lógicos do Azure.

Tarefa Durable Functions do Azure Aplicativos Lógicos do Azure
Desenvolvimento Código como prioridade (imperativo) Design como prioridade (declarativo)
Conectividade Cerca de uma dezena de tipos de associação internos. Você pode escrever um código para associações personalizadas. Ampla coleção de conectores. Enterprise Integration Pack para B2B. Crie também conectores personalizados.
Ações Cada atividade é uma Função do Azure. Você escreve o código para funções de atividade. Ampla coleção de ações prontas. Você integra a lógica personalizada por meio de conectores personalizados.
Monitoramento Azure Application Insights Portal do Azure, logs do Azure Monitor
Gerenciamento API REST, PowerShell, Visual Studio Portal do Azure, API REST, PowerShell, Visual Studio, extensão do Visual Studio Code

Verifique seus conhecimentos

1.

O que são as Durable Functions?

2.

Qual das opções a seguir melhor descreve o papel da função de Orquestrador em um fluxo de trabalho?

3.

Qual das opções a seguir melhor explica o motivo pelo qual o padrão de aplicação de Interação Humana se beneficia das Durable Functions?