Contáctenos
Cuenta Inicie sesión
Graphically illustrated browser windows, smart phones, and computers, all connecting via an API interface
Secciones

¿Qué es un webhook?

Copiar URL

Un webhook es una función de devolución de llamadas que se basa en el protocolo HTTP para que dos interfaces de programación de aplicaciones (API) se comuniquen mediante eventos de forma ligera. Muchas aplicaciones web los utilizan para recibir pequeñas cantidades de datos de otras aplicaciones, pero también sirven para activar flujos de trabajo de automatización en los entornos de GitOps.

¿Qué son las API?

Las API son conjuntos de definiciones y protocolos que se utilizan para diseñar e integrar el software de las aplicaciones. La comunicación entre ellas suele considerarse como un contrato entre el usuario y el proveedor de la información, en el cual se establece el contenido que se necesita por parte del consumidor (la llamada) y el que requiere el productor (la respuesta). También puede definirse como una relación en la cual la aplicación cliente llama a la aplicación servidor, pero estas funciones pueden invertirse, según la aplicación que solicite los datos en determinada situación.  

Por lo general, las API web utilizan el protocolo HTTP para solicitar datos a otras aplicaciones y definir la estructura de los mensajes de respuesta, que suele ser un archivo XML o JSON. Estos son los formatos preferidos porque presentan los datos de manera tal que otras aplicaciones pueden utilizarlos fácilmente. 

Cuando la API cliente llama a la API servidor para solicitarle datos, busca comprobar si se ha producido un evento determinado, es decir, si los datos del servidor se modificaron de manera que puedan ser útiles para el cliente. En este proceso (conocido como consulta), el cliente envía solicitudes de HTTP de forma regular hasta que la API del servidor le devuelve los datos correspondientes, que suelen denominarse carga útil

Dado que la aplicación cliente no conoce el estado de la aplicación servidor, envía una consulta a su API para obtener actualizaciones. La llamada persiste hasta que se produce el evento específico, pero el servidor solo enviará los datos solicitados una vez que la información esté disponible.

Aspectos característicos de los webhooks

Para configurar un webhook, el cliente proporciona una URL única a la API servidor y especifica el evento sobre el cual desea obtener información. Luego de configurarlo, el cliente ya no tendrá que hacerle más consultas al servidor, dado que este le enviará de forma automática la carga útil correspondiente a la URL del webhook cuando se produzca el evento especificado. 

Los webhooks también se conocen como API inversas o API push porque, al usarlos, quien debe encargarse de la comunicación es el servidor, en vez del cliente. Es decir, el servidor le envía al cliente una solicitud POST única de HTTP cuando los datos están disponibles, en lugar de que el cliente le envíe solicitudes de HTTP hasta que responda. A pesar de las denominaciones que se utilizan para los webhooks, no son API, sino que ambos funcionan en conjunto. Las aplicaciones deben tener una API para usar un webhook. 

El nombre webhook es tan solo la combinación entre la palabra web, en referencia a su comunicación basada en el protocolo HTTP, y la función de programación de enlaces (hooking) que permite a las aplicaciones interceptar llamadas u otros eventos que podrían ser útiles. Los webhooks enlazan el evento que se produce en la aplicación del servidor y le solicitan que envíe la carga útil al cliente a través de la web. En 2007, Jeff Lindsay publicó en su blog esta entrada que contribuyó a difundir el concepto: "Web hooks to revolutionize the web".

Los equipos de TI utilizan diversos métodos para proteger las aplicaciones que se comunican mediante webhooks. La mayoría de ellas agrega una clave secreta en el encabezado de la solicitud de la carga útil para que el cliente pueda confirmar la identidad del servidor. Los webhooks suelen estar protegidos con la autenticación de seguridad mutua de la capa de transporte (mTLS), que verifica tanto al cliente como al servidor antes de enviar la carga útil. También es habitual que las aplicaciones cliente utilicen el cifrado SSL para la URL del webhook, a modo de garantizar la privacidad de los datos transferidos.

Los webhooks:

  • Eliminan la necesidad de hacer consultas: la aplicación cliente puede ahorrar recursos.  
  • Se configuran rápidamente: si una aplicación es compatible con los webhooks, puede configurarlos fácilmente a través de la interfaz de usuario de la aplicación servidor. Aquí es donde el cliente introduce la URL del webhook de su aplicación y establece algunos parámetros básicos, como el evento que le interesa.    
  • Automatizan la transferencia de datos: la carga útil se envía ni bien se produce el evento especificado en la aplicación servidor, por lo cual el intercambio ocurre tan pronto como los datos puedan transferirse del servidor al cliente, es decir, lo más rápido posible.
  • Son apropiados para cargas útiles ligeras y específicas: los webhooks confían en que el servidor determinará la cantidad de datos que debe enviar y que el cliente interpretará la carga útil y la utilizará de forma productiva. Dado que el cliente no controla el momento exacto en que se enviará la transferencia de datos ni su tamaño, los webhooks se ocupan de pequeñas cantidades de información entre dos extremos, a través de notificaciones por lo general.

La función más común de los webhooks consiste en simplificar la comunicación entre dos aplicaciones, pero también pueden utilizarse para automatizar los flujos de trabajo de la Infraestructura como código (IaC) y posibilitar las prácticas de GitOps.

La infraestructura como código (IaC) 

La infraestructura como código (IaC) permite gestionar y preparar la infraestructura a través del código, en lugar de hacerlo mediante procesos manuales. El control de versiones es un aspecto importante de la IaC que debería aplicar a los archivos de configuración, al igual que a cualquier otro archivo de código fuente del software. La implementación de esta infraestructura también permite dividirla en elementos modulares que se combinarán de distintas maneras mediante la automatización.

Si utiliza la IaC para automatizar su instalación, los desarrolladores no tendrán que preparar ni gestionar manualmente los servidores, los sistemas operativos, el almacenamiento ni ningún otro elemento cada vez que desarrollen o implementen una aplicación. La codificación de la infraestructura le proporciona una plantilla que puede seguir durante el proceso de preparación. Si bien aún se puede realizar de forma manual, también es posible automatizarlo con un motor empresarial de estado deseado, como Red Hat® Ansible Automation® Platform.

GitOps

GitOps es un enfoque estratégico, que a veces se lo considera una evolución de la IaC, para la gestión de los ajustes de la infraestructura y las aplicaciones por medio de Git, un sistema de control de versiones open source. Teniendo en cuenta estas prácticas, los desarrolladores utilizan Git como una fuente única de información para la infraestructura declarativa y las aplicaciones, y utilizan las solicitudes de incorporación de cambios de Git para gestionar la preparación y la implementación de la infraestructura de forma automática. El repositorio de Git contiene el estado completo del sistema, lo cual le permitirá ver y auditar las modificaciones realizadas en él. 

La función de los webhooks

Los webhooks simplifican el proceso de instalación y gestión de los canales de implementación pensados para Git y pueden utilizarse para lanzar automáticamente flujos de trabajo completos de la IaC. En el entorno de GitOps, un webhook funciona de la misma manera que entre dos aplicaciones; cuando un evento específico lo activa, una API envía una carga útil a otra. Sin embargo, la diferencia radica en el tipo de evento que lo activa y el uso que el destinatario le da a la carga útil.

En este contexto, el repositorio de Git funciona como la aplicación servidor y el motor de estado deseado, que gestiona el estado de la infraestructura, como la aplicación cliente. El webhook puede configurarse para que active la comunicación cada vez que se realice un cambio en el repositorio. Por ejemplo, un evento como la actualización de un fragmento de código y su envío al repositorio de Git iniciará al webhook. Luego, el repositorio enviará la carga útil a la dirección del webhook del motor de estado deseado de forma automática, y le informará sobre dicha modificación.

Este uso de los webhooks permite que los motores de estado deseado supervisen atentamente los cambios en la infraestructura, sin tener que controlar los repositorios de forma permanente. Si el motor de estado deseado también es compatible con la automatización, los webhooks servirán para activar los flujos de trabajo de la IaC. Por ejemplo, un administrador de sistemas puede utilizar los webhooks de un motor empresarial de estado deseado, como Red Hat Ansible Automation Platform, para implementar automáticamente los cambios más recientes en sus hosts gestionados.

Red Hat® Ansible Automation Platform incorpora webhooks de automatización para admitir las prácticas de GitOps y la IaC. Estos permiten que un repositorio de Git se integre con Ansible Automation Platform de forma directa a través de un servicio como GitHub o GitLab. Una vez que se establece un enlace al repositorio, Ansible Automation Platform detecta los cambios guardados desde el sistema de Git, y utiliza esos eventos para activar trabajos de automatización que permiten actualizar proyectos, gestionar inventarios y realizar implementaciones.

Los webhooks de automatización permiten que los respectivos flujos de trabajo se activen por sí solos cuando se producen eventos en el sistema de control de versiones. Gracias a ello, no es necesario utilizar herramientas adicionales de CI/CD, como Jenkins, para supervisar los repositorios y lanzar trabajos de automatización cuando se producen cambios, lo cual simplifica el flujo de trabajo de GitOps y agiliza las operaciones. Dado que Red Hat Ansible Automation Platform funciona con varias herramientas de desarrollo e implementación, puede utilizar las herramientas y los procesos que prefiera para personalizar el flujo de trabajo de GitOps.

Siga leyendo

Artículo

Conceptos básicos de Ansible

Ansible se encarga de automatizar algunos procesos de la TI, como la preparación de la infraestructura y la gestión de la configuración. En esta introducción conocerá los conceptos básicos de Ansible.

Artículo

¿Qué es la gestión de los procesos empresariales?

La gestión de los procesos empresariales (BPM) consiste en modelar, analizar y optimizar los procesos integrales de esta naturaleza para lograr sus objetivos comerciales estratégicos.

Artículo

¿Por qué conviene elegir Red Hat para la automatización?

Red Hat Ansible Automation Platform incluye las herramientas que necesitan los equipos para implementar y compartir la automatización en toda la empresa.

Más información sobre la automatización

Productos

Servicio de nuestros asesores estratégicos, quienes tienen una visión amplia de su empresa, analizan sus desafíos y lo ayudan a superarlos con soluciones completas y rentables.

Plataforma que permite automatizar toda la empresa, sin importar en qué etapa del proceso de automatización se encuentre.

Plataforma que permite desarrollar aplicaciones directamente en la nube para automatizar los procesos y las decisiones empresariales.

Contenido adicional

Ebook

La empresa automatizada: unificación de las personas y los procesos

Ebook

Automatice los flujos de trabajo de la infraestructura

VIDEO - THE SOURCE TV

Automatización

Vea como la automatización está revolucionando la TI a nivel mundial.

Capacitación

Curso de capacitación gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Video de capacitación

Automatización de AWS con Ansible

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.