Compartilhar via


Recomendações para desenvolvimento de trabalhos em segundo plano

Aplica-se a esta recomendação da lista de verificação de confiabilidade bem arquitetada: Power Platform

RE:05 Fortaleça a resiliência da carga de trabalho implementando o tratamento de erros e o tratamento de falhas transitórias. Compile capacidades na solução para resolver falhas em componente e erros temporários.

Este guia descreve as recomendações para o desenvolvimento de trabalhos em segundo plano. Os trabalhos em segundo plano são executados automaticamente sem a necessidade de interação do usuário. Muitos aplicativos exigem trabalhos em segundo plano são executados independentemente da interface do usuário (UI).

Entre alguns exemplos de trabalhos em segundo plano estão trabalhos em lote, tarefas de processamento intensivas e processos de execução prolongada, como fluxos de trabalho. O aplicativo inicia o trabalho e processa solicitações interativas de usuários.

Por exemplo, um aplicativo pode precisar gerar um resumo e extrair sentimentos e pontos-chave de documentos carregados por usuários. Um trabalho em segundo plano pode ser realizado para executar as ações de IA e salvar o resumo e os pontos-chave no banco de dados. O usuário não precisa aguardar a conclusão do processo. Como outro exemplo, um usuário pode enviar uma declaração de despesa, o que inicia um fluxo de trabalho em segundo plano que processa a declaração de despesas e a envia para aprovação. O usuário pode continuar registrando outra declaração de despesa ou sair do aplicativo enquanto o trabalho em segundo plano é executado. Depois da conclusão do trabalho em segundo plano, ele vai enviar um email ao usuário para confirmar se a declaração de despesa foi enviada para aprovação.

Os trabalhos em segundo plano ajudam a minimizar a carga sobre a interface do usuário do aplicativo, o que aumenta a disponibilidade e reduz o tempo de resposta interativa.

Estratégias-chave de design

Para escolher qual tarefa designar como um trabalho em segundo plano, considere se a tarefa é executada sem interação do usuário e se a interface do usuário precisa aguardar a conclusão da tarefa. As tarefas que exigem que o usuário ou a interface do usuário aguarde enquanto são executadas normalmente não são trabalhos em segundo plano indicados.

Tipos de trabalhos em segundo plano

Alguns exemplos de trabalhos em segundo plano são:

  • Trabalhos que usam muitos recursos e demoram muito tempo para serem concluídos, como a execução de uma série de transações.

  • Trabalhos em lote, como atualizações de dados noturnas ou processamento agendado.

  • Fluxos de trabalho de execução prolongada, como processamento da ordem ou provisionamento de serviços e sistemas.

  • Fluxos de trabalho que exigem colaboração assíncrona, como aprovações.

  • Processamento de dados confidenciais que transfere a tarefa para um local mais seguro para processamento. Por exemplo, talvez você não queira processar dados confidenciais em um aplicativo Web. Em vez disso, você pode usar um padrão como o padrão Gatekeeper a fim de transferir os dados para um processo em segundo plano isolado que tenha acesso ao armazenamento protegido.

Gatilhos

Inicie trabalhos em segundo plano com:

  • Gatilhos acionados por eventos: Um evento, seja uma ação do usuário no aplicativo ou um evento que ocorre em um fonte de dados, aciona o tarefa.

  • Gatilhos baseados em cronograma: um cronograma baseado em um cronômetro invoca o tarefa. O trabalho pode ser agendado de maneira recorrente ou para uma única execução.

Gatilhos orientados por evento

Uma ação dispara uma invocação orientada por evento que inicia a tarefa em segundo plano. Entre os exemplos de gatilhos orientados por evento estão:

  • A interface do usuário ou um trabalho diferente dispara o trabalho em segundo plano e passa dados da ação realizada para o trabalho em segundo plano. Por exemplo, um usuário envia uma declaração de despesa por meio de um formulário, e os detalhes do formulário são passados para o trabalho em segundo plano para processamento.

  • A interface do usuário ou um trabalho diferente salva ou atualiza um valor que está no armazenamento. O trabalho em segundo plano monitora o armazenamento e detecta alterações, como novos valores sendo adicionados ou valores existentes sendo modificados, e dispara o trabalho em segundo plano com base nessa alteração.

  • A interface do usuário ou um trabalho diferente faz uma solicitação para um ponto de extremidade, como um URI HTTPS ou uma API exposta como um serviço Web. Como parte da solicitação, a interface do usuário ou o trabalho transfere os dados que a tarefa em segundo plano requer. O ponto de extremidade ou o serviço Web invoca a tarefa em segundo plano, que usa os dados como entrada.

Outros exemplos de gatilhos acionados por eventos incluem um formulário sendo enviado em um aplicativo, uma nova linha sendo adicionada ao armazenamento de dados, um frase de gatilho no copilot iniciando um tópico que chama um fluxo, o valor de um campo sendo alterado no armazenamento de dados, um e-mail com um assunto específico ou de um remetente específico chegando na caixa de entrada e um arquivo sendo carregado em um local de armazenamento de arquivos.

Use condições de disparo para simplificar os fluxos de trabalho e reduzir o número de execuções desnecessárias. As condições de gatilho configuram várias condições que devem ser atendidas para que um fluxo de trabalho seja disparado.

Observação

Não se esqueça de usar as condições de gatilho para evitar loops infinitos se, como parte do fluxo de trabalho, você alterar a fonte de dados que inicia o fluxo de trabalho. Por exemplo, o aplicativo pode alterar campos em uma linha da tabela do Microsoft Dataverse e o fluxo de trabalho realizar consultas adicionais com base nesses campos alterados, modificando ainda mais a mesma linha. Use as condições de gatilho para só iniciar o fluxo de trabalho quando os campos alterados pelo aplicativo forem atualizados, mas não nenhum outro campo.

Gatilhos orientados por agendamento

Um temporizador dispara uma invocação orientada por agendamento que inicia a tarefa em segundo plano. Entre os exemplos de gatilhos orientados por agendamento estão:

  • Um trabalho em segundo plano é executado diária ou semanalmente e realiza um conjunto de ações.

  • Um processo ou um aplicativo à parte inicia um temporizador que invoca a tarefa em segundo plano após um atraso ou um tempo específico.

Entre outros exemplos de tarefas indicadas para invocação orientada por agendamento estão rotinas de processamento em lote (como atualização das listas de produtos relacionados para clientes com base no comportamento recente), tarefas de processamento de dados de rotina (como geração de resultados acumulados), análise de dados para relatórios diários, limpeza da retenção de dados e verificações da consistência de dados.

Retornar resultados

Os trabalhos em segundo plano são executados de maneira assíncrona em um processo à parte da interface do usuário ou do processo que invocou o trabalho em segundo plano. O ideal é que os trabalhos em segundo plano sejam operações disparar e esquecer. O progresso de runtime não influencia a interface do usuário ou o processo de chamada, o que significa que o processo de chamada não aguarda a conclusão das tarefas. A interface do usuário e o processo de chamada não conseguem detectar quando a tarefa termina.

Se precisar de uma tarefa em segundo plano para se comunicar com a tarefa de chamada para indicar o progresso ou a conclusão, você deverá implementar um mecanismo:

  • Grave um valor indicador de status no armazenamento que seja acessível à interface do usuário ou à tarefa do chamador, que pode monitorar ou verificar esse valor. Outros dados que a tarefa em segundo plano retorna ao chamador podem ser colocados no mesmo armazenamento.

  • Exponha uma API ou um ponto de extremidade da tarefa em segundo plano que a interface do usuário ou o chamador possa acessar para obter informações de status. A resposta pode incluir os dados que a tarefa em segundo plano retorna ao chamador.

  • Configure a tarefa em segundo plano para responder com o status ou os dados reprocessados por ela para a interface do usuário.

Coordenação

As tarefas em segundo plano podem ser complexas e exigir várias tarefas a serem executadas. Nesses cenários, é comum dividir a tarefa em etapas ou subtarefas menores e discretas que vários consumidores podem executar. Os trabalhos multietapa são mais eficientes e mais flexíveis porque as etapas individuais normalmente são reutilizáveis em vários trabalhos. Também é fácil adicionar, remover ou modificar a ordem das etapas.

Pode ser um desafio coordenar várias tarefas e etapas, mas há existem padrões comuns para orientar a solução:

  • Decomponha um tarefa em várias etapas reutilizáveis. Um aplicativo talvez seja necessário para realizar tarefas variadas de complexidade diferente nas informações processadas por ele. Uma abordagem simples, mas inflexível, para implementar esse aplicativo é realizar esse processamento como um módulo monolítico. Porém, é provável que essa abordagem reduza as oportunidades de refatorar o código, otimizar ou reutilizá-lo caso o aplicativo exija partes do mesmo processamento em outro lugar.

  • Gerencie a orquestração das etapas para um tarefa. Um aplicativo pode realizar tarefas que compreendam muitas etapas, algumas das quais podem invocar serviços remotos ou acessar recursos remotos. Às vezes, as etapas individuais independem umas das outras, mas são orquestradas pela lógica do aplicativo que implementa a tarefa.

  • Gerencie a recuperação das etapas tarefa que falham. Se uma ou mais das etapas falharem, um aplicativo poderá precisar desfazer o trabalho que uma série de etapas realiza, o que define uma operação que acaba sendo consistente.

Considerações sobre resiliência

Crie tarefas resilientes em segundo plano a fim de oferecer serviços confiáveis para o aplicativo. Ao planejar e projetar tarefas em segundo plano, leve em consideração os seguintes pontos:

  • As tarefas em segundo plano precisam processar normalmente reinicializações sem corromper dados ou introduzir inconsistência no aplicativo. Para tarefas de execução prolongada ou multietapa, leve em consideração o uso dos pontos de verificação. Use pontos de verificação para salvar o estado de trabalhos no armazenamento persistente ou como mensagens em uma fila e configure a lógica de repetição em caso de falhas inesperadas de uma ação.

  • Quando você usa filas para se comunicar com tarefas em segundo plano, as filas podem funcionar como um buffer a fim de armazenar solicitações enviadas para as tarefas enquanto o aplicativo está sob uma carga maior do que a normal. As tarefas podem acompanhar a interface do usuário durante períodos menos ocupados, e as reinicializações não bloqueiam a interface do usuário.

Considerações sobre escala e desempenho

As tarefas em segundo plano devem oferecer desempenho suficiente para garantir que não bloqueiem o aplicativo nem atrasem a operação quando o sistema estiver sob carga. Normalmente, o desempenho melhora quando você dimensiona as instâncias de computação que hospedam as tarefas em segundo plano. Ao planejar e projetar tarefas em segundo plano, leve em consideração os seguintes pontos relacionados à escalabilidade e ao desempenho:

  • Os trabalhos em segundo plano poderão afetar a experiência do usuário se os resultados das tarefas em segundo plano forem apresentados ao usuário. Por exemplo, trabalhos em segundo plano podem exigir que o usuário aguarde uma notificação, atualize a página ou verifique manualmente o status da tarefa. Esses comportamentos podem aumentar a complexidade da interação do usuário e afetar negativamente a experiência do usuário. Leve em consideração alternativas para responder os dados de volta à interface do usuário, como enviar uma notificação por email ou pelo Microsoft Teams, ou incluir a capacidade de verificar se há atualizações de status na interface do usuário. Em nosso exemplo de envio dos formulários de despesa, em vez de responder o status de volta à Interface do Usuário, você pode ter uma página no aplicativo que lista todos os formulários de despesa enviados com o status e a capacidade de disparar uma atualização.

  • Os trabalhos em segundo plano poderão criar desafios para a sincronização de dados e a coordenação de processos, especialmente se as tarefas em segundo plano dependerem umas das outras ou de outras fontes de dados. Por exemplo, trabalhos em segundo plano podem lidar com problemas de consistência de dados, condições de corrida, bloqueis ou tempos limite.

  • Para evitar a perda de desempenho sob carga, convém implementar a lógica de maneira que um único ponto da cadeia de processamento não cause um gargalo. Leve em consideração outras limitações, como a taxa de transferência máxima das ações de fluxo de trabalho, armazenamento e outros serviços dos quais o aplicativo e as tarefas em segundo plano dependem.

Compensação: Trabalhos em segundo plano introduzem mais componentes e dependências ao sistema, o que pode aumentar a complexidade e os custos da solução. Por exemplo, trabalhos em segundo plano podem exigir um serviço de monitoramento à parte e um mecanismo de repetição.

Facilitação do Power Platform

As seções a seguir descrevem os serviços que você pode usar para hospedar, executar, configurar e gerenciar trabalhos em segundo plano.

Power Automate

Power Automate fluxos de nuvem são fluxos de trabalho executados na nuvem. Eles podem ser fluxos automatizados disparados por um evento, como a chegada de um email de uma pessoa específica. Eles podem ser fluxos instantâneos iniciados ao clique de um botão, como um lembrete para a equipe enviado por você pelo dispositivo móvel. Eles podem ser fluxos agendados executados em um determinado momento, como um upload de dados diário ou um banco de dados do SharePoint. Você também pode automatizar tarefas repetitivas no desktop ou no dispositivo móvel.

Familiarize-se com os limites de fluxos automatizados, programados e instantâneos em relação à taxa de transferência, à solicitação, à simultaneidade, ao loop e à remoção do lote. Não se esqueça de levar esses limites em consideração ao projetar o fluxo de trabalho.

Reduza o risco planejando o tratamento de erro.

Here são alguns exemplos de onde você pode usar Power Automate fluxos para executar trabalhos em segundo plano:

Microsoft Dataverse

Microsoft Dataverse colunas calculadas e rollups:

  • Colunas de fórmula são colunas que exibem um valor calculado em uma Microsoft Dataverse tabela.

  • As colunas calculadas automatizam cálculos manuais usados em processo empresarial. Por exemplo, talvez um vendedor queira saber a receita ponderada para uma oportunidade, que se baseia na receita estimada de uma oportunidade multiplicada pela probabilidade. Ou, elas vão querer aplicar automaticamente um desconto se um pedido for maior que um determinado valor. Uma coluna calculada pode conter valores como o resultando de operações matemáticas simples, ou operações condicionais, como maior que ou if-else.

  • As colunas cumulativas ajudam os usuários a obter insights sobre dados ao monitorar as principais métricas de negócios. Uma coluna de rollup contém um valor agregado computado nas linhas relacionadas a uma linha específica. Inclui tabelas regulares e tabelas de atividade, como emails e compromissos. Em cenários mais complexos, você pode agregar dados na hierarquia de linhas. Como administrador ou personalizador, você pode definir colunas cumulativas por meio das ferramentas de personalização do Power Apps, sem precisar escrever código.

Operações em segundo plano podem enviar solicitações que Dataverse são processadas de forma assíncrona. As operações em segundo plano são úteis quando você não deseja manter uma conexão durante a execução de uma solicitação.

Plug-ins são manipuladores de eventos personalizados que são executados em resposta para um evento específico gerado durante o processamento de uma Microsoft Dataverse operação de dados.

O Microsoft Dataverse também oferece uma solução poderosa para obter uma arquitetura de dados mais eficiente e reduzir a carga de trabalho no lado do cliente por meio de plug-ins low-code. Esses plug-ins são fluxos de trabalho reutilizáveis, em tempo real, que executam um conjunto específico de comandos dentro do Dataverse, em execução no lado do servidor e disparados por manipuladores de eventos personalizados.

Lista de verificação de confiabilidade

Consulte o conjunto completo de recomendações.