ACID & SAGA

KATEGORİ

Saga pattern üzerine okuma yaparken buraya ACID tanımını da eklemeyi düşündüm. Bir saga local transaction dizisini ifade eder. Bir siparişin kabülünden onaylanmasına kadar geçen sürede birden çok local transaction kullanılır. (Bkz: Microservices Patterns – Chapter 4 (Chris Richardson))

Burada saga’yı ACID transactionlardan ayıran önemli bir konu sagalar arasında isolation olmamasıdır. Sipariş parça parça işlenirken local transactionlar commit edilir.

Finans vb. uygulamalarda saga kullanılamaz çünkü saganın önerdiği yapı ‘eventual consistency’ dir.

ACID

Atomicity: Bir transaction içindeki tüm işlemler ya birlikte başarıyla tamamlanır ya da hiçbiri yapılmaz.

Consistency: Bir transaction tamamlandığında sistem, kurallarını ve bütünlük kısıtlarını ihlal etmeyen geçerli bir duruma geçer.

Isolation: Eşzamanlı çalışan transaction’lar, birbirlerinin ara (henüz tamamlanmamış) durumlarını göremez.

Durability: Başarıyla tamamlanan bir transaction’ın etkileri, sistem çökse bile kalıcı olarak korunur.