Misaliperver: CAP, ACID, SOLID Kısaca Nedir?

Giriş

Daha önce paylaylaştığım bloglara nazaran biraz tanım bazlı açıklamaların olduğu bir yazı ile karşınızdayım. Yazılım dünyasında adından çokça söz ettiren ve mülakatların göz bebeği olan bu kavramlar uygulandığı ve benimsendiği takdirde bize bir takım avantajlar sunuyor. 

CAP Teoremi Nedir?

Dağıtık bir sistem üzerinden sunulan veride, aynı anda hem Consistency, hem Avilabilty hem de Partitation Tolaranceye sahip bir sistemin kurgulanamayacağı varsayımıdır.

Consistency: (Tutarlılık)  Aynı anda x sunucuya istek atılır. Sunuculardan cevap aynı değer döner.

Avilabilty : (Erişilebilirlik)  Dağıtık sisteme hem aynı anda yazılabilir, hem aynı anda okunabilir.

Partitation Tolarance : (Verinin parçalanabilirliği) Veriyi saklayan sunucular arasındaki bağlantı kopsa bile sistem çalışmaya devam edecektir.


ACID Nedir?

İlişkisel veri tabanında Transactional işlemlerin tanımlanması için uyulması gereken kuralların bütünüdür.

Atomicity : Transaction işleminin bütünlüğünü ifade eder. Ya hep ya hiç kuralı.
Consistency : Transaction işlemi bitene kadar, mevcut değerin korunması ve transaction işleminin sonunda değerin yeni değere dönüştürülmesidir.
Isolation : Transaction sırasında ilgili veri setinin kitlenmesi ve diğer transaction işlemlerinden ayrılması durumudur.
Durability : Sistemin herhangi bir hata alması durumunda, kendi bir önceki geçerli duruma çevirebilmesi kabiliyetini ifade eder.

Solid Nedir?

S — Single-responsibility principle : Bir sınıfın veya fonksiyonun yalnızca bir görevi olmalıdır.
O — Open-closed principle : Var olan özellikleri değiştirilemez ama yeni özellikler eklenebilir olmalıdır.
L — Liskov substitution principle Alt sınıflar üst sınıflar yerine kullanılabilmelidir.
I — Interface segregation principle Birden fazla arayüzde görevlerin tanımlanmasıdır.
D — Dependency Inversion Principle Sınıflar arası bağ olabildiğince az olmalıdır, soyutlanmalıdır.

Son

Örneğin CAP'i bilmeniz yöneticinize veya projeciye ilgili konu hakkında neleri yapıp neleri yapamayacağımızı anlatırken bizlere yardımcı olabilir. Hiç bir zaman CAP olamayız ama operasyonel hamlelerle önem konusunu düşürebiliriz.

Banka/eticaret firmasında çalışıyorsanız, elinde olmayan bir parayı&ürünü alıcı ve satıcı arasında change etmek istemezsiniz sanırım. Yardımımıza ACID koşuyor ve bir eticaret şirketiyseniz kara cuma günü ACID prensibleri münasebetiyle kullandığımız RDMBS'de açılan db locklar sistemi yavaşlatıyor, bir öğle vakti ansızın web siteniz ve userlar arasına bir set çekiyor. E ne yapabiliriz, ACID mişçesine kabullenebilir microservice mimarisine geçebiliriz. Yani 2PC, Saga gibi yöntemlerle işlemlerimizi async düzeyde geliştirerek operasyonel olarak şirketimizin değişmesi daha doğru seçenek olabilir. 
Buna bir sürü e ticaret firması geçiş yaptı, utanıp sıkılmaya gerek yok.
Her zaman güzel sonuçları olmayacaktır tabiki; arkadaşım Alibaba'dan 2017 yılında yaptığı siparişi belirli bir sebepten dolayı ertesi gün iptal etti. İptal edildiğine dair mesajlar geldi, parası iade edildi. 6.5 ay sonra kargosu elindeydi. İlginç tabi ne olmuş olabilir acaba :)

Solid'e laf atmayacağım oradaki düşüncelerimi saklı tutmayı hem kendim hem de gelecekte değişebilecek kararlarım açısından haklı hakkımı haklı saklı tutuyorum.

Bir sonraki yazımızda görüşmek üzere. Belki yarın belki yazın..

Yorumlar