Los Webhook solucionan una de las problemáticas más comunes en la integración de aplicaciones, que es la obtención de actualizaciones en los sistemas de terceros, pues es difícil determinar cuándo una aplicación externa tiene nueva información de interés para nuestros sistemas.
Solo imagina un escenario, tenemos una aplicación A y otra aplicación B, la aplicación B genera nueva información de forma recurrente. La aplicación B no sabe de la existencia de la aplicación A y la aplicación A requiere obtener las novedades de la aplicación B.
En este escenario, la aplicación A esta forzada a consultar frecuentemente por nuevas actualizaciones (Polling), lo que implica que la aplicación A no se entere al memento de los cambios, si no que tendrá que esperar a que el polling se ejecute nuevamente para obtener los nuevos datos, adicional, la aplicación B sufre un degrado en el performance, pues cada vez que la aplicación A realiza una consulta, la aplicación B tiene que buscar en la base de datos las actualizaciones, si esto lo multiplicamos por todos los posibles clientes podremos entender mejor el problema.
Webhook
Una mejor alternativa al polling tradicional, es la implementación de un Webhook, el cual consiste en crear un sistema de notificaciones mediante HTTP, para lo cual, la aplicación B permitiría que la aplicación A o cualquier otra registren una URL a cuál notificar en caso de actualizaciones. La ventaja que ofrece esta arquitectura es que la aplicación B sigue sin conocer a la aplicación A, y en su lugar solo conoce una URL a la cual deberá notificar en caso de haber actualizaciones.
Cuando la aplicación B tiene nuevas actualizaciones, entonces lanza una llamada a la URL de la aplicación A. En esta llamada solo se envían los datos actualizados o un identificador para que posteriormente la aplicación A consulte todo el detalle.
Dado que las notificaciones son por medio de HTTP, hace que sea mucho más simple la comunicación, pues cualquier servidor puede recibir la petición y procesar el mensaje, también es compatible con servicios REST.
Esta arquitectura ofrece un mejor rendimiento y una actualización en tiempo real. Para empezar, la aplicación A ya no requiere realizar consultar frecuentemente para saber si hay actualizaciones, por otra parte, la aplicación B yo requiere consultar su base de datos para cada petición, en su lugar este notificará a todos los interesados como parte del proceso.
También puede interesarte como notificar aplicaciones mediante un sistema de mensajería como lo JMS, que explico en el articulo JMS en las integraciones.
Conclusiones
Como podemos ver, utilizar un Webhook siempre será más eficiente que utilizar los tradicionales Polling, sin embrago, un Webhook es más complicado de implementar, pues requiere de contemplar las notificaciones en cada uno de los procesos de actualización sobre el sistema origen.
Esto no quiere decir que no debemos de utilizar polling, ya que esta arquitectura se utiliza cuando no existe otra alternativa y el sistema origen no tiene un mecanismo para notificar a los clientes.
Preciso!. Muchas gracias.
Gracias 🙂