Event-Driven (Olay Tabanlı) Nedir?
İngilizce: Event-Driven Architecture
Event-driven mimari, sistemlerin sipariş oluştu, ödeme alındı gibi olaylara bağımsız bileşenlerle tepki vermesini sağlar.
Event-Driven Mimari Nedir?
Event-driven ya da olay tabanlı mimari, sistemlerin “sipariş oluşturuldu”, “ödeme alındı”, “stok azaldı” gibi olayları yayınlayıp diğer bileşenlerin bu olaylara bağımsız şekilde tepki vermesi üzerine kurulur. Bileşenler birbirini doğrudan çağırmak zorunda kalmaz.
Nasıl Çalışır?
Olayı üreten sistem producer, olayı alan sistem consumer olarak düşünülebilir. Arada mesaj kuyruğu, event bus, stream platformu veya webhook bulunabilir. Producer olayın gerçekleştiğini bildirir; consumer e-posta gönderebilir, stok güncelleyebilir, rapor tablosu yazabilir veya üçüncü taraf servise haber verebilir.
Bu yapı asenkron çalışır. Bu nedenle tekrar deneme, idempotency, sıra garantisi, hata kuyruğu ve gözlemlenebilirlik baştan tasarlanmalıdır. Aynı olayın iki kez işlenmesi fatura veya stok gibi alanlarda ciddi sorun yaratabilir.
Webhook ve Mesaj Kuyruğu ile İlişkisi
Webhook, bir olay olduğunda başka sisteme HTTP isteği gönderen pratik bir event-driven mekanizmadır. Mesaj kuyruğu ise olayların güvenilir şekilde sıraya alınmasını, tüketilmesini ve yeniden denenmesini sağlar.
İş Dünyasında Kullanımı
E-ticaret sipariş akışı, ödeme sonrası fatura oluşturma, CRM bildirimleri, depo entegrasyonu, IoT verisi ve SaaS bildirimleri olay tabanlı tasarımdan yararlanabilir. En büyük avantaj, yeni bir consumer ekleyerek mevcut akışı fazla bozmadan yeni yan etkiler ekleyebilmektir.
İlgili Terimler
Cron job, Linux/Unix sistemlerde belirli saat veya aralıkta çalışan yedekleme, rapor veya senkronizasyon gibi zamanlanmış görevdir.
Event SourcingEvent sourcing, uygulama durumunu son değer olarak değil, değişiklikleri anlatan sıralı ve değişmez olay kayıtları olarak saklayan mimari desendir.
Mesaj KuyruğuMesaj kuyruğu, servislerin birbirini beklemeden çalışması için mesajları sıraya alıp tüketicilere güvenilir biçimde iletir.
Observer DeseniObserver deseni, bir nesnenin durumu değiştiğinde bağlı tüm gözlemcilerin otomatik bilgilendirildiği olay tabanlı tasarım desenidir.
Polling ve Webhook KarşılaştırmasıPolling ve webhook karşılaştırması, veriyi periyodik sormakla olay anında bildirim almak arasındaki mimari seçimi açıklar.
Yayınla-Abone Ol (Pub/Sub)Pub/Sub, yayıncıların olayları kanallara gönderdiği ve abonelerin ilgilendikleri mesajları aldığı iletişim modelidir.
Trigger (Tetikleyici)Trigger, belirli bir olay veya koşul gerçekleştiğinde veritabanı işlemi, entegrasyon ya da otomasyon adımını başlatan tetikleyicidir.
WebhookWebhook, belirli bir olay olduğunda bir sistemin başka bir sisteme otomatik HTTP isteği göndermesini sağlayan bildirim yöntemidir.