Ana içeriğe geç

Ölçeklenebilirlik

İngilizcesi
Scalability
Okunuşu
skeylıbilıti

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/scalability

Kısaca

Ölçeklenebilirlik, bir sistemin daha fazla kullanıcı ya da veri gibi artan iş yükünü, kaynak ekleyerek performansı düşmeden karşılayabilme yeteneğidir.

Ölçeklenebilirlik nedir?

Ölçeklenebilirlik, talep büyüdükçe bir sistemin ne kadar iyi başa çıktığını anlatır. Ölçeklenebilir bir uygulama, yanıt sürelerini ve hata oranlarını kabul edilebilir tutarak kaynak ekleyerek yüz kullanıcıdan bir milyon kullanıcıya çıkabilir. Web sunucuları, veritabanları ve kuyruklar dahil sistemin her katmanı için geçerlidir; hatta bunları sürdüren ekip ve kod tabanı için bile.

Ölçeklemenin iki ana yolu vardır. Dikey ölçekleme (scaling up), tek bir makineye daha fazla CPU çekirdeği, bellek ya da daha hızlı disk gibi daha fazla güç vermek demektir; basittir ama kesin bir tavanı vardır ve tek bir hata noktası bırakır. Yatay ölçekleme (scaling out) ise daha fazla makine eklemek ve işi bir yük dengeleyici (load balancer) ile aralarında paylaştırmak demektir; çok daha ileri gidebilir ve dayanıklılığı artırır ama uygulamanın buna göre tasarlanması gerekir; örneğin sunucuları durumsuz (stateless) tutmak ve oturumları paylaşılan bir önbellekte veya veritabanında saklamak gibi.

Yoğun bir restoran düşünün. Dikey ölçekleme daha hızlı bir aşçı tutmaktır, ki bu yalnızca bir noktaya kadar işe yarar; yatay ölçekleme ise daha fazla mutfak açmaktır, ki bu koordinasyon gerektirir ama çok daha fazla yemek müşterisine hizmet verebilir. Yaygın ölçekleme teknikleri arasında önbellekleme, okuma ağırlıklı trafik için veritabanı çoğaltma (replication), büyük veri kümelerini bölmek için sharding, trafik sıçramalarını emmek için mesaj kuyrukları ve sunucuları otomatik ekleyip çıkarmak için bulut otomatik ölçeklemesi (autoscaling) bulunur.

Ölçeklenebilirlik sıklıkla performansla karıştırılır. Performans, bir sistemin mevcut yük altında bir isteği ne kadar hızlı işlediğidir; ölçeklenebilirlik ise yük arttıkça bu performansı ne kadar iyi koruduğudur; hızlı bir uygulama yine de ağır trafik altında çökebilir. Ölçeklenebilirlik ayrıca, talep değiştikçe otomatik olarak büyüyüp küçülebilme yeteneği olan esneklikten (elasticity) de farklıdır.

Önemli noktalar

  • Ölçeklenebilirlik, kaynak ekleyerek daha fazla yükü karşılayabilme yeteneğidir.
  • Dikey ölçekleme (scaling up) tek makineye güç ekler ve kesin bir sınırı vardır.
  • Yatay ölçekleme (scaling out) daha fazla makine ekler ve genellikle durumsuz servisler gerektirir.
  • Önbellekleme, çoğaltma, sharding ve kuyruklar yaygın ölçekleme tekniklerindendir.
  • Performans mevcut yükteki hızdır; ölçeklenebilirlik yük büyürken bu hızı korumaktır.

Örnek

Komut satırından dikey ve yatay ölçeklemebash
# Vertical scaling: give one container more CPU and memory
docker run --cpus=4 --memory=8g my-app

# Horizontal scaling: run three identical copies of the web service
docker compose up --scale web=3

# In Kubernetes, change the number of copies (replicas) of a deployment
kubectl scale deployment/web-app --replicas=5

Sık sorulan sorular

Yatay ve dikey ölçekleme arasındaki fark nedir?

Dikey ölçekleme, CPU, bellek ya da depolama ekleyerek tek bir sunucuyu büyütür; yatay ölçekleme ise daha fazla sunucu ekler ve işi aralarında böler. Dikey ölçekleme daha basittir, ancak yatay ölçekleme çok daha ileri gidebilir ve tek bir makinenin arızasından sağ çıkar.

Bir uygulamayı ölçeklemeyi ne zorlaştırır?

Yaygın engeller; kullanıcı oturumlarını yerel bellekte tutan sunucular, her isteğin bağlı olduğu tek bir veritabanı ve istek içinde çalışan yavaş görevlerdir. Servisleri durumsuz yapmak, önbellek ve okuma replikaları eklemek ve ağır işleri arka plan kuyruklarına taşımak yardımcı olur.

Mikroservisler bir sistemi ölçeklenebilir kılar mı?

Kılabilir, çünkü her servis bağımsız ölçeklenebilir, ama zorunlu değildir. İyi tasarlanmış bir monolit de yatay ölçeklenebilir ve mikroservisler küçük ekiplerin ihtiyaç duymayabileceği ağ ve operasyon karmaşıklığı ekler.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar