Ö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

Dikey ve yatay ölçekleme
| Dikey (scale up) | Yatay (scale out) | |
|---|---|---|
| Yöntem | Aynı sunucuya daha fazla CPU, bellek, daha hızlı disk | Aynı uygulamayı çalıştıran yeni sunucular eklemek |
| Kod değişikliği | Genellikle gerekmez | Uygulamanın durumsuz olmasını gerektirir |
| Üst sınır | En büyük makinenin kapasitesi | Pratikte çok daha yüksek, ama darboğaz başka yere kayar |
| Arıza toleransı | Yok; tek makine yine tek hata noktasıdır | Bir sunucu düşse de diğerleri hizmet verir |
| Maliyet eğrisi | Üst segmentlerde hızla pahalılaşır | Daha 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:
- Yavaş sorguları bulup indekslemek ve gereksiz sorguları kaldırmak.
- Sık okunan, nadiren değişen veriyi önbellekte tutmak; statik içeriği CDN'den sunmak.
- Sunucu sayısı arttıkça veritabanı bağlantılarını bir bağlantı havuzu ile sınırlamak.
- Rapor oluşturma, e-posta, görsel işleme gibi uzun işleri bir iş kuyruğuna alıp istek yolundan çıkarmak.
- Okuma yükünü salt okunur kopyalara (read replica) dağıtmak.
- 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:
| Hedef | Yıllık kesinti payı |
|---|---|
| %99 | yaklaşık 3,65 gün |
| %99,9 | yaklaşık 8,76 saat |
| %99,95 | yaklaşık 4,38 saat |
| %99,99 | yaklaşı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.

