Dağıtık Sistemler Neden Tek Bir Dizüstünden Yavaş Kalabiliyor
2015 COST makalesi, dağıtık sistemlerin genellikle tek bir iş parçacığına yenildiğini gösterdi. Gerçek bir şirket örneğiyle gereksiz ölçeklendirmenin maliyeti.
2015 yılında Frank McSherry, Michael Isard ve Derek Murray'in yayımladığı 'Scalability! But at What COST?' başlıklı makale, dönemin önde gelen dağıtık graf işleme sistemlerini tek bir dizüstü bilgisayarın tek iş parçacığıyla karşılaştırdı. Sonuç çarpıcıydı: Twitter takip grafiğinde bağlı bileşenleri bulma görevinde 128 çekirdekle çalışan GraphLab 242 saniyede bitirirken, laptop 1970'lerden kalma union-find tekniğiyle işi 15 saniyede tamamladı. Yazarlar bu farkı COST metriğiyle formülleştirdi: bir dağıtık sistemin tek bir iş parçacığını geçebilmesi için kaç çekirdeğe ihtiyaç duyduğu. Birçok sistem için bu sayı yüzlerle ifade ediliyor, bazıları için ise hiç yakalanamıyordu.
Bu tespitin bugünkü maliyeti somut bir örnekle gösterilebilir. Günde 2 milyar olayı işleyen bir SaaS şirketi, Kafka ve Flink tabanlı dağıtık bir mimariyle bunu yılda yaklaşık 1,4 milyon dolara mal ediyor: hesaplama ve ağ maliyetleri, platform mühendisliği ve koordinasyon kaynaklı arıza yönetimi dahil. Oysa aynı iş yükü, günlük 12 megabayt/saniyelik veri hızıyla tek bir sunucunun kapasitesinin çok altında kalıyor. İki yedekli sunucu ve beşte bir mühendisle aynı iş yılda sadece 57.000 dolara, üstelik daha hızlı şekilde yapılabiliyor; çünkü ağ üzerinden veri paketleme ve dağıtma yükü tamamen ortadan kalkıyor.
Bu alışkanlık, 2004-2012 döneminde Google'ın MapReduce yaklaşımıyla tamamen mantıklıydı; çünkü veriler tek makinede tutulamayacak kadar büyüktü. Ancak donanım o zamandan beri yüz kat gelişti: tek sunucular artık 192 çekirdek ve terabaytlarca bellek sunabiliyor, oysa çoğu şirketin veri hacmi hâlâ bir terabaytın altında. Amazon Prime Video, mikroservisleri tek bir programda birleştirerek maliyetini yüzde 90 düşürdüğünü, Segment ve Stack Overflow gibi şirketlerin de benzer basitleştirmelerle sorunsuz ölçek sağladığını açıkladı.
Sorun, bu karşılaştırmanın neredeyse hiç yapılmamasında: dağıtık sistemler kendi aralarında kıyaslanıyor, tek makine alternatifi test edilmiyor. Mühendisler için ders açık: gerçek iş yükünü ölçmeden dağıtık mimariye yönelmek, çoğu zaman kendi koordinasyon yükünü paralelleştirmeye milyonlarca dolar ödemek anlamına geliyor.