SHIFT >_CODE
← Journal

Webhooks ou polling: como os sistemas devem comunicar entre si

Quando um sistema precisa de saber o que acontece noutro, existem duas abordagens base. Explicamos a diferença de forma simples e como tornar qualquer uma delas fiável.

Uma loja online precisa de saber quando um pagamento foi concluído. Um CRM precisa de saber quando chega um novo pedido do website. Há duas formas base de um sistema saber o que acontece noutro: perguntar regularmente ou ser avisado.

Polling: perguntar regularmente

Com polling, o seu sistema pergunta ao outro a cada poucos minutos: «Há alguma novidade?». É simples de construir e funciona com quase qualquer serviço que tenha API. As desvantagens são o atraso - só sabe do evento na verificação seguinte - e o desperdício: a maioria dos pedidos não devolve nada, mas consome na mesma limites e recursos.

Webhooks: ser avisado

Com um webhook, o outro sistema envia uma mensagem para o seu endereço assim que algo acontece. A informação chega quase de imediato e não há pedidos vazios. O preço é a responsabilidade: o seu endpoint tem de estar disponível, verificar que a mensagem veio mesmo do parceiro e tratá-la corretamente mesmo que a mesma mensagem chegue duas vezes.

Como tornar os webhooks fiáveis

Verifique a assinatura ou o segredo que o fornecedor junta a cada mensagem, para que ninguém lhe possa enviar eventos falsos. Responda depressa e faça o processamento pesado em segundo plano; caso contrário, o fornecedor pode considerar a entrega falhada e repeti-la. Guarde um identificador de cada evento processado e ignore duplicados. Mantenha um registo das mensagens recebidas para poder investigar problemas.

A combinação prática

Na prática, as integrações mais robustas combinam as duas abordagens. Os webhooks entregam eventos em tempo real e uma verificação periódica - por exemplo, de hora a hora ou todas as noites - compara o estado dos dois lados e apanha o que escapou durante uma atualização do servidor ou uma falha do fornecedor.

Em resumo

O polling é simples, mas mais lento e desperdiçador; os webhooks são rápidos, mas exigem cuidado. Use webhooks pela velocidade, proteja-os com assinaturas e controlo de duplicados e acrescente uma reconciliação periódica para que nenhum evento se perca.