Dağıtık sistemler (distributed systems) nedir
Sözlük

Dağıtık sistemler (distributed systems) nedir

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Dağıtık sistemler, birden çok bilgisayarın ağ üzerinden tek bir sistem gibi çalışmasıdır. Tutarlılık, hata toleransı ve örnek senaryo.

Dağıtık sistem nedir?

Dağıtık sistem, ağ üzerinden haberleşen birden fazla bilgisayarın (düğümün) tek bir sistem gibi davranarak ortak bir işi yaptığı mimaridir. Kullanıcı bir uygulamaya eriştiğinde arkada kaç sunucunun çalıştığını bilmez. Veritabanı kümeleri, mikroservis mimarileri, bulut hizmetleri ve mesajlaşma altyapıları dağıtık sistemlerdir.

Bu mimariye geçişin nedenleri genellikle ölçeklenebilirlik, dayanıklılık ve coğrafi yakınlıktır: tek bir makine yükü taşıyamaz, bozulursa her şey durur ve uzaktaki kullanıcıya gecikme yaşatır. Dağıtık sistem bu sorunları çözer ama karşılığında yeni ve zor sorunlar getirir.

Dağıtık sistemleri zorlaştıran şeyler nelerdir?

Tek makinede olmayan belirsizlikler ortaya çıkar: • Ağ güvenilir değildir: mesajlar kaybolabilir, gecikebilir ya da tekrar gelebilir. • Kısmi arıza olur: bir düğüm çökerken diğerleri çalışmaya devam eder ve karşı tarafın çöktüğü mü, yavaşladığı mı bilinemez. • Ortak bir saat yoktur: düğümlerin saatleri farklıdır, olayların sırası kesin bilinemez. • Durum paylaşımı zordur: aynı veri birden çok yerde tutulduğunda kopyaların uyumlu kalması gerekir.

Bu nedenle dağıtık sistem tasarımı, hatanın olacağını varsayarak yapılır; tasarım sorusu "hata olmasın" değil "hata olduğunda ne olacak" sorusudur.

Tutarlılık, erişilebilirlik ve CAP teoremi

Veri birden çok düğümde tutulduğunda iki ihtiyaç çatışır: herkesin her zaman aynı güncel veriyi görmesi (tutarlılık) ve sistemin her istekte yanıt vermesi (erişilebilirlik). CAP teoremi, ağ bölünmesi (partition) yaşandığında bir sistemin ikisini birden tam olarak sağlayamayacağını söyler; tasarımcı hangisinden ödün vereceğine karar verir.

Örneğin bir bankacılık işleminde tutarlılık önceliklidir, bir ağ kesintisinde sistem işlemi reddetmeyi tercih edebilir. Bir sosyal ağdaki beğeni sayısında ise kısa süreli tutarsızlık kabul edilir ve sistem yanıt vermeye devam eder; veriler sonradan eşitlenir (nihai tutarlılık).

Örnek: ödeme isteği iki kez gelirse

Örneğin bir mobil uygulama ödeme isteği gönderir, yanıt gecikir ve kullanıcı ya da uygulama isteği yeniden dener. Sunucu ilk isteği zaten işlemiştir; ikinci istek aynı ödemeyi bir kez daha yaparsa müşteri çift çekim yaşar.

Bu tür tekrarlara karşı işlemleri idempotent tasarlamak gerekir: aynı istek birden çok kez gelse de sonuç tek bir kez uygulanmış gibi olmalıdır. Genellikle isteğe benzersiz bir anahtar eklenir ve sunucu daha önce işlenmiş anahtarı tekrar işlemez. Replikasyon, konsensüs algoritmaları, dağıtık kilitler ve yeniden deneme politikaları da benzer belirsizlikleri yönetmek için kullanılan yapı taşlarıdır.

Dağıtık sistemlerin ilişkili kavramları

Mikroservis mimarisi bir uygulamayı küçük bağımsız servislere böler ve doğası gereği dağıtıktır. Service mesh ve API gateway, servisler arası trafiği yönetmek için kullanılır. Olay güdümlü mimari ve mesajlaşma sistemleri bileşenleri gevşek bağlar. Gözlemlenebilirlik (log, metrik, izleme) ise dağıtık bir sistemde sorunun nerede olduğunu bulabilmek için vazgeçilmezdir.

Bir sistemi dağıtık yapmak her zaman doğru karar değildir. Tek bir sunucunun yetebildiği bir ihtiyaç için dağıtık mimari gereksiz karmaşıklık getirir. Karar, gerçek ölçek ve dayanıklılık ihtiyacına göre verilmelidir.

Mindset'te dağıtık sistemler nerede çalışılır?

Mindset'in Dağıtık Sistem Tasarım Desenleri eğitiminde Dağıtık Sistem Temelleri ve Yanılgılar, Tutarlılık Modelleri, Bölümleme ve Veri Dağıtımı, Replikasyon ve Konsensüs, Dayanıklılık Desenleri ve Mesajlaşma ve Koordinasyon modülleri yer alır. Dağıtık Kilitleme ve Koordinasyon (ZooKeeper, etcd) ile Idempotency ve Dağıtık Tutarlılık Desenleri eğitimleri konuyu ayrıntılandırır.

İlgili Mindset programı

Dağıtık Sistem Tasarım Desenleri

Sık sorulanlar

Sık sorulan sorular

Dağıtık sistem ile merkezi sistem arasındaki fark nedir?

Merkezi sistem tek bir makinede ya da tek denetim noktasında çalışır. Dağıtık sistem ise ağ üzerinden haberleşen birçok düğümden oluşur. Bu, ölçek ve dayanıklılık sağlar ama ağ hataları ve tutarlılık gibi ek sorunlar getirir.

Mikroservis ile dağıtık sistem aynı şey mi?

Hayır. Mikroservis bir uygulama mimarisi biçimidir ve dağıtık sistemin bir örneğidir. Dağıtık sistem daha geniş bir kavramdır; veritabanı kümeleri ve mesajlaşma altyapıları da bu kapsamdadır.

Nihai tutarlılık ne demektir?

Verinin farklı kopyalarında güncellemenin anında değil, belli bir süre sonra eşitlenmesidir. Kısa süreli tutarsızlığın kabul edilebildiği ve erişilebilirliğin önemli olduğu sistemlerde tercih edilir. Örneğin bir beğeni sayısı farklı sunucularda kısa süre farklı görünebilir, sonra aynı değere gelir. Bakiye gibi alanlarda ise genellikle daha güçlü bir tutarlılık istenir.

Dağıtık sistemi öğrenmek için nereden başlanır?

Önce ağ, gecikme ve kısmi arıza gibi temel varsayımlar, sonra tutarlılık modelleri, replikasyon ve mesajlaşma kavramları incelenir. Küçük bir örnek sistem kurup hata senaryolarını denemek öğrenmeyi hızlandırır.