O que é a Durable Functions?

Concluído

Durable Functions permite implementar funções stateful 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 múltiplos passos e cada passo ao longo do processo pode variar em termos de duração. Implementar um processo automatizado interno é complexo e dispendioso. A coordenação de cada passo envolve esforços. Além disso, tem de conseguir incorporar uma lógica personalizada no fluxo de trabalho.

Nesta unidade, irá saber mais sobre os benefícios da Durable Functions. Irá saber mais sobre os diferentes tipos de funções e principais conceitos associados à Durable Functions.

Funções duráveis

A Durable Functions é uma extensão das Funções do Azure. Enquanto o Azure Functions opera em um ambiente sem monitoração de estado, o Durable Functions pode reter o estado entre chamadas de função. Essa abordagem permite simplificar execuções com monitoração de estado complexas em um ambiente sem servidor.

O Durable Functions é dimensionado conforme necessário e fornece um meio econômico de implementar fluxos de trabalho complexos na nuvem. Alguns benefícios de utilizar a Durable Functions incluem:

  • Permitem-lhe escrever código orientado por eventos. Uma função durável pode aguardar assincronamente por um ou mais eventos externos e, em seguida, executar uma série de tarefas em resposta a esses eventos.

  • 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, em seguida, acumular os resultados.

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

  • O estado é gerido por si. Não tem de escrever o seu próprio código para guardar as informações de estado para uma função de execução prolongada.

As Funções Duráveis permitem definir fluxos de trabalho com monitoração de estado usando uma função de orquestração. Uma função de orquestração fornece estes benefícios extra:

  • Pode definir os fluxos de trabalho no código. Não tem de escrever uma descrição JSON ou utilizar uma ferramenta de design de fluxos de trabalho.

  • As funções podem ser chamadas de forma síncrona e assíncrona. Os resultados das funções chamadas são guardados em variáveis e utilizados em chamadas de funções posteriores.

  • O Azure cria pontos de verificação do progresso de uma função automaticamente enquanto 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çar a executar novamente, o Azure irá voltar a "hidratá-la" e restaurar o respetivo estado.

Tipos de funções

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

As funções Client são o ponto de entrada para criar uma instância de uma orquestração da Durable Functions. Estas podem ser executadas em resposta a um evento de várias origens, como um novo pedido HTTP a chegar, uma mensagem a ser publicada numa fila de mensagens ou um evento a chegar numa transmissão de eventos. Pode escrevê-las em qualquer um dos idiomas suportados.

As funções do orquestrador descrevem como as ações são executadas e a ordem em que são executadas. Irá escrever 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 de funções duráveis. Uma função de atividade contém o trabalho real realizado pelas tarefas a serem orquestradas.

Padrões de aplicação

Pode utilizar a Durable Functions para implementar muitos padrões de fluxo de trabalho comuns. Estes padrões incluem:

  • Encadeamento de funções: Neste 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 função seguinte na sequência. A saída da função final é usada para gerar um resultado.

    Diagrama ilustrando um padrão de encadeamento de funções.

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

    Diagrama ilustrando uma saída de ventilador/ventilador no padrão.

  • APIs HTTP assíncronas: esse padrão resolve o problema de coordenar o estado de operações de longa execução com clientes externos. Uma chamada HTTP pode acionar a ação de longa duração e, em seguida, redirecionar o cliente para um ponto de extremidade de status. O cliente pode saber quando a operação está concluída ao consultar este ponto final.

    Diagrama ilustrando um padrão de API HTTP assíncrono.

  • Monitor: esse padrão implementa um processo recorrente em um fluxo de trabalho, possivelmente procurando uma alteração no estado. Por exemplo, pode utilizar este padrão para consultar até satisfazer as condições específicas.

    Diagrama ilustrando um padrão de monitor.

  • Interação humana: Este padrão combina processos automatizados que também envolvem alguma interação humana. Um processo manual num processo automatizado é complicado porque as pessoas não estão tão disponíveis nem são tão reativas como a maioria dos computadores. Você pode incorporar a interação humana usando tempos limite e lógica de compensação que é executada se o ser humano não 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.

    Diagrama ilustrando um padrão de interação humana.

Comparação com o Logic Apps

A Durable Functions e o Logic Apps são ambos serviços do Azure que permitem cargas de trabalho sem servidor. O Azure Durable Functions foi concebido como uma opção de computação sem servidor avançada para executar uma lógica personalizada. O Azure Logic Apps é mais adequado para a integração de serviços e componentes do Azure. Pode utilizar ambas as tecnologias para criar orquestrações complexas. Com o Azure Durable Functions, irá desenvolver orquestrações ao escrever código e utilizar a extensão Durable Functions. Com o Logic Apps, irá criar orquestrações ao utilizar uma superfície de design ou editar os ficheiros de configuração.

A tabela a seguir lista algumas das principais diferenças entre o Azure Durable Functions e o Azure Logic Apps.

Task Azure Durable Functions Azure Logic Apps
Desenvolvimento Baseado em código (imperativo) Baseado no design (declarativo)
Conectividade Cerca de uma dúzia de tipos de enlaces incorporados. Pode escrever código para enlaces personalizados. Uma grande coleção de conectores. Enterprise Integration Pack para B2B. Também pode criar conectores personalizados.
Ações Cada atividade é uma Função do Azure. Irá escrever o código para as funções de atividade. Uma grande coleção de ações prontas a utilizar. Irá integrar uma lógica personalizada através de conectores personalizados.
Monitorização Azure Application Insights Portal do Azure, registos do Azure Monitor
Gestão API REST, PowerShell, Visual Studio Portal do Azure, API REST, PowerShell, Visual Studio, extensão de código do Visual Studio

Verifique o seu conhecimento

1.

O que é a Durable Functions?

2.

Qual das seguintes opções melhor descreve a função de Orquestrador num fluxo de trabalho?

3.

Qual das seguintes opções melhor explica o motivo pelo qual o padrão de aplicação Human Interaction beneficia da Durable Functions?