¿Qué es un webhook?

Los webhooks son un componente esencial en nuestro moderno ecosistema de nube. Se utilizan para alimentar datos en tiempo real de una aplicación a otra respondiendo a un evento desencadenado y se utilizan para todo tipo de sistemas de notificación y automatización.

Descripción general del webhook

¿Qué problemas resuelven los webhooks? Para example, digamos que estás en casa esperando que te entreguen un paquete. Para saber si llegó el paquete, puede levantarse y mirar por la puerta o ventana de su casa. Si el paquete no está aquí, puede volver a consultar más tarde.

En el mundo de los servidores, el proceso de verificación a intervalos regulares para obtener nueva información se denomina votación, y durante mucho tiempo fue el método más común para comunicar actualizaciones entre dos máquinas. La desventaja de los sondeos es encontrar un equilibrio entre el uso de recursos y la puntualidad de los eventos críticos que no ocurren continuamente. En nuestro exampleterminará gastando gran parte de su energía comprobando si el paquete llegó sin nada que mostrar la mayor parte del tiempo.

Los webhooks sobresalen en emprendedor, que es un método de notificación de uso eficiente de los recursos que hace que el servidor envíe notificaciones para informarle sobre eventos nuevos. Para aliviar nuestro dolor de cabeza de entrega, puede pedirle a la empresa de entrega que toque el timbre (en otras palabras, envíe una notificación), por lo que solo necesita levantarse una vez: cuando llegue el paquete.

Si bien los webhooks son excelentes para monitorear datos en tiempo real, tienen una desventaja sutil pero crítica. Dado que los webhooks solo funcionan una vez que hay nueva información disponible, un servicio que dejó de funcionar y no reacciona a ninguna actualización se ve igual que un servicio que funciona bien y que simplemente no tiene noticias para enviar.

Para mitigar esto, combinar webhooks con otras herramientas de interfaz de programación de aplicaciones (API) basadas en encuestas es el camino a seguir. Tener una configuración redundante mejora la confiabilidad y le permite disfrutar de las ventajas de ambos. Dado que los webhooks se encargan de las actualizaciones más sensibles al tiempo, los intervalos de sondeo se pueden reducir para ahorrar ancho de banda y al mismo tiempo realizar un seguimiento de cualquier problema de tiempo de inactividad.

Mecánica de webhook

Los webhooks son devoluciones de llamada HTTP creadas por el usuario. Un usuario creará una URL y la agregará a un servicio que implemente webhooks. Cuando este servicio quiera enviarle información, realizará una solicitud HTTP POST a la URL que proporcionó. Los datos de esta solicitud POST se pueden enviar en el formato que mejor se adapte a la información que se transmite. El formato más común que se utiliza para este propósito es JSON debido a su flexibilidad y su amplia compatibilidad, aunque en algunos casos se prefiere la codificación de formularios XML o HTML.

Los datos reales enviados pueden ser tan cortos como unos pocos caracteres, como el siguiente fragmento de código JSON.

'{"data":"New event detected"}'

Lo importante es que los datos se envíen en el formato esperado y lleguen exactamente cuando se necesitan.

Un webhook es solo una de las muchas herramientas en una API. A veces, los webhooks se denominan API inversas, suponiendo que las API funcionan normalmente enviando solicitudes a un servidor y luego esperando una respuesta (usando el proceso de sondeo que discutimos anteriormente). Si bien el término “API inversa” puede implicar que la información fluye en la dirección opuesta, la información aún fluye desde el servicio hacia usted. Un webhook es solo otra herramienta que maneja este flujo de información en tiempo real.

Ejemplos de webhooks

Veamos algunos ejemplos de webhooks y lo que puede crear con ellos.

GitHub

GitHub le permite configurar webhooks como integraciones para eventos específicos. Puede hacer que uno de sus servidores reciba una notificación cada vez que alguien envíe un cambio a su repositorio y lo use automáticamente para crear y probar los cambios. Esos cambios sugeridos se pueden implementar como parte de un sistema de integración continua/entrega continua o CI/CD.

buzón

Similar a los webhooks de GitHub, buzón le permite recibir notificaciones cada vez que se realiza un cambio en un archivo o carpeta, así como los usuarios que han realizado esos cambios. Esto le permite automatizar muchas tareas en el proceso de publicación, como la conversión automática de archivos a PDF una vez modificados.

Flojo

Para cosas que podrían requerir un ojo humano, Flojo le permite configurar webhooks que se publican en un canal específico cada vez que llega nueva información. Esto es especialmente útil para sistemas de alerta y monitoreo u otros eventos que requieren atención inmediata.

Sugerencias de integración de webhook

A continuación se presentan algunos consejos que le permitirán integrar webhooks de manera efectiva.

Responde rapido

La principal ventaja de los webhooks es que pueden transmitir información en tiempo real, por lo que es importante confirmar que ha recibido una solicitud de webhook lo antes posible. Si los datos recibidos requieren un procesamiento en profundidad, considere usar una cola o un subproceso separado.

Manejar errores correctamente

Si hay un problema con los datos transmitidos, generar un código de error es vital para garantizar que las actualizaciones perdidas se envíen nuevamente. Incluso si está procesando los datos recibidos por separado, puede analizar esta información de antemano para asegurarse de que sea válida (también conocida como verificación de cordura).

Monitorear la carga

Las notificaciones de webhook llegan cada vez que ocurre un evento, por lo que es posible recibir más alertas de las que su servidor puede manejar en un corto período de tiempo. La mayoría de los servicios te permiten configurar un límite de velocidad para evitar este problema. Por el contrario, algunos otros requerirán que optimices cuidadosamente tu sistema para continuar recibiendo notificaciones como de costumbre.

Asegure sus conexiones

El uso de un certificado SSL para cifrar los datos a medida que viajan ya es un estándar, pero dado que la URL del webhook escuchará cualquier solicitud entrante, los actores no autorizados pueden intentar enviar datos inesperados a este webhook. Para evitar eso, la mayoría de los servicios incluyen un token de autenticación secreto con cada solicitud, que funciona como una contraseña para asegurarse de que la solicitud sea la que realmente desea recibir.

Consejos para probar webhooks

La mayoría de los servicios que brindan una interfaz de webhook en su API también tienen una extensa documentación sobre cómo usarla. Familiarizarse con la forma de navegar por la documentación y cómo usar los ejemplos que proporciona es una habilidad crítica para desarrollar aplicaciones y servicios web. Puedes empezar con el API web líquida, que le permite automatizar la mayoría de las acciones que puede realizar manualmente en el panel de control de su cuenta. La práctica va mucho más allá de la teoría, por lo que observar directamente el comportamiento de los webhooks es muy útil para el desarrollo.

Ocasionalmente, mirar el tráfico ayuda a tener una mejor idea de cómo se organizan los datos. Algunos servicios como GitHub le permitirán ver el contenido completo y responder a solicitudes anteriores. Si esta característica no está disponible en otro servicio, puede usar una herramienta de terceros como falda para capturar y ver estos datos.

Puede usar cURL para imitar el comportamiento de su servicio y pegar datos en una nueva solicitud de webhook para pruebas activas. Este método se vuelve muy útil para solucionar casos extremos que pueden no ocurrir con frecuencia.

En el siguiente examplevemos una solicitud de webhook muy básica realizada con cURL a una URL de webhook creada en Slack, con las siguientes opciones:

  • -X para especificar el tipo de solicitud (POST).
  • -H para incluir un encabezado, que especifica el tipo de contenido (en este caso, datos JSON).
  • –data para enviar los datos reales, que son el texto “¡Hola, mundo!”

Podemos ver que el servidor respondió con OKy si revisamos el canal de Slack donde creamos esta aplicación, podemos ver que la notificación se realizó correctamente.

Conclusión

Los webhooks son una herramienta que le permite recibir actualizaciones sobre eventos o notificaciones a través de solicitudes HTTP periódicas sin necesidad de gastar recursos en actualizaciones de estado constantes. Son un bloque de construcción simple pero poderoso en muchos sistemas diferentes que automatizan tareas importantes.

¿Está listo para comenzar a crear sus propias soluciones automatizadas para todas sus necesidades comerciales? Comience a probar con uno de nuestros VPS pequeños, asequibles y totalmente administrados, o comuníquese con uno de nuestros expertos en soluciones para que lo ayude a diseñar su infraestructura.

Related Posts