Saga Pattern #


(Bağımsız ve Hata Toleranslı İş Akışı Yönetimi)
Photo by Microservices Architecture Pattern - SAGA #

Saga Pattern’e Giriş #

Saga, mikroservis tabanlı uygulamalarda uzun süreli ve birden fazla adımdan oluşan işlemleri yönetmek için kullanılan bir iş akışı yönetim desenidir.

Saga’nın Amacı ve Faydaları #

  • Saga, dağıtık sistemlerde uzun süreli işlemleri güvenli bir şekilde yönetmek için kullanılır.
  • İşlemleri adımlara bölerek hata durumunda her bir adımın telafi edilmesini sağlar.
  • Sistemin genel dayanıklılığını artırır ve hata yönetimini daha yapılandırılmış bir şekilde ele alır.

Saga Pattern’in Temel Bileşenleri #

  • Choreography
  • Orchestration
  • Compensation
  • Error Handling

Saga Pattern’in Temel Bileşenleri #

  • Event-Driven Communication
  • Service Independence
  • Real-Time Updates
  • Distributed Transactions

Choreography vs Orchestration #

Choreography ve Orchestration, Saga Pattern’in iki ana uygulama yöntemidir. Bu sunumda özellikle Choreography üzerine odaklanacağız.

Choreography ve Orchestration Farkları #

  • Choreography: Servisler olaylar aracılığıyla birbirleriyle konuşur, merkezi bir kontrol yoktur.
  • Orchestration: Merkezi bir kontrol birimi (orchestrator) tüm süreci yönetir ve kontrol eder.

Choreography Yapısının Özellikleri #

  • Olay Tabanlı İletişim: Servisler arasında asenkron olaylar yoluyla iletişim kurulur, bu da sistemin daha hızlı tepki vermesini sağlar.
  • Servislerin Bağımsızlığı: Her servis kendi sorumluluğunda olan işi yapar ve diğer servislerden bağımsız çalışır. Bu, sistemin esnekliğini ve ölçeklenebilirliğini artırır.

Choreography Yapısının Özellikleri #

  • Dağıtık Mimari için Uygunluk: Choreography, dağıtık sistemlerde merkezi bir yönetim olmadan iş akışlarını etkin bir şekilde yönetir. Servisler kendi işlemlerini yönetirken olay tabanlı bir akışla ilerler.

Choreography’nin Avantajları #

  • Merkezi kontrol birimi yoktur; servisler bağımsızdır.
  • Olay tabanlı iletişim, hızlı ve gerçek zamanlı güncellemeler sağlar.
  • Sistemin esnekliği ve ölçeklenebilirliği yüksektir.

Choreography’nin Dezavantajları ve Zorlukları #

  • Hata yönetimi karmaşıktır ve telafi işlemleri zor olabilir.
  • Olayların izlenmesi ve yönetimi zordur (event storming).
  • Servisler arasında beklenmeyen bağımlılıklar oluşabilir.

Compensation İşlemleri (Compensable Transactions) #

  • Başarısız adımları geri alarak sistemin önceki durumuna dönmesini sağlar.
  • Telafi edici işlemler her adım için ayrı tanımlanır ve hata durumunda tetiklenir.
  • Servisler bağımsız çalışırken kendi telafi işlemlerini yönetir.

Hata Yönetimi #

  • Hatalar olaylar aracılığıyla yönetilir ve her adımda telafi işlemleri tetiklenir.
  • Olay tabanlı hata yönetimi, olayların doğru izlenmesini ve uygun yanıt verilmesini gerektirir.
  • Özellikle karmaşık hata senaryoları için dikkatli bir planlama ve güçlü telafi işlemleri gereklidir.

Demo #

Dinlediğiniz için teşekkürler #

Kaynaklar: A’dan Z’ye Mikroservis Mimarisi Eğitimi - 1. Etap - ChatGPT

Örnekler Reposu: aimtune/distributed-systems-design-patterns-examples