Webhook Nedir? Sistemler Arası Anlık Bildirim
İçindekiler
Sistemler arasında bilgi alışverişinde iki temel yaklaşım vardır: Bir sistem diğerine düzenli aralıklarla "yeni bir şey var mı?" diye sorar ya da olay gerçekleştiğinde karşı taraf haber verir. İkinci yaklaşımın adı webhook'tur. Ödeme sistemlerinden e-ticaret platformlarına kadar birçok hizmet, önemli olayları webhook'larla bildirir.
Webhook nasıl çalışır?
- Sistem A'ya, bir olay gerçekleştiğinde bildirim göndereceği bir adres (URL) tanımlarsınız.
- Olay gerçekleştiğinde (ödeme alındı, sipariş oluşturuldu, form gönderildi) Sistem A bu adrese olayın bilgilerini içeren bir istek gönderir.
- Sistem B bu isteği alır, bilgileri işler ve başarılı olduğunu bildiren bir cevap döner.
Bir benzetmeyle: API, sizin postaneye gidip mektubunuz var mı diye sormanızsa; webhook, postacının mektubu kapınıza getirmesidir.
API ile farkı
API'de bilgiyi isteyen taraf sizsinizdir; ne zaman soracağınıza siz karar verirsiniz. Webhook'ta ise bilgiyi gönderen karşı taraftır ve olay olduğu anda gönderir. İkisi genellikle birlikte kullanılır: Webhook "yeni bir sipariş var" der, ardından ayrıntılar API ile alınır. API'nin mantığı için REST API entegrasyonu yazımıza göz atabilirsiniz.
Kullanım örnekleri
Ödeme bildirimleri
Ödeme kuruluşu, ödeme tamamlandığında veya iade yapıldığında sitenize bildirim gönderir; sipariş durumu otomatik güncellenir.
E-ticaret olayları
Yeni sipariş, iptal veya stok değişikliği gibi olaylar muhasebe, kargo veya CRM sistemlerine iletilir.
Form gönderimleri
Web sitesindeki bir form gönderildiğinde bilgiler başka bir uygulamaya aktarılır.
Kod ve yayın süreçleri
Kod deposunda bir değişiklik yapıldığında otomatik test veya yayın süreci başlatılır.
Güvenlik
Webhook adresi internete açık bir adrestir. Bu adrese herkes istek gönderebileceği için gelen isteğin gerçekten beklenen sistemden geldiği doğrulanmalıdır.
İmza doğrulama
Birçok hizmet, gönderdiği isteği gizli bir anahtarla imzalar. Alıcı taraf bu imzayı doğrulayarak isteğin sahte olmadığından emin olur. Örneğin sahte bir "ödeme alındı" bildirimiyle siparişin onaylanması, imza doğrulamasıyla engellenir.
Ek kontroller
- Mümkünse kritik bilgileri (ödeme durumu gibi) karşı sistemin API'sinden tekrar doğrulayın.
- Webhook adresinde tahmin edilemeyen bir yol veya anahtar kullanın.
- Yalnızca HTTPS adresleri kullanın.
Güvenilirlik
Tekrar deneme
Alıcı sistem geçici olarak erişilemezse, gönderen sistemlerin çoğu bildirimi belirli aralıklarla tekrar dener. Bu nedenle aynı bildirim birden fazla kez gelebilir.
Tekrarlanan bildirimler (idempotency)
Alıcı sistem, aynı olayın iki kez işlenmemesini sağlamalıdır. Örneğin aynı ödeme bildirimi iki kez geldiğinde sipariş iki kez onaylanmamalı veya stok iki kez düşülmemelidir. Her olayın benzersiz kimliği kaydedilerek bu sorun önlenir.
Hızlı cevap
Alıcı sistem isteği hızlıca kabul edip ağır işlemleri arka planda yapmalıdır; aksi halde gönderen taraf zaman aşımı nedeniyle isteği başarısız sayabilir.
Sık yapılan hatalar
- İmza doğrulamasının atlanması
- Aynı bildirimin iki kez işlenmesi
- Hataların kaydedilmemesi; başarısız bildirimlerin fark edilmemesi
- Test ortamı ve canlı ortam adreslerinin karıştırılması
Hataların izlenmesi için otomasyonlarda hata yönetimi yazımıza bakabilirsiniz. Entegrasyonların genel faydaları için çift veri girişini önlemek yazımızı okuyabilirsiniz.
Webhook ve API tabanlı entegrasyonlar için özel yazılım hizmetimizi inceleyebilirsiniz.