Referanslar
Aşağıdaki bilgiler microservices.io sitesinden alınmıştır. Detaylı açıklamalar için ziyaret edebilirsiniz.
Orchestration Saga Deseni Nedir?
- Birden fazla mikroservisin dahil olduğu iş süreçlerinde veri tutarlılığını sağlamak için kullanılan bir desendir.
- Her bir yerel işlem, veritabanını günceller ve bir sonraki yerel işlemi tetiklemek için bir mesaj veya olay yayınlar.
- Eğer bir yerel işlem iş kurallarını ihlal ettiği için başarısız olursa, saga önceki yerel işlemler tarafından yapılan değişiklikleri geri almak için bir dizi telafi edici işlem yürütür.
Neden Orchestration Saga Deseni Kullanıldı?
- Sipariş oluşturma süreci, birden fazla mikroservisin (Sipariş, Kullanıcı, Ürün, Sevkiyat) dahil olduğu bir iş sürecidir.
- Her bir mikroservisin kendi veritabanı vardır ve bu veritabanları arasında dağıtılmış işlemler kullanmak uygun değildir.
- Orchestration Saga deseni, bu tür senaryolarda veri tutarlılığını sağlamak için kullanılır.
Nasıl Çalışır?
- Sipariş Servisi, POST /orders isteğini alır ve “PENDING” durumunda bir Sipariş oluşturur.
- Saga orkestratörü (Sipariş Servisi), Kullanıcı Servisine bir “Reserve Credit” komutu gönderir.
- Kullanıcı Servisi, krediyi ayırmaya çalışır ve sonucu belirten bir yanıt mesajı gönderir.
- Saga orkestratörü, Ürün Servisine bir “Check Stock” komutu gönderir.
- Ürün Servisi, stok durumunu kontrol eder ve sonucu belirten bir yanıt mesajı gönderir.
- Saga orkestratörü, siparişi onaylar veya reddeder.
- Onaylanan siparişler için, Sevkiyat Servisi bir sevkiyat kaydı oluşturur.
Avantajları:
- Dağıtılmış işlemlere ihtiyaç duymadan, birden fazla mikroservis arasında veri tutarlılığını sağlar.
- Mikroservislerin birbirinden bağımsız olarak geliştirilmesine ve dağıtılmasına olanak tanır.
Dikkat Edilmesi Gerekenler:
- Programlama modeli daha karmaşıktır. Geliştiricilerin, saga içinde daha önce yapılan değişiklikleri açıkça geri alan telafi edici işlemleri tasarlaması gerekir.
- Saga’yı başlatan istemcinin, asenkron akışın sonucunu belirleyebilmesi gerekir. Bunun için farklı seçenekler ve trade-off’lar vardır (örneğin, saga tamamlandığında yanıt göndermek, istemcinin periyodik olarak sorgu yapması vb.).



