O Que É uma Arquitetura de Webhook? Notificações Push Entre Sistemas
Uma arquitetura de webhook permite que um sistema notifique outro enviando uma requisição HTTP para uma URL registrada quando um evento acontece.
Webhooks são como sistemas fazem push de eventos uns aos outros pela internet. Em vez de um sistema fazer polling de outro por mudanças, o sistema de origem chama uma URL que você registrou no instante em que algo acontece. O GitHub disparando um workflow quando você faz push, o Stripe notificando você de um pagamento, essas são arquiteturas de webhook, e são a espinha dorsal da maior parte do triggering de CI/CD.
Push em vez de poll
Você registra uma URL de callback com um provedor e diz a ele com quais eventos você se importa. Quando tal evento ocorre, o provedor envia um HTTP POST para sua URL com um payload descrevendo o que aconteceu. Sem polling, entrega quase em tempo real.
Por que impulsiona integrações
- Reação em tempo real sem polling constante.
- Acoplamento fraco entre a origem e o receptor.
- Um contrato HTTP simples que qualquer sistema pode implementar.
- Encaixe natural para disparar pipelines em eventos externos.
As partes difíceis do receptor
Seu endpoint precisa verificar a assinatura para confiar apenas em entregas reais, responder rapidamente para que o remetente não sofra timeout, e lidar com entregas duplicadas de forma idempotente. Provedores fazem retry em falhas, então o mesmo evento pode chegar mais de uma vez.
Webhooks e CI/CD
Um webhook de push ou pull request é o que inicia a maioria dos pipelines. O receptor do webhook traduz o evento em um build, então sua confiabilidade afeta diretamente se seu CI roda ou não. Webhooks perdidos ou não verificados significam builds perdidos ou maliciosos.
Projetando para retries
Como remetentes fazem retry em respostas não-2xx, um receptor instável causa processamento duplicado. Tratamento idempotente, confirmação rápida e enfileirar o trabalho real por trás do endpoint mantêm uma arquitetura de webhook confiável sob retries.
Uma nota sobre o Latchkey
O Latchkey inicia runners gerenciados a partir de um webhook do GitHub no instante em que um job é enfileirado. Como esse gatilho é baseado em push, a confiabilidade do caminho do webhook é exatamente o que determina quão rápido um runner entra em ação.
Principais conclusões
- Uma arquitetura de webhook faz push de eventos sobre HTTP em vez de fazer polling por eles.
- Receptores precisam verificar assinaturas, responder rápido e lidar com entregas duplicadas.
- Webhooks são o que dispara a maioria dos pipelines de CI/CD a partir de eventos externos.