Ana içeriğe geç

Olay Güdümlü Mimari

İngilizcesi
Event-Driven Architecture
Türkçe karşılığı
olay tabanlı mimari
Okunuşu
ivent drivın arkitekçır

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/event-driven-architecture

Kısaca

Olay güdümlü mimari, servislerin bir siparişin verilmesi gibi olaylar üreterek ve bunlara tepki vererek iletişim kurduğu bir yazılım tasarım tarzıdır.

Olay güdümlü mimari nedir?

Olay güdümlü mimaride bileşenler birbirini doğrudan çağırmak yerine bir şeyin olduğunu duyurarak iletişim kurar. Olay (event), genellikle küçük bir veri yüküyle birlikte OrderPlaced ya da UserSignedUp gibi bir olgunun kaydıdır. Üreticiler (producer) olayları yayınlar ve istenen sayıda tüketici (consumer) bunlara birbirinden bağımsız tepki verebilir.

Olaylar genellikle bir mesaj kuyruğu ya da olay akışı platformu gibi, onları saklayan ve abonelere ileten bir olay aracısı (event broker) üzerinden ilerler. Örneğin bir sipariş verildiğinde sipariş servisi tek bir olay yayınlar; ödeme, stok, e-posta ve analitik servislerinin her biri kendi yöntemiyle tepki verir. Sipariş servisi kimin dinlediğini bilmez ve umursamaz; bu yüzden onu değiştirmeden yeni tüketiciler eklenebilir.

Yangın alarmı bir benzetmedir: çaldığında insanlar binayı terk eder, itfaiye çağrılır ve asansörler durur; alarm bunların hiçbirini bilmez. Olay güdümlü mimari mikroservislerde, gerçek zamanlı sistemlerde, bağlı cihazlarda, ödeme işlemede ve yavaş işlerin kullanıcıyı bekletmek yerine arka planda yapılması gereken her yerde yaygındır.

Bunun ödünü, sistemin eşzamansız ve nihai tutarlı (eventually consistent) hâle gelmesidir: farklı servisler güncel durum konusunda kısa süreliğine uyuşmayabilir ve tek bir isteği birçok olay boyunca izlemek iyi bir günlükleme ve iz sürme gerektirir. Tüketiciler ayrıca yinelenen ya da sırası bozuk olayları da ele almalıdır; idempotent işleyicilerin önemi buradan gelir. Olay güdümlü mimari, tek bir program içinde çalışan observer deseninden ve çağıranın yanıt beklediği istek-yanıt API'lerinden farklıdır.

Önemli noktalar

  • Bileşenler olay yayınlayıp tüketerek iletişim kurar.
  • Üreticiler hangi tüketicilerin var olduğunu bilmez; bu, servisleri gevşek bağlı tutar.
  • Bir olay aracısı ya da mesaj kuyruğu olayları saklar ve iletir.
  • Sistemler eşzamansız ve nihai tutarlı hâle gelir.
  • Olaylar birden fazla kez ulaşabileceği için tüketiciler idempotent olmalıdır.

Örnek

Bir olayı yayınlamak ve tüketmektypescript
// broker is a placeholder for a message queue or event streaming client

// Producer: the order service announces what happened and moves on
await broker.publish("order.placed", { orderId: "A-1001", total: 59.9 });

// Consumers: each service reacts independently to the same event
broker.subscribe("order.placed", async (event) => {
  await sendConfirmationEmail(event.orderId);
});

broker.subscribe("order.placed", async (event) => {
  await reserveStock(event.orderId);
});

Sık sorulan sorular

Olay güdümlü mimari ile istek-yanıt arasındaki fark nedir?

İstek-yanıt modelinde çağıran belirli bir servise istek gönderir ve yanıt bekler. Olay güdümlü mimaride ise üretici beklemeden bir olay yayınlar ve ilgilenen servisler buna kendi takvimlerinde tepki verir.

Olay aracısı (event broker) nedir?

Olay aracısı, üreticilerden olayları alan, saklayan ve tüketicilere ileten altyapıdır. Mesaj kuyrukları ve olay akışı platformları yaygın örneklerdir.

Nihai tutarlılık (eventual consistency) nedir?

Nihai tutarlılık, bir değişiklikten sonra sistemin farklı bölümlerinin kısa bir süre farklı veri gösterebileceği, ancak ilgili olaylar işlendiğinde hepsinin güncel hâle geleceği anlamına gelir. Olay güdümlü ve dağıtık sistemlerde yaygın bir ödündür.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar