Olay Güdümlü Mimarilerde Dikkat Edilmesi Gereken Kavram Nihai tutarlılık (Eventual Consistency)
Olay güdümlü olanlar da dahil olmak üzere çeşitli mimariler üzerinde araştırmalarda bulunuyorum. Günümüzde artık pek çok geleneksel mimari ile oluşturulmuş sistemler Event güdümlü mimarilere evrilmektedir .
Bu sistemlerde her zaman önemli olan bir kavramın , nihai tutarlılık(Eventual Consistency) olduğunu gördüm.
Terime aşina olmayanlar için,
nihai tutarlılık, dağıtılmış bir sistemde, veri değişikliklerinin tüm düğümlere hemen yansıtılmayabileceği fikrini ifade eder.
Bu, çeşitli nedenlerle olabilir — örneğin, ağ gecikmeleri veya geçici arızalar.
Olay odaklı mimarilerde, bu kavram özellikle önemlidir, çünkü olaylar genellikle sistemdeki eylemleri veya güncelleştirmeleri tetiklemek için kullanılır.
Sistem sonunda tutarlı değilse, veri tutarsızlıkları veya beklenmeyen davranışlar gibi sorunlara yol açabilir.
Nihai tutarlılığın önemini göstermek için, şöyle bir örnek üzerinden anlatabilirim .
Büyük bir e-ticaret şirketi için etkinlik odaklı bir sistem kurulması gerekmektedir . Sistem , bir sipariş verildiğinde veya iptal edildiğinde envanter seviyelerini otomatik olarak güncelleyecek şekilde tasarlanmıştır .
İlk başta , her şey beklendiği gibi çalışıyor gibi görünüyordur . Ancak sistem ölçeklendikçe ve daha fazla sipariş akmaya başladıkça, garip davranışlar fark etmeye başlanmıştır . Bazen , envanter seviyeleri yanlış olabilir — örneğin , stokta olması gerekenden daha fazla ürünümüzün olması veya bunun tersi olabilir.
Bu senaryodaki , sorunun nihai tutarlılıktan kaynaklandığı aşikardır . Sistemin dağıtıldığından ve olaylar zaman uyumsuz olarak işlendiğinden, bir sipariş olayının hemen işlenmeme olasılığı vardır . Bu, envanter güncellemesinin bir süre sonrasına kadar gerçekleşmeyebileceği ve görünmeyen tutarsızlıklara yol açabileceği anlamına gelir . Sorunu çözmek için , sistemi nihai tutarlılığı dikkate alacak şekilde yeniden tasarlanması gerekmektedir .
Olayların sonunda işlendiğinden emin olmak için yeniden deneme mantığı eklenmesi ve ayrıca sistemin sonunda doğru envanter düzeylerinde yakınsadığından emin olmak için çakışma çözme stratejileri uygulanması gerekmektedir .
Zorlu bir süreç olacaktır , ancak sonunda çok daha sağlam ve ölçeklenebilir bir sistem kurmayı başarabiliriz .
Ve hepsi nihai tutarlılık için anlayış ve tasarım sayesinde oldu.
Bu nedenle, olay odaklı bir mimari üzerinde çalışıyorsanız, nihai tutarlılığı aklınızda bulundurduğunuzdan emin olun — bu sizi yolda çok fazla baş ağrısından kurtarabilir.