Yükleniyor

Saga Pattern Nedir?

Blog Kategorileri

.Net Core Mimariler
Tasarım Desenleri
ORM Araçları
API Geliştirme
Web Geliştirme
Veritabanları
9 Mayıs 2025 Cuma
Saga Pattern Nedir?

Saga deseni, bir iş sürecini birden fazla bağımsız ve otonom mikroservise böler. Bu işlemler bir bütün olarak tek bir işlem gibi davranır. Yani, tüm adımlar başarıyla tamamlanmazsa sistem, önceki adımları geri alarak (rollback) işlemi iptal eder.

Bu yapı, özellikle dağıtık işlem yönetimi gereken durumlarda kullanılır. Örneğin, bir e-ticaret sisteminde siparişin alınması, stok kontrolü, ödeme işlemi ve kargo hazırlığı gibi adımların her biri bir mikroservis tarafından yönetilebilir.

Saga Pattern'in Temel Özellikleri

  1. Dağıtık İşlem Yönetimi:Bir işlemi tek bir bütün olarak ele almak yerine, adım adım parçalara böler.

  2. Geri Alma (Rollback) Mekanizması:Bir adım başarısız olduğunda, önceki adımları geri almak için tazmin edici işlemler tetiklenir.

  3. İki Yöntemle Uygulama:

    • Koreografi (Choreography)

    • Orkestra (Orchestration)

Saga Pattern'in Uygulama Yöntemleri

​1. Koreografi (Choreography)

Her mikroservis, bir olayın sonucunda başka bir olay yayınlar ve diğer mikroservisler bu olaylara abone olur. Bir adım başarısız olursa, geri alma işlemi başlatan bir olay yayınlanır.

Örnek Senaryo:

  1. Sipariş Mikroservisi bir sipariş oluşturur ve "Sipariş Oluşturuldu" olayını yayınlar.

  2. Ödeme Mikroservisi bu olayı dinleyerek ödemeyi başlatır.

  3. Eğer ödeme başarısız olursa, "Ödeme Başarısız" olayı yayınlanır ve Sipariş Mikroservisi siparişi iptal eder.

Avantajları:

  1. Gevşek bağlılık sağlanır.

  2. Mikroservisler bağımsız olarak çalışır.

  3. Daha az merkezi kontrol.

Dezavantajları:

  1. Olay zinciri karmaşıklaşabilir.

  2. İzleme ve hata yönetimi zorlaşabilir.

2. Orkestra (Orchestration)

Merkezi bir koordinatör servis tüm süreci yönetir. Her adımdan sonra bir sonraki servisi tetikler ve başarısızlık durumunda tazmin işlemi başlatır.

Örnek Senaryo:

  1. Orkestra Servisi sipariş oluşturma isteğini başlatır.

  2. Sipariş başarıyla oluşturulursa ödeme işlemini tetikler.

  3. Ödeme başarılı olursa kargo sürecini başlatır.

  4. Eğer bir adım başarısız olursa, orkestra servisi tüm süreci geri alır.

Avantajları:

  1. Merkezi kontrol sağlanır.

  2. İzleme ve hata yönetimi daha kolaydır.

Dezavantajları:

  1. Orkestra servisi tek hata noktası (single point of failure) olabilir.

  2. Merkezi kontrol nedeniyle mikroservislerin bağımsızlığı azalabilir.

Saga Pattern'in Avantajları

  1. Tutarlılık Sağlar:Dağıtık işlemler arasında veri bütünlüğünü korur.

  2. Bağımsız İşlem Yürütme:Her işlem kendi başına bir başarı veya başarısızlık durumu içerir.

  3. Geri Alma Mekanizması:Bir işlem başarısız olursa, sistem otomatik olarak geri alma işlemlerini tetikler.

  4. Ölçeklenebilirlik:Mikroservislerin bağımsızlığı artırılarak performans iyileştirilir.

Saga Pattern'in Dezavantajları

  1. Yönetim Karmaşıklığı:Özellikle koreografi yönteminde olay zinciri karışabilir.

  2. Hata İzleme:Hata tespiti ve geri alma mekanizması zor olabilir.

  3. Bağımlılıkların Artması:Bir işlem zincirine çok sayıda servis dahil olduğunda bağımlılıklar artar.

Saga Pattern Kullanım Alanları

  1. E-Ticaret Uygulamaları:Sipariş oluşturma, ödeme işlemleri ve kargo yönetimi.

  2. Rezervasyon Sistemleri:Uçak bileti satın alma, otel rezervasyonu ve araç kiralama işlemleri.

  3. Banka Uygulamaları:Para transferi ve fatura ödeme süreçleri.

  4. Entegrasyon Projeleri:Birden fazla sistemi entegre ederken işlem tutarlılığını sağlamak.

Saga Pattern ve Dağıtık İşlem Yönetimi

​Dağıtık sistemlerde klasik ACID (Atomicity, Consistency, Isolation, Durability )işlemlerini sağlamak neredeyse imkansızdır. Bu yüzden Saga, işlemleri adımlara bölerek her adımın başarı veya başarısızlığını yönetmeye odaklanır.

Örneğin:
Bir otel rezervasyonu yaparken ödeme başarılı olup otel rezervasyonu başarısız olursa, ödeme işlemi geri alınmalıdır. Saga, bu geri alma mekanizmasını etkin şekilde yönetir.


Ek Bilgi: ACID Prensipleri

Mikroservislerde veri tutarlılığını sağlamak için kullanılan önemli bir kavram da ACID prensipleridir:

  1. Atomicity (Atomiklik):İşlem ya tamamen başarılı olur ya da tamamen geri alınır.

  2. Consistency (Tutarlılık):Veritabanı, her işlem sonrasında tanımlı kurallara uygun kalır.

  3. Isolation (Yalıtım):Aynı anda gerçekleşen işlemler birbirini etkilemez.

  4. Durability (Süreklilik):Başarılı bir işlem kalıcıdır ve sistem çökse bile kaybolmaz.

Terim
Açıklama
Örnek Senaryo
Atomicity
İşlem ya tamamen başarılı olur ya da tamamen başarısız olur.
Para transferi sırasında hata olursa, çekilen para geri yüklenir.
Consistency
Veritabanı her zaman tanımlı kurallara uygun kalır.
Stok 5 ise 6 ürün satışı yapılmaz.
Isolation
İşlemler birbirinden izole edilir, birbirlerini etkilemez.
Aynı ürünü iki kişi aynı anda güncelleyemez.
Durability
İşlem tamamlandığında veri kalıcıdır, sistem çökse bile korunur.
Ödeme başarılıysa sistem kapansa bile kayıt tutulur.

Saga Pattern, dağıtık işlemlerde bu ACID prensiplerinin etkili bir şekilde uygulanmasını sağlar.


Sonuç

Saga deseni, dağıtık mimarilerde işlem tutarlılığını sağlamak için güçlü bir araçtır. Özellikle mikroservis tabanlı yapılarda işlemlerin birbirine bağımlı olduğu senaryolarda vazgeçilmez hale gelir. Koreografi ve orkestrasyon yöntemlerinin artı ve eksi yönlerini iyi değerlendirmek, projeye uygun bir yaklaşım seçmek başarılı bir uygulama için kritiktir.