In simple terms, a webhook is an API request that sends data to a receiver in an unidirectional manner, without expecting any response. It is typically used to notify a system when one or more events have taken place.
At ANB we send webhooks to notify partners whenever they have received an incoming transaction or an outgoing payment has been made in one of their accounts. An e-commerce client can, for example, distribute sales revenue to retailers through this event. E-wallet providers can also use these events to fund their existing wallets once funds have been received. In addition, these events can also serve as a mechanism for automatic reconciliation.
A reliable webhook dispatcher will ensure secure delivery of these requests. Webhook-like mechanisms have become increasingly important as REST API integration becomes the norm for synchronizing data efficiently and effectively.
While adapting to an Event-Driven architecture using Kafka, we have faced some push-back while enforcing an asynchronous fashion APIs. It was imperative that we avoid traditional pooling methods, which meant implementing a webhook would not only let our partners continue to do business as usual, but it would also enhance their overall user experience.
Kafka, which is already deployed in our system, provides both a fault-tolerant topic partitions and leader election. Kafka is the leading open source pub/sub messaging system and can persist a huge number of messages using inexpensive storage.