Pagamentos SaaS

O que é uma Política de Retentativa de Webhook?

Autor: Oleksandra Butenko, Redatora

Revisado por: George Ploaie, Diretor de Operações (COO)

O que é uma Política de Retentativa de Webhook

O que é uma Política de Retentativa de Webhook?

Uma política de repetição de webhook é um conjunto de regras que um sistema de webhook usa para determinar se deve reenviar um webhook caso não seja bem-sucedido. Esta configuração especifica o limite de tentativas do sistema, a pausa entre cada tentativa, os critérios para falha e as condições para interrupção. Na maioria das políticas, o backoff exponencial é empregado para evitar tentativas em curtos períodos de tempo, enquanto os eventos com falha permanente são enviados para uma fila de mensagens mortas.

Tenha em mente:

A operação de novas tentativas em um modelo de entrega ‘pelo menos uma vez’ permite a chegada de eventos idênticos em múltiplas ocasiões. Seu receptor deve lidar com duplicatas com segurança, geralmente com chaves de idempotência.

Por que as Políticas de Retentativa de Webhook são necessárias?

As políticas de repetição são uma consideração relevante, dado que redes e serviços podem apresentar variações na confiabilidade. A finalização das transferências de dados durante distúrbios de rede ou serviço na entrega depende da presença de uma política de repetição ativa. Uma política de repetição evita a perda de dados de uma falha de entrega, garantindo uma nova tentativa após o lado receptor não retornar um 2xx.

Repetível (transitório)

Não repetível (permanente)

Eventos de rede

Endpoints inválidos

Tempos limite

Cargas úteis malformadas

Interrupções temporárias do servidor

Erros 4xx persistentes

Limitação de taxa

Lógica de negócios quebrada

 

Como funcionam as Políticas de Repetição de Webhook?

Quando uma tentativa de entrega de evento encontra um problema, a política do sistema geralmente o processa examinando o código de status HTTP. Em seguida, uma pausa é introduzida, consistente com um cronograma de repetição, antes que a transmissão do evento seja tentada novamente. Estes são os componentes:

  •       Condições de disparo: os status HTTP precisos que disparam uma nova tentativa.
  •       Cronograma de repetição: intervalos de tempo entre as tentativas, normalmente um recuo exponencial (exponential backoff) ou um valor extraído do cabeçalho Retry-After.
  •       Exposição de falhas: envolve funções que permitem a identificação de problemas sem uma resolução imediata, como uma indicação de tempo da próxima tentativa.
  •       Observabilidade e idempotência: logs, métricas e ferramentas de replay para análise de falhas, juntamente com o tratamento idempotente para evitar duplicatas.

 

Quais são as Estratégias de Repetição comuns?

A maioria das estratégias de nova tentativa incorpora um atraso no intervalo entre as tentativas. A mais seguida é o backoff exponencial; ele prolonga o período de espera a cada tentativa, o que, por sua vez, alivia a carga sobre um receptor que está enfrentando algum tipo de problema.

Isso significa:

  •       Backoff exponencial: é uma técnica em que as tentativas de repetição são separadas por períodos de tempo progressivamente mais longos.
  •       Adicionando jitter: variando o tempo de espera por um elemento aleatório para evitar picos de novas tentativas ao mesmo tempo. Twilio Event Streams implementa a ideia de jitter para evitar um “thundering herd”.
  •       Tentativas escalonadas: imediata, de curto prazo, de longo prazo e fila de mensagens mortas.
Dica de Especialista:

Um cronograma de novas tentativas publicado fornece aos integradores informações sobre as expectativas de tempo; um tempo não documentado pode contribuir para dificuldades de depuração.

Que papel desempenha uma Dead-Letter Queue (DLQ)?

Esta fila é destinada a eventos que utilizaram seus processos de retentativa configurados sem atingir um status concluído. Esses eventos são retidos em um local designado, permitindo a análise de seus detalhes, a observação de sua sequência ou o tratamento deles conforme a situação exigir.

Quais fatores devem guiar o design da Política de Retentativa?

Em vez de copiar cegamente políticas agressivas de nova tentativa, um bom design de nova tentativa considera quando o sistema pode ser sobrecarregado por muitas novas tentativas. Ou seja, envolve pensar cuidadosamente sobre os limites de nova tentativa e o tempo do intervalo.

  •       Prefira o backoff exponencial com jitter.
  •       Estabeleça limites de nova tentativa bem definidos e critérios de parada.
  •       Estabeleça regras inequívocas de código de status sobre quais entregas serão tentadas novamente e quais não.
  •       Chaves de idempotência referem-se ao gerenciamento consistente do reprocessamento.

Como as Retentativas de Webhook podem ser monitoradas de forma eficaz?

Práticas de monitoramento se relacionam à identificação precoce de discrepâncias na entrega do pipeline. Rastreie métricas que indicam problemas, notifique automaticamente via alertas e vincule-os às ferramentas usadas para a operação.

  •       Painéis: uma visão geral da saúde da entrega para o último período de tempo.
  •       Reprodução manual: uma opção que permite o reenvio de eventos após a causa raiz ser resolvida.
  •       Runbooks: elas apresentam ações pré-definidas para engenheiros de plantão, destinadas a guiar o processo de resolução de problemas.

Quais armadilhas comuns devem ser evitadas?

Armadilha

Impacto

Tempestades de retentativas

Retentativas imediatas ou infinitas estão empiricamente ligadas a uma maior atividade de processamento para o receptor

Falta de idempotência

Mecanismos de retentativa podem ocasionalmente envolver múltiplas execuções, levando a efeitos subsequentes

Retentar todos os erros 4xx

Isso influencia o processo de identificação de problemas de validação e de esquema.

Mascarando payloads inválidos.

A repetição de operações pode influenciar a visibilidade imediata de problemas na lógica.

Políticas não documentadas.

Discrepâncias de comportamento e a natureza intensiva da resolução de problemas.

Entrega fora de ordem.

Tem implicações para processos com requisitos rigorosos de sequenciamento.

 

Quais são os benefícios de uma Política de Retentativa de Webhook?

  •       Um processo de re-tentativa metódica de entregas falhas visa abordar instâncias onde os eventos poderiam, de outra forma, ficar sem processamento.
  •       Contribui para uma menor probabilidade de perda de dados de eventos durante interrupções de curto prazo e atrasos na entrega.
  •       As integrações geralmente se recuperam de curtos períodos de interrupção, com seus problemas associados sendo frequentemente temporários em vez de causar interrupções prolongadas.
  •       A entrega consistente de dados críticos, como pedidos e pagamentos, é um fator que influencia o nível de confiança nas integrações.
Tenha em mente:

Estes benefícios dependem de acertar a configuração. As configurações particulares de uma política podem influenciar a taxa de ocorrência de tempestades de retentativas. Quando a idempotência não faz parte de uma política, ela pode ser observada juntamente com a geração de eventos adicionais, o que pode levar a mais de um resultado.

Conclusão

Uma política de repetição de webhook é um meio de tornar uma integração orientada a eventos robusta, permitindo que entregas falhas sejam retentadas com várias estratégias, como *exponential backoff* e *jitter*, e que eventos 'mortos' sejam direcionados para uma DLQ. Uma política de repetição de webhook é um meio de tornar uma integração orientada a eventos robusta, permitindo que entregas falhas sejam retentadas com várias estratégias, como *exponential backoff* e *jitter*, e que eventos 'mortos' sejam direcionados para uma DLQ.

Pronto para começar?

Nós já estivemos onde você está. Compartilhe conosco os seus sonhos globais e deixe nossa experiência de 18 anos torná-los realidade.
Imagem em Mosaico
pt_BRPortuguês do Brasil