Bizi Aramayın, Biz Sizi Ararız: Webhook Nedir, API'den Farkı Nedir ve Nasıl Çalışır?
Modern yazılımların perde arkasındaki gerçek zamanlı haberleşme gücü: Webhook. 'Sürekli sorma, olay olunca bana haber ver' prensibinin mimarisi, REST API ile farkları, güvenlik önlemleri ve pratik kullanım senaryoları.
Bir e-ticaret sitesinden sipariş verdiniz ve kargonun kapınıza gelmesini bekliyorsunuz. Ne yaparsınız? Her 30 saniyede bir kapıyı açıp 'Kargo geldi mi?' diye dışarıya bakar mısınız? Yoksa zilin çalmasını mı beklersiniz? Elbette zilin çalmasını beklersiniz! Yazılım dünyasında da sistemlerin birbiriyle haberleşmesi tıpkı bu örneğe benzer: Klasik API yaklaşımı kapıyı sürekli açıp bakmaktır (Polling). 'Webhook' ise olayın gerçekleştiği anda zili çalan kuryedir. Modern dağıtık mimarilerde ve ödeme sistemlerinde Webhook'lar, kaynak israfını önleyen ve gerçek zamanlı otomasyonu mümkün kılan en kritik haberleşme köprüsüdür.
Webhook Nedir ve Nasıl Çalışır?:
Webhook; bir sistemde belirli bir olay (event) gerçekleştiğinde, önceden tanımlanmış bir hedef URL adresine otomatik olarak gönderilen HTTP POST isteğidir. Buna yazılım mühendisliğinde 'Ters API' (Reverse API) veya 'Olay Odaklı Çağrı' (Event-Driven Callback) da denir.
Süreç şu adımlarla işler:
1. Alıcı Sistem (Sizin Sunucunuz): Kendi web sitenizde bir uç nokta (endpoint) açarsınız, örneğin: https://sitem.com/api/odeme-webhook
2. Sağlayıcı Sistem (Örneğin İyzico, Stripe veya GitHub): Bu panelde ayarlar kısmına girip hedef URL olarak kendi adresinizi tanımlarsınız.
3. Olay Tetiklenir: Müşteri kredi kartıyla ödemeyi tamamladığı anda, ödeme sağlayıcısı sizin adresinize JSON formatında bir POST isteği fırlatır: {"durum": "basarili", "tutar": 500, "siparis_no": "TR12345"}
4. Anında Aksiyon: Sunucunuz gelen veriyi yakalar, siparişi anında onaylar ve müşteriye faturasını yollar!
Webhook ile Standart REST API Arasındaki Kritik Farklar:
- İletişimi Kim Başlatır? Standart API'de iletişimi daima İstemci başlatır ('Bana son siparişleri ver'). Webhook'ta ise iletişimi Sunucu/Sağlayıcı başlatır ('Yeni bir sipariş ödendi, al bu bilgiyi').
- Kaynak ve Sunucu Yükü: API'de verinin ne zaman geleceğini bilmediğiniz için periyodik istek (Polling) atmak zorundasınızdır; 1000 istekten 990'ı boş döner ve sunucular boş yere yorulur. Webhook'ta ise ağda sadece ve sadece gerçek bir olay olduğunda tek bir istek akar.
- Gecikme (Latency): Polling ile çalışan bir sistemde olay 12:00'de olsa ve siz her 5 dakikada bir kontrol ediyorsanız bildirim 12:05'te gelir. Webhook'ta gecikme milisaniyeler seviyesindedir.
Webhook Güvenliği: Sahte Bildirimlerden Nasıl Korunuruz?:
Webhook uç noktanız internete açık bir URL'dir. Kötü niyetli bir saldırgan sunucunuza sahte bir {"durum": "basarili"} JSON paketi göndererek para ödemeden ürün almaya çalışabilir mi? Evet! Bu yüzden profesyonel sistemlerde şu güvenlik mekanizmaları şarttır:
1. Gizli İmza Doğrulama (HMAC Signature): Sağlayıcı, gönderdiği veriyi sizinle paylaştığı gizli bir anahtarla (Secret Token) şifreler (örneğin SHA256) ve isteğin başlığına X-Signature olarak ekler. Sunucunuz gelen paketi aynı anahtarla doğrulamadan hiçbir işlemi onaylamaz.
2. Zaman Aşımı ve Yeniden Deneme (Idempotency): Ağ koparsa sağlayıcı aynı Webhook'u 3 kez gönderebilir. Sunucunuz aynı sipariş numarasını iki kez işlemeyecek şekilde (Idempotent) tasarlanmalıdır.
Kullanım Alanları ve Özet:
Bugün kullandığınız dijital ekosistemin neredeyse tamamı Webhook'lar üzerinde döner:
- Finans & E-Ticaret: Ödeme başarılı olduğunda siparişi teslim etme.
- DevOps & CI/CD: GitHub'a git push yapıldığında test sunucusunun otomatik ayağa kalkması.
- İletişim Botları: Telegram veya Slack'te bir kullanıcı bota mesaj yazdığında sunucunuzun haberdar olması.
- Güvenlik: Sunucuya yetkisiz bir SSH girişi olduğunda anında telefonunuza uyarı düşmesi.
Webhook mimarisini anlamak, sistemlerinizi hantal döngülerden kurtarıp gerçek zamanlı, zarif ve olay odaklı modern mimarilere taşımanın anahtarıdır.