O que é a Tarefa Durável?

Tarefa Durável é a implementação da Microsoft da Execução Durável, uma abordagem em toda a indústria para tornar o código comum tolerante a falhas, persistindo automaticamente seu progresso. É um framework para construir fluxos de trabalho tolerantes a falhas e orquestrações como código comum. Em vez de gerenciar lógica de retentativa complexa, máquinas de estados ou filas de mensagens, você escreve sua lógica de negócio como funções diretas, e o Durable Task cuida da persistência do estado, recuperação automática e coordenação distribuída para você.

Os fluxos de trabalho do Durable Task podem ser executados por horas, dias ou até mesmo meses, retomando de forma confiável da última etapa concluída após qualquer falha, reinicialização ou reimplantação. Os casos de uso comuns incluem transações distribuídas, orquestração de IA de vários agentes, pipelines de processamento de dados e gerenciamento de infraestrutura.

O restante deste artigo explica onde o Durable Task se encaixa, as linguagens e modelos de hospedagem que ele suporta e como ele é estruturado, para que você possa decidir como construir aplicações tolerantes a falhas com ele.

O que inclui a Tarefa Durável

Tarefas Duráveis incluem:

Principais casos de uso da Tarefa Durável

Use Tarefa Durável quando seu aplicativo exigir uma orquestração de workflows confiáveis e de longa duração entre serviços distribuídos. Cenários comuns incluem:

  • Processos de longa duração: A Tarefa Durável pode gerenciar o estado e o progresso de processos que rodam por períodos prolongados, apesar de interrupções ou erros. Os exemplos incluem processamento de pedidos, pipelines de dados, treinamento de modelos de aprendizado de máquina e simulações de execução prolongada.
  • Cenários paralelos e de dispersão/ventilação: A Tarefa Durable pode coordenar trabalhos que se espalham entre múltiplos trabalhadores rodando em paralelo em diferentes máquinas, e então agregar os resultados. Exemplos incluem processamento de imagens, trabalhos de redução de mapa e fluxos de trabalho ETL.
  • Orquestrando microsserviços e APIs: a Tarefa Durável pode coordenar o trabalho entre serviços distribuídos, APIs e computadores com fluxo de controle complexo e tratamento de erros. O Durable Task também suporta transações distribuídas que usam o padrão saga, onde cada etapa possui lógica compensatória que roda automaticamente se uma etapa posterior falhar.
  • Automação de processos de negócios: A Tarefa Durável pode automatizar processos de negócios complexos e determinísticos que envolvem múltiplas etapas, dependências, manejo humano no ciclo e erros ao longo de longos períodos. Os exemplos incluem gerenciamento da cadeia de suprimentos, revisão de documentos, integração de clientes e verificação de identidade.
  • Automação de infraestrutura: a Tarefa Durável pode gerenciar o provisionamento, a configuração e a implantação de infraestrutura com dependências complexas e tratamento de erros. Exemplos incluem o gerenciamento de recursos de nuvem e pipelines de CI/CD.
  • Orquestração multi-agente: A Durable Task pode coordenar o trabalho de múltiplos agentes de IA, garantindo a adesão confiável às tarefas a longo prazo e o uso eficiente de tokens para processos complexos e de IA em múltiplas etapas. Exemplos incluem agentes de IA para pesquisa profunda, codificação e suporte ao cliente.

Um tema comum nesses cenários é que eles envolvem trabalhos complexos demais, de longa duração ou muito distribuídos para serem gerenciados de forma confiável com código ad hoc. O Durable Task fornece as garantias subjacentes — persistência, tolerância a falhas e coordenação com estado — para que você possa expressar esse trabalho como código simples.

Idiomas com suporte e modelos de hospedagem de Tarefas Duráveis

O Durable Task suporta múltiplas linguagens de programação em dois modelos hosting: Azure Functions (por meio da extensão Durable Functions) e auto-hospedado (através dos SDKs independentes do Durable Task). O modelo de hospedagem Azure Functions oferece um ambiente de computação totalmente gerenciado, sem servidor, com recursos integrados de escalonamento e orquestração, enquanto o modelo auto-hospedado suporta a execução de aplicações duráveis em qualquer plataforma de computação, como Aplicativos de Contêiner do Azure, Serviço de Kubernetes do Azure, Serviço de Aplicativo do Azure, ou máquinas virtuais.

Linguagem Azure Functions Auto-hospedado
.NET (C#/F#) Yes Yes
JavaScript/TypeScript Yes Yes
Python Yes Yes
Java Yes Yes
PowerShell Yes No

Observação

O Durable Task Go SDK também está disponível como uma opção de código aberto apoiada pela comunidade para cenários auto-hospedados, mas está em estágio experimental e ainda não é recomendado para uso em produção.

Para obter diretrizes sobre como escolher entre Azure Functions e auto-hospedados, consulte Conseque seu modelo de hospedagem.

Arquitetura de Tarefas Duráveis: SDK e backend de armazenamento de estado

A Tarefa Durável tem duas camadas principais: um SDK que você usa no código do aplicativo e um back-end de armazenamento de estado que gerencia o estado.

SDK de tarefa durável

Você usa o Durable Task SDK para criar orquestrações, atividades e entidades no seu código de aplicação. Ele lida internamente com a mecânica da execução durável — reproduzindo funções do orquestrador, gerenciando o contexto local de execução e comunicando-se com o backend de armazenamento de estados. O Durable Task oferece várias opções de SDK entre as linguagens suportadas e os dois modelos de hospedagem: Azure Functions e auto-hospedado.

Para obter diretrizes sobre como escolher entre essas opções, consulte Escolher seu modelo de hospedagem.

Back-end de armazenamento de estado

O backend de armazenamento de estados mantém o estado de orquestração, mantém o histórico de execução e coordena a escalabilidade distribuída entre as instâncias de computação.

A opção recomendada de armazenamento de estado é o Durable Task Scheduler — um serviço Azure totalmente gerenciado, desenvolvido especialmente e altamente otimizado para cargas de trabalho Durable Task. Ele funciona tanto com o Durable Functions quanto com os SDKs de Tarefa Durável autônomos e fornece o conjunto mais rico de recursos sem necessidade de infraestrutura de armazenamento para gerenciar.

Como alternativa, o Durable Functions oferece suporte a várias opções de armazenamento traga-o-seu-próprio (BYO). Essas opções dão mais controle sobre onde armazenar o estado, mas exigem que você mesmo faça provisionamento e gerencie a infraestrutura subjacente. No momento, os back-ends de armazenamento BYO só estão disponíveis com Durable Functions.

Para obter mais informações sobre opções de armazenamento, consulte provedores de armazenamento.

Recursos adicionais da Tarefa Durável

Publicações de pesquisa

A Microsoft desenvolve o Durable Task em colaboração com a Microsoft Research. Como resultado, a equipe produz artigos de pesquisa e artefatos, incluindo:

Visão geral em vídeo

O vídeo a seguir destaca os benefícios do Durable Functions:

Próximas Etapas