Guia: Erro ao lidar com padrões de integração

Guia: Erro ao lidar com padrões de integração

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


No mundo da integração de dados, o tratamento de erros é crucial para uma estratégia bem-sucedida de integração de dados; no entanto, é frequentemente uma das áreas mais negligenciadas, porque, francamente, pode ser bastante intimidante quando você tenta compreendê-lo inicialmente. Na minha série de postagens, espero reduzir essa complexidade, dividindo-a em conceitos simples e fáceis de digerir.

Nos meus posts anteriores, discuti o básico sobre tratamento de erros no MuleSoft:

  1. Entendendo como o erro se propaga / continua trabalhando.
  2. Compreendendo o comportamento de cada um em diferentes cenários.
  3. Compreendendo como lidar com erros específicos.

Nesta postagem, discutirei como esses conceitos podem ser combinados na arquitetura de referência para lidar com diferentes tipos de erros … mas antes de entrar nessas arquiteturas diferentes, é importante entender os tipos de erros que podem ocorrer em diferentes tipos de integrações.

Erros transitórios x mensagens envenenadas

Em geral, você pode classificar os erros em duas categorias diferentes: erros transitórios e mensagens suspeitas.

Erros transitórios são erros que ocorrem esporadicamente e geralmente podem ser resolvidos ao tentar novamente o processamento da mensagem. Por exemplo, se você tentar se conectar a um sistema e obter um erro de rede ou um erro de tempo limite de solicitação … esses erros geralmente podem ser resolvidos aguardando e reenviando as mensagens.

Por outro lado, se você receber uma mensagem de erro indicativa de um erro de autenticação ou um erro de recurso não encontrado – não importa quantas vezes você tente novamente essas mensagens – elas não se resolverão. Esses tipos de erros são considerados mensagens envenenadas e requerem algum tipo de intervenção para serem resolvidos.

Uma coisa importante a lembrar sobre erros transitórios é que eles são apenas erros transitórios por tanto tempo e podem se tornar mensagens envenenadas que precisam de intervenção manual. Por exemplo, suponha que você esteja tentando se conectar a algum aplicativo SaaS e receba um erro de serviço indisponível na primeira tentativa, tente novamente a solicitação três ou quatro vezes mais e continue recebendo o mesmo erro. Em algum momento, é necessário tomar uma decisão para parar de tentar novamente a mensagem e mostrar o erro para obter algum tipo de intervenção manual. Nesse ponto, o erro transitório se torna uma mensagem envenenada e é tratado como tal.

Além dos diferentes tipos de erros, você também precisa estar ciente dos padrões de integração nos quais esses erros ocorrem, para poder lidar com eles corretamente.

Integração síncrona vs assíncrona

De um nível muito alto, existem dois padrões diferentes para integrar dados: síncrono e assíncrono e é importante entender o que se entende por cada um. Para definir melhor o nível deste tópico, vamos usar um exemplo simples de um problema da vida real: entregar um pacote.

Opção 1 – Você pode empacotar tudo, dirigir pela cidade para entregar o pacote, torcer para que a pessoa esteja em casa, entregar o pacote e seguir em frente com seu dia.

Leia Também  Como aplicar as principais tendências de 2020 à sua estratégia de marketing digital

Esta é a integração síncrona. Nesse caso, cada etapa é verificada como concluída antes do início da próxima e você deve aguardar a conclusão de todas as etapas antes de prosseguir com o seu dia.

Em termos técnicos, a integração síncrona (às vezes chamada de comunicação de bloqueio) ocorre quando um aplicativo remetente envia uma solicitação a um aplicativo receptor e deve aguardar uma resposta antes de continuar com seu processamento. Isso geralmente é usado quando o processamento de uma etapa depende dos resultados da etapa anterior.

opção 2 – Você pode entregar o pacote ao carteiro e fazer com que ele faça todo o trabalho para que você possa continuar seu dia.

Essa é a integração assíncrona (às vezes chamada de comunicação sem bloqueio ou disparar e esquecer). Nesse caso, você pode simplesmente permitir que alguém faça o trabalho e não precisa esperar que eles concluam o trabalho para que você continue seu dia. Em outras palavras, o aplicativo remetente não depende do aplicativo receptor para concluir seu processamento para avançar.

Nos dois casos, os pacotes são entregues ao destinatário, apenas de maneiras diferentes e cada um com benefícios diferentes. Nas integrações síncronas, você tem maior controle sobre o que acontece em cada etapa e tem confirmação imediata sobre se algo é bem-sucedido ou falha … no entanto, é demorado, pois você precisa aguardar a conclusão de todos os processos. Por outro lado, as integrações assíncronas geralmente consomem menos tempo do ponto de vista de solicitação / resposta por causa da mentalidade de ignorar e esquecer … no entanto, geralmente leva mais tempo para identificar quando ocorrem problemas.

Além disso, é importante observar que esses dois estilos diferentes de integração não são mutuamente exclusivos quando se trata de projetos – ambos podem estar presentes na mesma integração. Tomemos, por exemplo, o cenário a seguir, em que você tem um processo principal e, em seguida, vários processos se separam:

A ideia é que o processo principal possa ser executado de forma síncrona:

Ao permitir que os processos de spin off sejam executados de forma assíncrona (por exemplo, alerta ou manipulação de inventário, etc.):

É importante que você entenda como cada um desses padrões funciona porque, em ambos os casos, podem ocorrer erros e essas podem ser mensagens transitórias ou envenenadas e cada tipo de erro é tratado de maneiras diferentes.

Tratamento de erros específicos de padrão

Ao pensar nos tipos de erros, é útil categorizá-los nos padrões em que ocorrem e depois nos tipos de erros em que eles são. Isso determinará o método para lidar com esses erros. As quatro categorias são:

  1. Mensagens envenenadas assíncronas
  2. Erros transitórios assíncronos
  3. Mensagens envenenadas síncronas
  4. Erros transitórios síncronos

Processamento de mensagens síncronas

Quando ocorre um erro durante o processamento de mensagens síncronas, suas opções são bastante limitadas sobre o que você pode fazer para lidar com os erros. A razão pela qual suas opções são limitadas é simplesmente devido à natureza do padrão síncrono em que uma etapa depende das outras. Portanto, se você não concluir todas as etapas do processo com êxito, provavelmente precisará reverter todas as etapas do processo se um erro não puder ser tratado normalmente.

Leia Também  Como manter sua equipe de trabalho remota unida

Mensagens envenenadas síncronas

Nesse caso, você está processando mensagens de maneira síncrona e uma das etapas falha com um erro que, não importa quantas vezes você tenha tentado novamente, não pode ser resolvido sem intervenção manual. Nesse caso, sua única opção é simplesmente retornar o erro ao aplicativo de envio. Abaixo estão os processos simples:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
  1. Retroceda todas as transações criadas anteriormente no fluxo.
  2. As mensagens de erro são registradas usando a estrutura padrão de tratamento de erros.
  3. Retorne a mensagem de erro ao solicitante.

Erros transitórios síncronos

Nesse cenário, você está processando uma mensagem de forma síncrona e ocorre algum tipo de erro em que é provável que você possa resolver tentando novamente a mensagem e não precisa de intervenção manual. Com isso dito, em algum momento você atingirá um limite predefinido por quantas vezes você repetirá a mensagem e, em seguida, ela se tornará uma mensagem envenenada e será tratada como tal.

  1. A mensagem é repetida de acordo com o número máximo de tentativas e de tentativas pré-configuradas.
  2. Se aplicável, a nova tentativa será tentada:
    1. Contagem de novas tentativas incrementada.
    2. Se for bem-sucedido, o resultado será retornado.
    3. Se malsucedido, aguarde o período de nova tentativa de definição.
    4. Repita o erro novamente.
  3. Se o número máximo de tentativas for atingido, as transações criadas anteriormente no fluxo deverão ser revertidas.
  4. As mensagens de erro são registradas usando a estrutura padrão de tratamento de erros.
  5. Retorne a mensagem de erro ao solicitante.

Processamento de mensagens assíncronas

A capacidade de lidar com erros em integrações assíncronas pode ser um pouco mais complicada no processo, mas isso permite que você tenha mais flexibilidade com seus processos.

No tratamento de erros assíncrono, apresentamos o conceito de filas na imagem para tratamento de erros, especificamente:

  • Fila de repetição – Uma fila usada para manter as mensagens que precisam ser processadas novamente. Normalmente, uma integração é criada para ler mensagens dessa fila e processá-las automaticamente.
  • Fila de Devoluções – Uma fila usada para armazenar mensagens envenenadas para intervenção manual.

Entre os dois, eles serão usados ​​como parte da arquitetura de referência abaixo para lidar com erros assíncronos:

No lado esquerdo (sombreado), você pode ver como lidamos com erros síncronos. Na próxima seção, falaremos sobre o lado direito do diagrama, que descreve o tratamento de erros assíncronos

Mensagem envenenada assíncrona

Assim como nas mensagens síncronas, quando você recebe uma mensagem envenenada, não há muito o que fazer além de revelar o erro para que possa ser resolvido manualmente. O processo para isso é o seguinte:

  1. Retroceda todas as transações criadas anteriormente no fluxo.
  2. A mensagem de erro é registrada usando a estrutura de tratamento de erros padrão.
  3. Publique a mensagem na fila de devoluções para intervenção manual.

Erros transitórios assíncronos

Erros transitórios que ocorrem durante integrações assíncronas são uma área enorme em que a automação pode ajudá-lo a lidar com os erros normalmente, sem intervenção humana. Com isso dito, o manuseio desses tipos de erros também possui as “peças mais móveis” e, portanto, requer algum esforço para desenvolver esse processo.

A estratégia básica para lidar com erros transitórios em padrões assíncronos é:

  1. Verifique se o número máximo de tentativas ocorreu.
  2. Se sim, envie a mensagem para uma fila de mensagens não entregues.
  3. Caso contrário, envie essa mensagem para uma fila de novas tentativas para processamento futuro de novas tentativas.
  4. Crie um processo para repetir automaticamente o processamento das mensagens.
Leia Também  Serviços de conteúdo: uma chave para a resiliência organizacional

Esse processo parece bastante simples de alto nível, mas a chave está na última etapa, criando um processo para reprocessar automaticamente as mensagens. Vamos nos aprofundar um pouco mais na aparência.

Processo de Repetição

No tratamento de erros assíncrono, o processo de nova tentativa é a carne e os ossos reais da “mágica” do tratamento de erros, neste cenário. Nesse processo, uma mensagem – quando pronta – é retirada da fila de repetição e reenviada para a fila de processos apropriada para reprocessamento. Esse procedimento deve ser flexível para que o processo possa ser iniciado automaticamente por meio de um timer (ou algo semelhante), mas também iniciado manualmente para permitir o reprocessamento manual das mensagens.

Também é importante que, quando as mensagens são enviadas para a fila de novas tentativas, elas tenham atributos específicos, para que o processo de nova tentativa possa efetivamente rotear a mensagem para processamento. Alguns exemplos de aspectos são:

  • Erro de código
  • Mensagem de erro
  • Nome da fila de processos
  • SLA
  • Registro de data e hora do último processamento

Veja como seria um processo de amostra:

  1. Uma mensagem pronta para reprocessamento é retirada da fila – acionada manualmente ou através de algum tipo de processo agendado.
  2. A carga útil é validada para garantir que é uma carga válida e não foi corrompida.
  3. A mensagem, com base nos detalhes da mensagem, é enviada para a fila do processo original para reprocessamento.
  4. Depois que esse processamento assume, a estratégia de manipulação de erros assíncrona (discutida anteriormente) assume.

Reunindo tudo isso

Em um cenário ideal, os aplicativos funcionariam sem problemas e não haverá erros, mas como todos sabemos, os erros acontecem e a maneira como uma empresa lida com esses erros pode causar ou interromper uma organização quando se trata de sua estratégia de integração de dados. É importante que os erros sejam tratados da maneira mais transparente possível e, na medida do possível, tratados sem intervenção humana.

Muitas vezes, pode ser um pouco esmagador para as pessoas desenvolverem uma estratégia de tratamento de erros, mas se você a dividir em partes menores, é muito mais consumível. Nas postagens anteriores do blog desta série, abordamos os fundamentos de como criar componentes de tratamento de erros em seus fluxos e, com este blog, abordamos como lidar com erros de uma perspectiva de padrões. Na minha próxima e última parte desta série, planejo abordar como as organizações podem abordar a criação de sua estratégia de tratamento de erros e os componentes necessários para lidar com essa estratégia.

Para mais recursos, treinamentos e tutoriais para desenvolvedores, consulte developer.mulesoft.com e training.mulesoft.com.


*As fotos exibidas neste post pertencem ao post blogs.mulesoft.com


cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Luiz Presso
Luiz Presso