Saga Deseni Nedir?

İngilizce: Saga Pattern

Saga deseni, dağıtık servislerde uzun işlemi adımlara bölüp hata olduğunda telafi aksiyonlarıyla tutarlılığı koruyan mikroservis yaklaşımıdır.

Saga Deseni Nedir?

Saga deseni, birden fazla servisi kapsayan iş işlemini küçük adımlara böler ve bir adım başarısız olursa daha önce tamamlanan adımlar için telafi işlemleri çalıştırır. Amaç dağıtık sistemlerde tek bir büyük transaction’a bağımlı kalmadan tutarlılığı yönetmektir.

Örneğin sipariş oluşturma akışında ödeme alınır, stok ayrılır ve kargo kaydı açılır. Kargo kaydı başarısız olursa ödeme iadesi ve stok rezervasyonunu kaldırma gibi telafi adımları gerekebilir.

Saga Türleri

  • Orchestration: Merkezi bir orchestrator hangi adımın ne zaman çalışacağını ve hata durumunda hangi telafinin yapılacağını yönetir.
  • Choreography: Servisler olay yayınlar ve diğer servisler bu olaylara tepki verir; merkezi yönetici yoktur.

Her adımın idempotent olması önemlidir. Aynı olay iki kez işlenirse iki ödeme iadesi veya iki stok düşümü oluşmamalıdır.

İş Dünyasında Kullanımı

Microservice mimarilerinde saga, ödeme, rezervasyon, üyelik aktivasyonu ve tedarik zinciri akışlarında kullanılır. Klasik veritabanı transaction’ı tek servis içinde güçlüdür; servisler ayrıldığında ağ hatası, zaman aşımı ve kısmi başarı ihtimali tasarıma dahil edilmelidir.

CQRS, event sourcing veya outbox pattern gibi yaklaşımlar saga ile birlikte görülebilir. Kritik nokta, “hangi durumda hangi telafi yapılacak?” sorusunun iş birimiyle birlikte açıkça tanımlanmasıdır.