Auto Scaling: Yüke Göre Kendini Ayarlayan Altyapı
Auto scaling, bir sistemin kaynaklarını yüke göre otomatik artırıp azaltmasıdır. Yatay ve dikey ölçekleme, politika türleri ve örnek senaryo.
Otomatik ölçeklendirme nedir?
Otomatik ölçeklendirme, uygulamanın kaynaklarını anlık talebe göre insan müdahalesi olmadan değiştirmektir. Trafik arttığında yeni sunucu ya da kapsayıcı eklenir, trafik düştüğünde fazlalık kaldırılır. Böylece sistem hem yoğun anda yetersiz kalmaz hem de sakin saatlerde boşuna kapasite taşımaz.
Buluttan önce kapasite, en yoğun günü karşılayacak şekilde baştan satın alınırdı ve çoğu zaman atıl dururdu. Bulutta kaynaklar dakikalar içinde açılıp kapandığı için kapasiteyi talebe bağlamak mümkün hale geldi.
Ölçeklenebilirlik ile farkı
Ölçeklenebilirlik, bir sistemin artan yükü kaldırabilme yeteneğidir: mimari bir özelliktir. Otomatik ölçeklendirme ise bu yeteneği çalışma anında hayata geçiren mekanizmadır. Ölçeklenebilir tasarlanmamış bir uygulama, arkasına auto scaling koymakla ölçeklenmez.
Örneğin oturum bilgisini sunucunun kendi belleğinde tutan uygulama, yeni eklenen sunucuda kullanıcı oturumunu bulamaz. Uygulamanın durumsuz (stateless) tasarlanması ya da oturumun ortak bir depoda tutulması, otomatik ölçeklendirmenin ön koşuludur.
Yatay ve dikey ölçekleme
Dikey ölçekleme, mevcut sunucuya daha fazla işlemci ya da bellek vermektir. Basittir ama bir üst sınırı vardır ve çoğu zaman yeniden başlatma gerektirir. Yatay ölçekleme, aynı işi yapan sunucu ya da kapsayıcı sayısını artırmaktır. Yük bir dengeleyici üzerinden dağıtılır ve sınırı çok daha yüksektir.
Otomatik ölçeklendirme çoğunlukla yataydır; sistemin kopya sayısı yük ile birlikte değişir. Dikey ölçeklemeyi otomatikleştiren araçlar da vardır, örneğin kapsayıcının kaynak isteğini kullanım verisine göre öneren yaklaşımlar.
Nasıl karar verir? Ölçekleme politikaları
Sistem hangi koşulda büyüyeceğini politikalarla öğrenir. Yaygın türler: • Metrik tabanlı: işlemci kullanımı, bellek ya da istek sayısı eşiği aşınca kapasite eklenir. • Hedef takipli: ortalama kullanımı belirli bir hedefte tutmaya çalışır. • Zamanlanmış: bilinen yoğunluklar için, örneğin kampanya günü öncesi kapasite artırılır. • Özel ve harici metrik: kuyruktaki mesaj sayısı gibi iş yüküne özgü ölçüler.
Her grup için alt ve üst sınır tanımlanır. Alt sınır sistemin hiçbir zaman çok küçülmemesini, üst sınır maliyetin kontrolden çıkmamasını sağlar.
Küçük bir örnek
Örneğin bir bilet satış sitesi, konser satışı açıldığında anlık trafik patlaması yaşıyor. Auto scaling kuralı, işlemci kullanımı hedefin üzerine çıkınca yeni uygulama kopyaları ekliyor. Satış sakinleştiğinde ise kopyalar kademeli olarak kaldırılıyor.
Burada ince bir ayar vardır: yeni kopyanın hazır olması zaman alır. Kural çok geç tepki verirse kullanıcılar yavaşlığı yaşar; çok agresif tepki verirse gereksiz kapasite açılır. Bekleme (cooldown) süreleri ve ısınma ayarları, sistemin sürekli büyüyüp küçülmesini önler.
Kubernetes ve bulut dünyasında
Bulut sağlayıcılarında sanal makine gruplarını ölçekleyen hizmetler bulunur; Amazon EC2 Auto Scaling bunun bilinen örneğidir. Kubernetes tarafında ise ölçekleme katmanlıdır: Horizontal Pod Autoscaler pod sayısını, Vertical Pod Autoscaler pod kaynaklarını, Cluster Autoscaler ise küme düğümlerini yönetir.
Katmanlar birlikte çalışır: pod sayısı artınca düğümde yer kalmazsa yeni düğüm eklenmesi gerekir. Bu yüzden ölçekleme tasarımı tek bir bileşenin değil tüm zincirin ayarlanmasıdır.
Mindset programlarında nerede çalışılır?
Amazon EC2 Filo Yönetimi ve Auto Scaling eğitiminde başlatma şablonları, otomatik ölçekleme grupları, ölçekleme politikaları ve yaşam döngüsü, karma kapasite ve maliyet optimizasyonu modül başlıklarıdır. Kubernetes Otomatik Ölçekleme (HPA, VPA, Cluster Autoscaler) ile Kubernetes Kaynak Yönetimi ve Otomatik Ölçekleme eğitimleri Horizontal Pod Autoscaler, Vertical Pod Autoscaler, özel metriklerle ölçekleme, küme ölçekleme ve maliyet konularını kapsar.
İlgili Mindset programı
Amazon EC2 Filo Yönetimi ve Auto Scaling
Sık sorulan sorular
Auto scaling maliyeti düşürür mü?
Çoğu durumda kullanılmayan kapasiteyi kaldırarak düşürür, çünkü yalnızca ihtiyaç olduğunda kaynak çalışır. Ancak yanlış ayarlanmış üst sınır ya da çok hassas kural gereksiz büyümeye ve fatura artışına yol açabilir. Bu nedenle maliyet, ölçekleme politikalarıyla birlikte izlenir.
Her uygulama otomatik ölçeklenebilir mi?
Hayır. Durumu sunucuda tutan, tek bir veritabanına sıkı bağlı ya da başlatılması çok uzun süren uygulamalar zorlanır. Uygulamanın durumsuz tasarlanması, veritabanı ve önbellek katmanının da büyümeye uygun olması gerekir; ölçekleme yalnızca uygulama katmanıyla sınırlı kalmaz.
Scale out ve scale in ne demek?
Scale out kapasiteyi yatay olarak artırmak, yani yeni kopya eklemek demektir. Scale in ise fazla kopyaları kaldırmaktır. Scale up ve scale down terimleri ise tek bir sunucunun kaynağını büyütmeyi ya da küçültmeyi anlatır.
Ölçekleme sırasında hizmet kesilir mi?
Doğru kurulmuş bir sistemde kesilmez. Yeni kopya hazır olmadan trafik almamalı, kaldırılan kopya aktif isteklerini bitirdikten sonra kapanmalıdır. Sağlık kontrolleri ve düzgün kapanma (graceful shutdown) ayarları bu geçişleri güvenli kılar.
İlgili rehberler
İlgili eğitimler
Kategori: DevOps ve Bulut Teknolojileri