Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Aros StudentAnalogía Cotidiana Incluida

What is a Webhook: Event-Driven Push Architecture vs Repetitive Polling

Learn how webhooks deliver instant server-to-server notifications with HMAC signature validation.

AS

AS

Aros Student

Sep 16, 20264 min420 views
What is a Webhook: Event-Driven Push Architecture vs Repetitive Polling

¿Qué es un Webhook y cómo funciona?

De la notificación en tiempo real a la arquitectura dirigida por eventos


WIKIHOW STEP

🌱 Nivel 1: Modo Principiante (Lo que necesitas saber primero)

#### ¿Qué es y de qué trata?

Imagina que pediste una pizza a domicilio. Tienes dos opciones para saber cuándo llegó:

1.
Opción A (La forma agotadora - Polling): Caminas hacia la puerta cada 20 segundos, la abres, miras si está el repartidor, no ves a nadie, cierras la puerta. Vuelves a los 20 segundos, abres, miras, cierras. Pierdes energía, desgastas la cerradura y te estresas.
2.
Opción B (La forma inteligente - Webhook): Te sientas cómodamente en el sillón a ver una película. Cuando el repartidor llega a tu puerta, toca el timbre. En ese instante te levantas, recibes la pizza caliente y disfrutas.

Un Webhook es exactamente ese timbre digital. En lugar de que tu aplicación tenga que preguntarle a otro servidor miles de veces al día "¿ya hay novedades? ¿ya hay novedades?", el otro servidor le envía una notificación automática a tu aplicación en el milisegundo exacto en que ocurre un evento importante.

#### ¿Dónde se aplica en la vida real?

Pagos online con Stripe o Mercado Pago: Cuando un cliente compra en tu tienda en línea, el banco tarda unos segundos en autorizar el cobro. En cuanto el banco dice "pago aprobado", Stripe dispara un Webhook a tu servidor para que liberes el producto o envíes la factura por correo de inmediato.
GitHub y Discord: Cada vez que un programador sube código nuevo a GitHub (git push), un Webhook le avisa al canal de Discord de los desarrolladores: "¡Carlos acaba de actualizar la rama main!".
Mensajería en WhatsApp Business: Cuando un cliente te escribe, los servidores de Meta envían un Webhook al bot de tu empresa para que responda al instante.

#### ¿Por qué te debe importar como estudiante o profesional de TI?

Porque los Webhooks son el estándar de la industria para construir sistemas en tiempo real. Sin ellos, los servidores colapsarían por saturación de peticiones inútiles y las aplicaciones se sentirían lentas y torpes.


WIKIHOW STEP

⚙️ Nivel 2: Modo Ingeniero (La arquitectura técnica real)

#### Cómo funciona por dentro paso a paso

Técnicamente, un Webhook es una petición HTTP POST invertida que viaja con un paquete de datos en formato JSON:

arostik@ubuntu:~ (mermaid)
sequenceDiagram    autonumber    actor Cliente as Usuario    participant Tienda as Tu Servidor (Listener)    participant Pasarela as Stripe / Banco (Emisor)    Cliente->>Tienda: 1. Pagar carrito ($50 USD)    Tienda->>Pasarela: 2. Crear sesión de pago    Cliente->>Pasarela: 3. Ingresar tarjeta y autorizar    Note over Pasarela: ¡Transacción exitosa en el banco!    Pasarela->>Tienda: 4. HTTP POST /api/webhooks/stripe (Payload JSON + Firma HMAC)    Note over Tienda: Verifica firma criptográfica y guarda en BD    Tienda-->>Pasarela: 5. Responde HTTP 200 OK (Recibido exitosamente)

#### Anatomía del Payload JSON de un Webhook

El emisor envía un cuerpo con los detalles exactos del evento:

arostik@ubuntu:~ (json)
{  "event": "pago.completado",  "timestamp": 1725746400,  "data": {    "transaccionId": "tx_998124",    "clienteEmail": "estudiante@arostik.com",    "monto": 49.99,    "moneda": "USD",    "estado": "aprobado"  }}

#### Ejemplo de Servidor Receptor (Webhook Listener en Node.js / Next.js):

arostik@ubuntu:~ (javascript)
// app/api/webhooks/route.jsimport { NextResponse } from "next/server";import crypto from "crypto"; export async function POST(request) {  const payload = await request.text();  const signature = request.headers.get("x-webhook-signature");  const secret = process.env.WEBHOOK_SECRET;   // 1. Validar la firma criptográfica HMAC-SHA256 para evitar atacantes  const expectedSignature = crypto    .createHmac("sha256", secret)    .update(payload)    .digest("hex");   if (signature !== expectedSignature) {    return NextResponse.json({ error: "Firma inválida" }, { status: 401 });  }   const data = JSON.parse(payload);   // 2. Procesar el evento según su tipo  if (data.event === "pago.completado") {    console.log("Activando cuenta para:", data.data.clienteEmail);    // Tarea: Actualizar base de datos  }   // 3. Responder SIEMPRE de inmediato con 200 OK  return NextResponse.json({ received: true }, { status: 200 });}

#### Tabla Comparativa: Webhooks vs. Polling tradicional vs. WebSockets

CaracterísticaWebhooks (Event-Driven)Polling (Sondeo tradicional)WebSockets (Full Duplex)
Flujo de datosEl emisor empuja (Push) cuando ocurre un eventoEl cliente pregunta continuamente (Pull)Canal bidireccional abierto permanente
Consumo de recursosUltra bajo (solo trabaja cuando hay eventos)Muy alto (cientos de peticiones vacías)Medio (mantiene sockets TCP abiertos en memoria)
Casos de uso idealesPagos bancarios, alertas GitHub, emails transaccionalesSistemas heredados que no soportan callbacksChats en vivo, juegos multijugador, trading financiero

En la Tecnología Real (Explicación Sencilla)

💡 En la Tecnología: La Regla de Oro del "200 OK Rápido" e Idempotencia Un error de novato común es poner al webhook a generar un PDF de 50 páginas o mandar 10 correos antes de responderle al emisor. Si tu servidor tarda más de 5 segundos en responder, el emisor (como Stripe) asumirá que tu servidor murió y te reintentará enviar el mismo webhook 5 veces más, pudiendo cobrarle doble al cliente o duplicar pedidos. La mejor práctica: Tu endpoint debe guardar el evento, responder de inmediato 200 OK en menos de 200 milisegundos, y mandar la tarea pesada a una cola en segundo plano (Background Worker como Redis/BullMQ). Además, debes registrar el transaccionId para que si el evento llega duplicado, tu sistema lo ignore con gracia (Idempotencia).

📖 Glosario Rápido

1.
Listener (Receptor): La URL pública de tu servidor lista para recibir peticiones HTTP POST de eventos externos.
2.
HMAC Signature: Firma digital enviada en la cabecera para comprobar matemáticamente que el mensaje fue generado por el emisor auténtico y no por un impostor.
3.
Exponential Backoff: Algoritmo que usan los emisores para reintentar mandar un webhook fallido espaciando los tiempos (ej. a los 5 seg, luego 30 seg, luego 5 min, luego 1 hora).

Mini Cuestionario Interactivo3 preguntas

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

En la analogía cotidiana, ¿qué representa un Webhook frente al sondeo continuo (Polling)?

2

¿Por qué es crucial validar la firma criptográfica (HMAC) en la cabecera de un Webhook entrante?

3

¿Qué debe hacer un servidor receptor de Webhooks apenas recibe el mensaje?

🎯 Conclusión Aros Student

Los Webhooks transformaron la web de un sistema pasivo de preguntas y respuestas en un ecosistema reactivo y conectado en tiempo real. En Aros Student, aprendes la arquitectura que mueve a las empresas líderes del mundo digital sin enredos.

Tu opinión mejora Aroslap

¿Te resultó útil esta publicación?

Califica tu experiencia para optimizar los próximos artículos técnicos.

Selecciona una calificación

More Articles in Aros Student