İletişim

Ölçeklenebilirlik Nedir?

Kısa tanım

Ölçeklenebilirlik, bir sistemin artan kullanıcı, veri veya istek yükünü, yanıt sürelerini kabul edilebilir sınırlarda tutarak ve maliyeti yükle orantılı artırarak karşılayabilme yeteneğidir. Dikey ölçekleme mevcut sunucuya daha fazla işlemci ve bellek ekler; yatay ölçekleme ise sisteme yeni sunucular katar. Yakından ilişkili yüksek erişilebilirlik (high availability) ise bir bileşen arızalandığında hizmetin kesintisiz sürmesini hedefler.

Diğer adları: scalability, yatay ölçekleme, dikey ölçekleme, yüksek erişilebilirlik, high availability, HA

Tek sunucuyu büyüterek dikey ölçekleme ile yük dengeleyici arkasına yeni sunucular ekleyerek yatay ölçeklemeyi karşılaştıran diyagram

Dikey ve yatay ölçekleme

Dikey (scale up)Yatay (scale out)
YöntemAynı sunucuya daha fazla CPU, bellek, daha hızlı diskAynı uygulamayı çalıştıran yeni sunucular eklemek
Kod değişikliğiGenellikle gerekmezUygulamanın durumsuz olmasını gerektirir
Üst sınırEn büyük makinenin kapasitesiPratikte çok daha yüksek, ama darboğaz başka yere kayar
Arıza toleransıYok; tek makine yine tek hata noktasıdırBir sunucu düşse de diğerleri hizmet verir
Maliyet eğrisiÜst segmentlerde hızla pahalılaşırDaha doğrusal, ama operasyon karmaşıklığı artar

Dikey ölçekleme küçümsenmemelidir: birçok kurumsal site ve iç uygulama için daha güçlü tek bir sunucu, aylarca ya da yıllarca yeterli ve en basit çözümdür. Yatay ölçekleme ise önüne bir yük dengeleyici konmuş, birbirinin yerine geçebilen sunucular gerektirir.

Yatay ölçeklemenin ön şartı: durumsuzluk

İki sunucu eklediğiniz anda, tek sunucuda sorun çıkarmayan varsayımlar bozulur:

  • Bellekte tutulan oturumlar, istek başka sunucuya düşünce kaybolur.
  • Yerel diske yüklenen dosyalar yalnızca o sunucuda bulunur; diğerleri “dosya bulunamadı” der.
  • Her sunucuda çalışan zamanlanmış görevler aynı e-postayı iki kez gönderir.
  • Sunucu içi önbellekler birbirinden farklı veri gösterir.

Çözüm, durumu uygulama sunucusunun dışına taşımaktır: oturum ve önbellek için Redis gibi paylaşılan bir depo, dosyalar için nesne depolama, zamanlanmış işler için tek bir iş yürütücüsü. Ancak bundan sonra sunucu eklemek gerçekten kapasite eklemek anlamına gelir.

Darboğaz çoğunlukla veritabanıdır

Uygulama sunucularını çoğaltmak görece kolaydır; hepsinin aynı veritabanına yazması ise değildir. Yük arttığında ilk bakılacak yer genellikle sorgulardır ve sıra çoğu zaman şöyledir:

  1. Yavaş sorguları bulup indekslemek ve gereksiz sorguları kaldırmak.
  2. Sık okunan, nadiren değişen veriyi önbellekte tutmak; statik içeriği CDN'den sunmak.
  3. Sunucu sayısı arttıkça veritabanı bağlantılarını bir bağlantı havuzu ile sınırlamak.
  4. Rapor oluşturma, e-posta, görsel işleme gibi uzun işleri bir iş kuyruğuna alıp istek yolundan çıkarmak.
  5. Okuma yükünü salt okunur kopyalara (read replica) dağıtmak.
  6. Ancak bunlar yetmediğinde veriyi parçalara bölmek (sharding).

Yüksek erişilebilirlik (high availability)

Ölçeklenebilirlik “daha fazla yükü kaldırabilir miyim?” sorusunu, yüksek erişilebilirlik ise “bir parça bozulduğunda ayakta kalır mıyım?” sorusunu cevaplar. Temel ilke tek hata noktası bırakmamaktır: yedekli uygulama sunucuları, kendisi de yedekli bir yük dengeleyici, otomatik devralma (failover) yapabilen bir veritabanı kopyası ve mümkünse farklı veri merkezlerine yayılmış kaynaklar.

Erişilebilirlik hedefleri genellikle “dokuzlar” ile ifade edilir. Bir yıl (365 gün) için izin verilen yaklaşık kesinti süreleri:

HedefYıllık kesinti payı
%99yaklaşık 3,65 gün
%99,9yaklaşık 8,76 saat
%99,95yaklaşık 4,38 saat
%99,99yaklaşık 52,6 dakika

Her ek dokuz, mimariyi ve maliyeti belirgin biçimde ağırlaştırır; hedef, kesintinin işe gerçek maliyetine göre seçilmelidir. Yüksek erişilebilirlik yedeklemenin yerini de tutmaz: canlı kopyalar, yanlışlıkla silinen bir tabloyu da saniyeler içinde kopyalarına taşır.

Ne zaman ölçeklemeli?

Ölçekleme kararı tahminle değil ölçümle verilmelidir. Yanıt sürelerinin yüzdelik dağılımı, CPU ve bellek kullanımı, veritabanı bekleme süreleri ve yük testleri, darboğazın gerçekte nerede olduğunu gösterir. Erken alınan büyük kararlar, örneğin henüz birkaç yüz günlük kullanıcısı olan bir ürünü mikroservislere bölmek, ölçeklenebilirlik yerine yalnızca operasyon yükü getirir. İyi tasarlanmış tek bir uygulama, önbellek ve CDN ile birlikte, çoğu işletmenin trafiğini rahatça taşır.

İlgili terimler

← Sözlüğe dön