Un webhook es una solicitud HTTP que un servicio envía a una URL que registras cada vez que ocurre un evento específico. Permite que tu sistema reciba datos a medida que suceden, en lugar de sondear una API llamándola una y otra vez para ver si hay algo nuevo disponible. En un pipeline de datos, eso significa que un trabajo puede reaccionar a un evento tan pronto como la fuente lo informe.
La plataforma de pagos Stripe, por ejemplo, envía eventos de webhook a tu endpoint a través de HTTPS como una carga útil JSON. Tu endpoint debe aceptar solicitudes POST y procesar los datos del evento que recibe.
Cómo Funciona la Entrega de Webhooks
La documentación de Stripe muestra la mecánica principal:
- Registro: Registras una URL de endpoint. En modo en vivo, Stripe requiere una URL HTTPS accesible públicamente.
- Reconocimiento rápido: El endpoint debe devolver un código de estado 2xx rápidamente, antes de cualquier lógica compleja que pueda causar un tiempo de espera.
- Reintentos: Si la entrega falla, Stripe reintenta durante hasta tres días con retroceso exponencial en modo en vivo.
- Orden: Stripe no garantiza que los eventos lleguen en el orden en que fueron creados.
Asegurando un Endpoint de Webhook
- Verificar firmas: Stripe firma cada evento con un HMAC utilizando SHA-256 y coloca la firma en el encabezado
Stripe-Signature. - Bloquear repeticiones: La carga útil firmada incluye una marca de tiempo, por lo que puedes rechazar eventos que sean demasiado antiguos.
- Manejar duplicados: Un endpoint puede recibir el mismo evento más de una vez. Registra los IDs de eventos procesados y omite repeticiones.
- Lista blanca de remitentes: Stripe envía webhooks desde una lista publicada de direcciones IP a las que puedes restringir tu firewall.
Usos Comunes de Webhooks
- Código y despliegue: GitHub envía una carga útil HTTP POST a tu URL para los eventos del repositorio a los que te suscribes. Su documentación enumera usos como iniciar compilaciones de CI, actualizar un rastreador de problemas externo, refrescar un espejo de respaldo y desplegar en un servidor de producción.
- Pagos: Los webhooks de Stripe te permiten responder a eventos asíncronos, como un banco confirmando un pago, un cliente disputando un cargo o un pago recurrente que tiene éxito.
- Suscríbete solo a lo que necesitas: Stripe desaconseja escuchar eventos adicionales o todos los eventos porque ejerce una presión indebida sobre tu servidor.