Cap Teoremi

Merhaba arkadaşlar bugün 1998’de Eric Brewer tarafından ortaya atılan distributed(dağıtık) sistemleri konu alan CAP Teoreminden bahsetmeye çalışacağız.

Cap Teoremi, dağıtık sistemlerde veri üzerinden sunulan hizmetlerin Consistency(Tutarlılık), Availability(Erişilebilirlik), Partition Tolarance (Bölünebilme Toleransı) özelliklerinden yalnızca 2 sine aynı anda sahip olabileceğini belirtir.

Gelin bu kavramları basitçe açıklayamaya ve oluşabilecek CA,CP,AP seçimlerini incelemeye çalışalım.

Öncelikle ufak bir tanımlama ile aşağıda geçireceğimiz node kavramını tanımlayalım.

Node : Dağıtık bir sistemde network aracılığıyla başka nodelar ile iletişime geçebilen makine ya da sunucuya verilen isimlendirmedir.

Consistency(Tutarlılık): Dağıtık sisteme atılan okuma sorgularında istenilen kayıtın son güncel değerinin getirilebiliyor olması gereklidir. Verinin güncelliğinin garanti edilemediği durumlarda veri talep eden tarafla paylaşılmamalıdır.

Availability(Erişilebilirlik): Dağıtık sisteme yapılan isteklere herhangi bir anda cevap verebilmesi o sistemin high availabilitye sahip olduğunu yani yüksek erişilebilirlik sağladığını gösterir. Sistemde ki nodelardan biri çalışmasa bile diğer nodelar üzerinden taleplere cevap verilebilir.

Partition Tolarance(Bölünebilme Toleransı): Nodelar arasında yaşanacak herhangi bir iletişim sorununda sistemin hayatına devam edebilmesi gereklidir.

Cap-Theorem

CA(Consistency — Availability)
Partition Tolarance feragat ederek sisteminizin tutarlı ve erişilebilir olması gereken durumlar için seçilir. Nodelar arası iletişim kaybolduğunda ise bunu tolere edemez.

Verilerin doğruluğunun garanti edilmesini istediğimiz durumlarda uygundur. (İlişkisel databaseler, transactional işlemler)
Örnek: Microsoft Sql Server

Ap(Availability — Partition Tolarance)
Nodelar arası bir iletişim sorunu varsa bunu diğer nodelara haberdar etmek için erişilebilirlikten ya da haberdar etmeyerek Consistency den feragat edilir.

Yani Partition Tolarance seçildiği durumda ya Availability ya Consistency arasında bir seçim yapılması gerekir. Bu senaryoda Availability seçildiği için nodelar arası iletişim koptuğunda sistem ayakta kalmaya ve erişilebilir olmaya devam edecektir. Fakat data tutarlı olmayacaktır. Yani bir değer nodelardan birinde farklı sonuç dönerken başka node üstünden farklı sonuç elde edilebilir.

Veri tutarlılığının garanti edilmesine ihtiyaç duymadığımız durumlarda uygundur. Sosyal medya uygulamalarında yer alan beğeni sayısı, paylaşım akışı düşünülebilir. Biraz daha farklı bir bakış açısı için Eventual Consistency kavramı araştırılabilir.
Örnek: Cassandra

CP(Consistency — Partition Tolarance)
Yukarıda belirttiğimiz gibi Partition Tolarance seçilirse Availability-Consistency kavramlarından birinden feragat edilir. Burada seçim veri tutarlılığı üzerinden yapılarak Erişilebilirlik kısmından feragat edilir.

Yani nodelar arası iletişimde bir problem olduğunda sistem çalışmaya ve veri tutarlılığını sağlamaya devam eder fakat tutarlı olmayan verilerin gösterilmemesi için erişilebilirlikten feragat edilir.

Veri yazmak üzerine kurulu iş modelleri için uygundur. (Uygulama logları)
Örnek : Redis

Cap Teoreminden bahsetmeye açıklamaya çalıştım, umarım faydalı olmuştur. Yararlandığım kaynaklarıda aşağıda paylaştım isteyenler göz atabilir.

Kaynak

https://www.analyticsvidhya.com/blog/2020/08/a-beginners-guide-to-cap-theorem-for-data-engineering/
https://barisvelioglu.net/cap-teorem-nedir-53557407bdef
https://dzone.com/articles/understanding-the-cap-theorem
https://towardsdatascience.com/cap-theorem-and-distributed-database-management-systems-5c2be977950e

Written By

Bir önceki günden daha iyi olmak için çalışarak kendimi geliştirmek, öğrendiklerim ve öğreneceklerim ile yazılım sektöründe büyük ölçekli ve uluslararası projelerde kendimden söz ettirmek istiyorum.

More From Author

You May Also Like

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir