Webhook Nedir? Nasıl Çalışır, Kullanım Alanları ve Örnekler

Webhook, belirli bir olayın gerçekleşmesi durumunda bir uygulamanın başka bir uygulamaya otomatik HTTP isteği göndermesidir. Genellikle uygulamalar arasında gerçek zamanlı bilgi paylaşımı için kullanılır. Webkancı olarak da adlandırılan bu mekanizma, manuel müdahale olmadan veri senkronizasyonunu sağlar.

6 dk okuma
Webhook

Webhook, bir uygulamada belirli bir olay meydana geldiğinde başka bir uygulamaya otomatik olarak veri gönderen bir web callback mekanizmasıdır. HTTP POST isteği aracılığıyla çalışan webhooklar, iki sistem arasında gerçek zamanlı iletişim kurarak manuel müdahale gereksiz kılar. Özellikle e-ticaret, ödeme sistemleri, mesajlaşma uygulamaları ve proje yönetim araçlarında yaygın olarak kullanılır.

Webhook Nasıl Çalışır?

Webhook çalışma prensibi, geleneksel API polling mekanizmasından tamamen farklıdır. Standart API kullanımında, bir uygulama diğerinin verilerini almak için sürekli kontrol etmesi gerekir (pull modeli). Webhooklar ise push modelini kullanır: veri sağlayıcı uygulaması, bir olay tetiklendiğinde doğrudan alıcı uygulamaya veri gönderir.

Webhook çalışma adımları şöyle özetlenebilir:

  • Kayıt: Alıcı uygulama, veri sağlayıcı uygulamaya "bu olaylar meydana geldiğinde bu URL'ye istek gönder" şeklinde talimat verir.
  • Olay Tetikleme: Veri sağlayıcı uygulamada tanımlanan olay meydana gelir (örneğin ödeme tamamlandı, kullanıcı kaydoldu, sipariş oluşturuldu).
  • Veri Gönderimi: Uygulama, event ayrıntılarını içeren bir HTTP POST isteğini önceden kayıtlı URL'ye gönderir.
  • İşleme ve Yanıt: Alıcı uygulama isteği alır, verileri işler ve uygun HTTP yanıt kodu (genellikle 200 OK) geri gönderir.
  • Doğrulama: Başarısız istek durumunda, veri sağlayıcı uygulama yeniden deneme mekanizması tetikleyebilir.

Webhook Avantajları

  • Gerçek Zamanlı İşleme: Olaylar anında bildirilir, veriler yakın zamanlı olarak senkronize olur.
  • Sunucu Kaynakları Tasarrufu: Poll yöntemi gibi sürekli sorgulamaya gerek olmadığından server yükü azalır.
  • Basit Entegrasyon: HTTP standardına dayandığından birçok platformda kolayca uygulanabilir.
  • Düşük Gecikme: Push modeli nedeniyle veri aktarımı hızlıdır.
  • Skalabilite: Çok sayıda entegrasyon işlemi kolayca yönetilebilir.
  • İş Akışı Otomasyonu: Birden fazla sistemi birbirine bağlayarak kompleks iş süreçleri otomatikleştirilir.

Webhook Dezavantajları

  • Güvenlik Riskleri: HTTP isteğinin araya girmesi riski vardır (imzalı webhooklar bu sorunu azaltır).
  • Hata Yönetimi: Alıcı sunucu offline olduğunda veri kaybı yaşanabilir.
  • Yeniden Deneme Mekanizması Karmaşıklığı: Başarısız isteği yeniden gönderme stratejisi geliştirilmesi gerekir.
  • Sıra Garantisi Sorunu: Birden fazla webhookin sırasını öngörmek zordur.
  • Debugging Zorluğu: Asenkron yapı nedeniyle hata ayıklama daha karışık olabilir.
  • İdempotency Gereksinimi: Aynı webhookun birden fazla gelişi durumunda çift işleme engellenmesi gerekir.

Webhook Nerede Kullanılır?

Webhooklar modern yazılım mimarisinin çeşitli alanlarında kullanılmaktadır:

  • E-Ticaret Platformları: Sipariş oluşturulduğunda envanter sistemi güncellenir, satış analizi sistemi bildirimi alır.
  • Ödeme Sistemleri: Stripe, PayPal gibi ödeme ağ geçitleri, işlem tamamlandığında e-ticaret sitesine webhook gönderir.
  • Proje Yönetim Araçları: Jira, Asana gibi platformlar, görev güncellendiğinde Slack veya email sistemine webhookla bildir.
  • Mesajlaşma Uygulamaları: Slack, Discord gibi uygulamalar, dış kaynaklardan gelen event'ler hakkında channel'lara bildirim gönderir.
  • GitHub/GitLab: Code push, pull request oluşturma gibi olaylarda webhook aracılığıyla CI/CD pipeline'ı tetiklenir.
  • IoT Cihazları: Sensör verisi belirli koşullara ulaştığında event uygulamasına webhook ile gönderilir.
  • CRM Sistemleri: Müşteri kaydı oluşturulduğunda email kampanya otomasyonunun webhook aracılığıyla başlatılması.
  • Form Yönetimi: Web form submit edildiğinde verilerin CRM, email, analytics gibi sistemlere otomatik aktarılması.

Webhook Türleri ve Kategorizasyonu

Webhooklar farklı açılardan sınıflandırılabilir:

Kategori Tür Açıklama
Veri Yapısına Göre JSON Webhook Veri JSON formatında gönderilir, modern uygulamalarda yaygın.
Veri Yapısına Göre XML Webhook Veri XML formatında gönderilir, legacy sistemlerde kullanılır.
Tetikleme Mekanizmasına Göre Event-Based Webhook Belirli bir olay meydana geldiğinde tetiklenir (sipariş oluşturma, ödeme).
Tetikleme Mekanizmasına Göre Scheduled Webhook Belirli aralıklarla otomatik olarak çalışır (saatlik, günlük raporlama).
Güvenlik Düzeyine Göre İmzalı Webhook HMAC imzası ile birlikte gönderilerek gerçekliği doğrulanır.
Güvenlik Düzeyine Göre Şifrelenmemiş Webhook Temel düzey webhooklar, geliştiriciler tarafından genellikle test ortamında kullanılır.

Webhook ile API Arasındaki Fark

API (Application Programming Interface): İstemci tarafından talep edilir (pull modeli). Bir uygulama başka bir uygulamadaki veriye erişmek istediğinde API endpoint'ine istek gönderir ve yanıtı bekler. Örneğin, hava durumu uygulaması, hava durumu API'sinden veri çeker.

Webhook: Sunucu tarafından gönderilir (push modeli). Belirli bir olay meydana geldiğinde veri sağlayıcı, alıcıya otomatik olarak bildirim gönderir. Örneğin, Stripe ödeme sisteminde işlem başarıyla tamamlandığında, e-ticaret sitesinin webhookuna otomatik POST isteği gelir.

Webhook İmplementasyonu İçin Best Practice'ler

  • İmza Doğrulama: Gelen webhook isteğinin gerçekten veri sağlayıcısından geldiğini HMAC imzası ile doğrulayın.
  • Yeniden Deneme Stratejisi: Başarısız istekleri exponential backoff algoritması ile yeniden gönderin (1 saniye, 2 saniye, 4 saniye vb.).
  • İdempotency Key Kullanımı: Her webhook isteğine benzersiz ID ekleyerek aynı olayın birden fazla işlenmesini önleyin.
  • HTTPS Zorunluluğu: Webhook URL'leri mutlaka HTTPS protokolü kullanmalı, düz HTTP güvenli değildir.
  • Timeout Ayarlama: Webhook işlemlerinin maksimum süresini belirleyin (genellikle 30 saniye).
  • Logging ve Monitoring: Tüm webhook aktivitelerini kaydedin ve monitör edin, hatalı olayları takip edin.
  • Test Ortamı: Production'a geçmeden webhook entegrasyonunu test ortamında kapsamlı şekilde sınayın.
  • Dead Letter Queue: Başarısız webhook'ları yeniden işlemek üzere saklayın, belirli sayıda deneme sonrası log'a kaydedin.

Webhook ve Gerçek Dünya Senaryoları

Örnek 1: E-Ticaret Sipariş Yönetimi
Müşteri bir ürün satın aldığında, e-ticaret platformu (Shopify örneğin) webhook aracılığıyla:

  • Envanter yönetim sistemi güncellenir,
  • Kargo firmasına sipariş bildirimi gönderilir,
  • İstatistik analiz sistemi satış kaydını işler,
  • Email otomasyonu müşteriye "Sipariş Onaylandı" yazısı gönderir.

Örnek 2: GitHub Continuous Integration
Geliştirici GitHub deposuna code push yaptığında, GitHub webhook aracılığıyla:

  • Jenkins CI/CD server'ı tetiklenir,
  • Otomatik testler başlatılır,
  • Build işlemi gerçekleştirilir,
  • Sonuç GitHub Pull Request'e yorum olarak yazılır.

Örnek 3: Form Submission Otomasyonu
Web sitesine yeni lead formu gönderildiğinde, webhook:

  • CRM sistemine otomatik kayıt oluşturur,
  • Satış ekibine email bildirim gönderir,
  • Analytics sistemine event kaydeder,
  • Email kampanyası otomasyonunu başlatır.

Webhook Güvenliği

Webhooklar HTTP üzerinden veri gönd

W harfindeki diğer terimler