İçeriğe atla

Dağıtık sistemler

Vikipedi, özgür ansiklopedi

Dağıtık sistemler, sanal ve/veya fiziksel ağlar ile birbirine bağlanmış sistemler üzerinde çalışan yazılımların bütün olarak bir yazılımın yürütülmesine imkân verecek şekilde kullanılmasıdır. Dağıtık sistemler, bir yazılımın kesintisiz ve maliyeti az bilişim altyapılarına ihtiyaç duyulması ile ortaya çıkmış bir konudur. Temel olarak bir yazılımın birden fazla bilgisayar üzerinde koşturulması, nasıl ne şekilde koşturulacağının tasarlanması dağıtık sistemler altında incelenir.

İlgilendiği konular yazılımın ihtiyaç duyduğu tüm bileşenlerin; kesintisiz, istenen durumda, yüksek kaynak gereksinimlerine cevap vermesi ve maliyetlerini düşürmek amaçlanarak şekillendi. Şuan merkeziyetsiz uygulamalar üzerindede bu konseptleri görüyoruz. Büyük miktarda işi işleyebilme ihtiyacından, internetin gelişmesine ihtiyaçlar katlanarak artmış ve dağıtık sistemler konseptleride üzerine eklenerek ilerlemiştir.

Dağıtık sistemlerin tasarlanmasında olduğu gibi, Cluster'lar üzerinde çalışan dağıtık bir uygulamanın tasarımı ile gelen zorlukların çözümlenebilmesi için, bugüne kadar birçok gelişim sağlanmış ve bu gelişimler akademisyeneler ve şirketler tarafından desteklenmiştir.

Dağıtık sistemlerin konseptleri[değiştir | kaynağı değiştir]

Dağıtık sistemler tasarlarken ihtiyaca göre kullanılabilecek bileşenler;

  • Orkestrasyon yazılımları : Sanal makine veya conteyner'leri cluster veya single node bilgisayar üzerinde
  • Mesaj kuyrukları
  • Veritabanları
  • DNS
  • Cache
  • Firewall
  • VPN

Dağıtık sistemler tasarlarken bu bileşenlerin belirli konseptler ve yöntemler ile çalıştırılması gerekir. Bu konseptleri ihtiyaca uygun şekillendirerek tasarlarız.Genel olarak şunlara dikkat ederiz; erişilebilir konumların sayısına(ülkeler,bölgeler), uygulamaya gelen isteklere ne kadar hızlı cevap vermemiz gerektiğine, kritik verilerin olup olmamasına, kesinti konusunda ne kadar hassas olduğumuza göre tasarlayacağımız altyapılar ve kullancağımız bileşenlerde değişir.

Dağıtık sistemler tasarlanırken ve bileşenleri kullanırken hatta yazılımlarımızı tasarlarken göz önünde bulundurmamız gereken bazı konseptler vardır.

Temel olarak;

  • High Availability : Yüksek erişilebilirlik, bir yazılımın altyapısının yazılımı her zaman kullanıma hazır tutmayı amaçlaması
  • Consistency : Verilerin dağıtıldığında çoğaltılmış verilerin heryerde aynı olması
  • Fault Tolerance : Bir hata ya da beklenen durumun dışında bir olay yaşanırsa altyapının bu durumlara karşı tölaransını arttırmak amaçlanır

bunların yanında cluster şeklinde çalışan orkestrasyon yazılımları, veritabanları ve cache'lerin kendilerine özgü kavramları vardır. Bunların hepsi temel bu üç kavrama bağlanmaktadır.

Kaynaklar[değiştir | kaynağı değiştir]

  • Distributed Systems: Principles and Paradigms, Andrew S. Tanenbaum
  • AWS Builders Library