O que são as Durable Functions na plataforma Azure?
As Durable Functions são um recurso do Azure Functions que permite escrever funções com estado em um ambiente de computação sem servidor. A extensão permite definir fluxos de trabalho com estado pela escrita de funções de orquestrador e entidades com estado pela escrita de funções de entidade usando o modelo de programação do Azure Functions. Nos bastidores, a extensão gerencia o estado, os pontos de verificação e as reinicializações para você, permitindo que você se concentre na lógica de negócios.
O Durable Functions foi projetado para trabalhar com todas as linguagens de programação do Azure Functions, mas pode ter requisitos mínimos diferentes para cada uma delas. A tabela a seguir mostra as configurações mínimas de aplicativo com suporte:
- .NET/C#/F#
- JavaScript/TypeScript
- Python
- Java
Assim como o Azure Functions, há modelos para ajudá-lo a desenvolver as Durable Functions usando o Visual Studio, o Visual Studio Code e o portal do Azure.
Padrões de aplicativo
O principal caso de uso das Durable Functions é simplificar requisitos complexos de coordenação com estado em aplicativos sem servidor. As seguintes seções descrevem padrões de aplicativo típicos que podem se beneficiar com as Durable Functions:
- Encadeamento de funções
- Fan-out/fan-in
- APIs HTTP assíncronas
- Monitoring
- Interação humana
- Agregador (entidades com estado)
Padrão 1: encadeamento de funções
No padrão de encadeamento de funções, uma sequência de funções é executada em uma ordem específica. Nesse padrão, a saída de uma função é aplicada à entrada de outra função. O uso de filas entre cada função garante que o sistema permaneça durável e escalonável, mesmo que haja um fluxo de controle de uma função para outra.
Um diagrama do padrão de encadeamento de funções
Use as Durable Functions para implementar o padrão de encadeamento de funções de forma concisa, conforme mostrado no exemplo a seguir.
Nesse exemplo, os valores F1, F2, F3 e F4 são os nomes de outras funções no mesmo aplicativo de funções. Implemente o fluxo de controle usando construtos de codificação imperativa normal. O código é executado de cima para baixo. Ele pode envolver a semântica do fluxo de controle da linguagem existente, como condicionais e loops. Você pode incluir a lógica de tratamento de erro em blocos try/catch/finally.
const df = require("durable-functions");
df.app.orchestration("chainingDemo", function* (context) {
try {
const x = yield context.df.callActivity("F1");
const y = yield context.df.callActivity("F2", x);
const z = yield context.df.callActivity("F3", y);
return yield context.df.callActivity("F4", z);
} catch (error) {
// Error handling or compensation goes here.
}
});
É possível usar o objeto context.df para invocar outras funções por nome, passar parâmetros e retornar a saída da função. Cada vez que o código chama yield, a estrutura das Durable Functions cria um ponto de verificação para o progresso da instância da função atual. Se o processo ou a máquina virtual for reciclada no meio da execução, a instância da função retomará na chamada yield anterior. Para obter mais informações, confira a próxima seção, Padrão nº2: Fan-out/fan-in.
Fonte: https://learn.microsoft.com/pt-br/azure/azure-functions/durable/durable-functions-overview?tabs=in-process%2Cnodejs-v3%2Cv1-model&pivots=javascript