Ana içeriğe atla

Altyapı Ölçeklendirme: Yatay ve Dikey, Yük Dengeleme ve Otomatik Ölçeklendirme

Altyapınızı doğru stratejiyle ölçeklendirin. Üretim için yatay ve dikey ölçeklendirmeyi, L4 ve L7 yük dengeleyicilerini ve otomatik ölçeklendirme politikalarını karşılaştırın.

E
ECOSIRE Research and Development Team
|15 Mart 202611 dk okuma2.1k Kelime|

Netflix, gerçek zamanlı talebe göre binlerce örneği dinamik olarak ölçeklendirerek 190 ülkede 260 milyon aboneye hizmet vermektedir.

Netflix, gerçek zamanlı talebe göre binlerce örneği dinamik olarak ölçeklendirerek 190 ülkede 260 milyon aboneye hizmet vermektedir. Çoğu işletme Netflix ölçeğinde çalışmasa da ölçeklendirme ilkeleri aynıdır: manuel müdahale olmadan ve boşta kalan kaynaklar için ödeme yapmadan, altyapı kapasitesini trafik talebiyle otomatik olarak eşleştirin. Yatay ve dikey ölçeklendirme, L4 ve L7 yük dengeleyiciler ile reaktif ve tahmine dayalı otomatik ölçeklendirme arasında yaptığınız seçimler, platformunuzun zarif bir şekilde büyüyüp büyümeyeceğini veya duvara çarpacağını belirler.

Önemli Çıkarımlar

  • Kolaylık sağlamak için dikey (daha büyük makineler) başlatın, ardından yüksek kullanılabilirliğe ihtiyaç duyduğunuzda veya tek makine sınırlarını aştığınızda yatay (daha fazla makine) geçiş yapın
  • L7 yük dengeleyiciler modern uygulamalar için gerekli içerik tabanlı yönlendirme sağlarken, L4 dengeleyiciler basit TCP dağıtımı için ham verim sunar
  • Otomatik ölçeklendirme politikaları, metrik tabanlı tetikleyicileri (CPU, bellek) bilinen trafik modelleri için tahmine dayalı ölçeklendirmeyle birleştirmelidir
  • Veritabanı ölçeklendirmesi, uygulama ölçeklendirmesinden farklı kuralları izler; okuma ağırlıklı yükler için okuma replikaları, yazma ağırlıklı yükler için bölümleme

Yatay ve Dikey Ölçeklendirme

Temel ölçeklendirme kararı, mevcut makinelerin büyütülmesi (dikey) veya daha fazla makinenin eklenmesi (yatay) kararıdır. Her yaklaşımın farklı ödünleşimleri vardır.

FaktörDikey ÖlçeklendirmeYatay Ölçeklendirme
Uygulama karmaşıklığıDüşük -- örnek tipini yükseltinYüksek - durum bilgisi olmayan tasarım ve yük dengeleme gerektirir
Maksimum tavanMevcut en büyük makineyle sınırlıdırPratik olarak sınırsız
Yüksek kullanılabilirlikTek arıza noktasıArtıklık yerleşik
Maliyet verimliliğiOrta sınıfa kadar uygun maliyetliBüyük ölçekte uygun maliyetli
Ölçeklendirme için kapalı kalma süresiGenellikle yeniden başlatma gerektirirSıfır kesinti süresi (örnek ekleme/kaldırma)
Veri tutarlılığıBasit (tek makine)Dağıtılmış koordinasyon gerektirir
Şunun için en iyisiVeritabanları, önbellek sunucularıUygulama sunucuları, web sunucuları

Ne Zaman Dikey Ölçeklendirilmeli

Dikey ölçeklendirme çeşitli nedenlerden dolayı doğru ilk tercihtir. Uygulama değişikliği, yük dengeleyici yapılandırması ve dağıtılmış durum yönetimi gerektirmez. Özellikle veritabanları için dikey ölçeklendirme, parçalama, çoğaltma gecikmesi ve dağıtılmış işlemlerin karmaşıklığını ortadan kaldırır.

Şu durumlarda dikey olarak ölçeklendirin:

  • Başvurunuz henüz durumsuz değil (bellekte saklanan oturumlar, dosya sistemi yazıyor)
  • Tek bir veritabanı çalıştırıyorsunuz ve bağlantı veya CPU sınırlarına ulaşmadınız
  • Bir sonraki bulut sunucusu boyutunun büyütülmesi, yatay geçiş için gereken mühendislik süresinden daha ucuzdur
  • Mimari değişiklik yapmadan hemen ölçeklendirmeniz gerekiyor

Şu durumlarda dikey ölçeklendirmeyi durdurun:

  • Yüksek kullanılabilirliğe ihtiyacınız var (tek örnek = tek hata noktası)
  • Mevcut en büyük örnek yeterli değil
  • Zamanın %90'ında boşta kalan en yüksek kapasite için ödeme yapıyorsunuz
  • Gecikme için coğrafi dağıtıma ihtiyacınız var

Yatay Olarak Ne Zaman Ölçeklendirilmeli

Yatay ölçeklendirme, uygulamanızın durum bilgisiz olmasını gerektirir; herhangi bir istek, herhangi bir örnek tarafından işlenebilir. Bu şu anlama gelir:

  • Bellekte değil, Redis'te veya veritabanında saklanan oturumlar
  • Yerel diskte değil, nesne deposunda (S3) saklanan dosya yüklemeleri
  • Çoğaltma olmadan örneğe özel yapılandırma veya yerel önbelleğe alma yok
  • Örnek sonlandırmanın zarif bir şekilde ele alınması (sağlık kontrolleri, bağlantı boşaltma)

Şu durumlarda yatay olarak ölçeklendirin:

  • Yüksek kullanılabilirlik bir gerekliliktir (işletmeniz dakikalarca süren kesintileri tolere edemez)
  • Trafik değişkendir ve otomatik ölçeklendirme, sessiz dönemlerde ölçeği azaltarak maliyetten tasarruf sağlayabilir
  • Kesinti süresi olmadan dağıtım yapmanız gerekir (örnekler arasında dağıtımların yuvarlanması)
  • Performans gereksinimleri tek makine kapasitesini aşıyor

Yük Dengeleme Derinlemesine İnceleme

Yük dengeleyici, gelen trafiği birden çok arka uç sunucusuna dağıtır. Yük dengeleyicinin türü hangi yönlendirme kararlarının mümkün olduğunu belirler.

L4 (Aktarım Katmanı) Yük Dengeleme

L4 yük dengeleyiciler TCP/UDP düzeyinde çalışır. Paket içeriklerini incelemeden bağlantıları IP adresine ve porta göre yönlendirirler. Hızlıdırlar, basittirler ve her türlü TCP tabanlı protokolü yönetirler.

En iyisi: Ham TCP dağıtımı, veritabanı bağlantısı proxy'si (PgBouncer), HTTP dışı protokoller, son derece yüksek aktarım hızı gereksinimleri

Sınırlamalar: URL yoluna, üstbilgilere veya çerezlere dayalı olarak yönlendirme kararları verilemez. SSL sonlandırılamıyor (arka uçlarda yapılmalıdır).

L7 (Uygulama Katmanı) Yük Dengeleme

L7 yük dengeleyicileri HTTP düzeyinde çalışır. Yönlendirme kararları vermek için istek başlıklarını, URL'leri, çerezleri ve hatta istek organlarını incelerler. SSL sonlandırmayı, sıkıştırmayı yönetirler ve istekleri ve yanıtları değiştirebilirler.

En iyi kullanım alanları: Web uygulamaları, API ağ geçitleri, içerik tabanlı yönlendirme, SSL sonlandırma, A/B testi, canary dağıtımları

ÖzellikL4 Yük DengeleyiciL7 Yük Dengeleyici
Yönlendirme ayrıntı düzeyiIP ve bağlantı noktasıURL, başlıklar, çerezler, yöntem
SSL sonlandırmaHayır (geçiş)Evet
WebSocket desteğiGeçişYükseltme ile tam destek
Sağlık kontrolleriTCP bağlantı kontrolüDurum koduyla HTTP uç nokta kontrolü
Değişiklik talep etHayırEvet (başlık ekleyin, URL'leri yeniden yazın)
VerimDaha yüksek (daha az işlem)Alt (daha derin inceleme)
MaliyetAşağıDaha yüksek
Örnek (AWS)Ağ Yük Dengeleyici (NLB)Uygulama Yük Dengeleyici (ALB)

Yük Dengeleme Algoritmaları

AlgoritmaNasıl ÇalışırEn İyisi
Yuvarlak sıralamaTalepler dönüşümlü olarak eşit şekilde dağıtılıyorBenzer kapasiteye sahip homojen sunucular
Ağırlıklı yuvarlak robinSunucular, atanan ağırlıklarla orantılı trafik alırKarışık sunucu boyutları
En az bağlantıEn az etkin bağlantıya sahip sunucuya giden yollarUzun ömürlü bağlantılar, değişken istek süresi
IP karmasıİstemci IP karmasına dayalı rotalar (yapışkan oturumlar)Oturum benzerliği gerektiren durum bilgisi olan uygulamalar
En kısa yanıt süresiEn hızlı ortalama yanıt süresine sahip sunucuya giden yollarHeterojen performans özellikleri

Sağlık Kontrolleri ve Zarif Bozulma

Durum denetimleri, bir arka uç sunucusunun trafik alıp almayacağını belirler. Bunları dikkatlice yapılandırın:

  • Sığ sağlık kontrolü -- özel bir uç noktada basit bir TCP bağlantı kontrolü veya HTTP 200. Sunucu çökmelerini yakalar ancak uygulama düzeyindeki arızaları yakalamaz.
  • Derin durum kontrolü -- veritabanı bağlantısını, Redis kullanılabilirliğini ve harici hizmet erişilebilirliğini doğrular. Daha fazla sorunu yakalar ancak kritik olmayan bir bağımlılığın devre dışı kalması durumunda hatalı negatif sonuç riski taşır.
  • Etkisiz kullanım süresi -- yeni örneklerin ısınması için zamana ihtiyacı vardır (JIT derlemesi, önbellek doldurma). Yük dengeleyici tam trafiği göndermeden önce bir başlangıç ​​yetkisiz kullanım süresi ayarlayın.
  • Boşaltma -- Bir örneği kaldırırken, yeni istek göndermeyi bırakın ancak mevcut isteklerin tamamlanmasına izin verin (bağlantı boşaltma). Tipik olarak 30-60 saniye.

Otomatik Ölçeklendirme Politikaları

Otomatik ölçeklendirme, manuel müdahaleye gerek kalmadan kapasiteyi trafiğe eşleştirerek örnek sayısını talebe göre ayarlar.

Metrik Tabanlı Ölçeklendirme

En yaygın yaklaşım, bir ölçüm bir eşiği aştığında ölçeklendirme eylemlerini tetikler.

MetrikÖlçek Artırma EşiğiEşiği Aşağı ÖlçeklendirDikkat Edilmesi Gerekenler
CPU kullanımı3 dakika boyunca %70'in üzerinde10 dakika boyunca %30'un altındaEn yaygın olanı, bilgi işlem bağlantılı iş yükleri için iyi çalışır
Bellek kullanımı3 dakika boyunca %80'in üzerinde10 dakika boyunca %40'ın altındaYoğun bellek kullanan uygulamalar için önemli
Talep sayısıÖrnek başına 1000 istek/sn'nin üzerindeÖrnek başına 300 istek/sn'nin altındaTahmin edilebilir isteğe bağlı iş yükleri için iyi
Kuyruk derinliği100'ün üzerinde mesaj10 mesajın altındaArka planda çalışanlar için mükemmel
Tepki süresi (P95)500 ms'nin üstünde100 ms'nin altındaKullanıcı deneyimi odaklı ölçeklendirme

Tahmine Dayalı Ölçeklendirme

Trafiğiniz tahmin edilebilir kalıpları (günlük zirveler, haftalık döngüler, mevsimsel olaylar) izliyorsa, tahmine dayalı ölçeklendirme kapasiteyi trafik gelmeden önce sağlar. AWS Auto Scaling, geçmiş kalıplardan öğrenen ve proaktif olarak ölçeklenen tahmine dayalı ölçeklendirmeyi destekler.

Tahmini ve reaktifi birleştirin: Bilinen modeller için tahmine dayalı ölçeklendirmeyi (sabah trafik artışı, Kara Cuma ön provizyonu) ve beklenmedik dalgalanmalar için reaktif ölçeklendirmeyi kullanın.

En İyi Uygulamaları Ölçeklendirme

  1. Ölçeği hızla genişletin, yavaş yavaş ölçeklendirin -- Örnekleri agresif bir şekilde ekleyin (1-2 dakika bekleme süresi) ancak kanat çırpmayı önlemek için bunları yavaş yavaş kaldırın (10-15 dakika bekleme süresi)
  2. Birden fazla ölçüm kullanın - tetikleyen ilk ölçümü kullanarak CPU VEYA bellek VEYA istek sayısını ölçeklendirin
  3. Minimum ve maksimum sınırları belirleyin -- sıfıra ölçeklendirmeyi (kullanılabilirlik yok) veya süresiz ölçeklendirmeyi (maliyet patlaması) önleyin
  4. Yük testleri sırasında ölçeklendirmeyi test edin -- Otomatik ölçeklendirmenin doğru şekilde tetiklendiğini ve yeni örneklerin trafiğe beklenen zaman çerçevesinde hizmet verdiğini doğrulayın
  5. Ölçeklendirme olaylarını izleyin -- yapılandırma sorunlarını veya altta yatan performans sorunlarını tespit etmek için sık ölçeklendirme konusunda uyarı

Veritabanı Ölçeklendirme Stratejileri

Veritabanları, uygulama sunucularının yaptığı gibi yatay olarak ölçeklenmez. Yazma işlemleri fikir birliği gerektirir ve güçlü tutarlılık dağıtım seçeneklerini sınırlar.

Kopyaları Oku

Okuma replikaları, verileri birincil veritabanından kopyalar ve okuma sorguları sunar. Okuma verimini doğrusal olarak ölçeklendirirler ancak yazma verimine yardımcı olmazlar.

Uygulama hususları:

  • Çoğaltma gecikmesi -- kopyalar sonuçta tutarlıdır. Bir yazma işleminin hemen ardından yapılan sorgular değişikliği göremeyebilir. Yazma sonrası okumalar için birincil olanı kullanın.
  • Bağlantı yönlendirme -- uygulamanızın, okumaları kopyalara ve yazma işlemlerini birincil sunucuya yönlendirmek için mantığa ihtiyacı vardır. ORM'ler ve bağlantı proxy'leri (ProxySQL, PgBouncer) bunu otomatikleştirebilir.
  • Yük devretme -- birincil başarısız olursa bir kopya yükseltilebilir. Otomatik yük devretme (AWS RDS Multi-AZ, AWS Aurora), kesinti süresini saniyelere indirir.

Tablo Bölümleme

Büyük tablolardaki yazma ağırlıklı iş yükleri için bölümleme, tek bir mantıksal arayüzü korurken tabloyu daha küçük fiziksel parçalara böler. Ayrıntılı bölümleme stratejileri için veritabanı optimizasyon kılavuzumuza bakın.

Bağlantı Havuzu

Veritabanı bağlantılarının oluşturulması pahalıdır ve sayıları sınırlıdır. PgBouncer gibi bağlantı havuzlayıcıları, birçok uygulama örneğindeki bağlantıları daha az sayıda veritabanı bağlantısına havuzlar.

Havuzlandırma olmadan: 20 uygulama örneği x her biri 20 bağlantı = 400 veritabanı bağlantısı (muhtemelen PostgreSQL sınırlarını aşıyor)

PgBouncer ile: 20 uygulama örneği, PostgreSQL ile 50-100 bağlantıyı sürdüren ve istekleri verimli bir şekilde çoğullayan PgBouncer'a bağlanır.


Mikro Hizmet Ayrışımı

Bir monolit, tek bir ekibin verimli bir şekilde geliştirip dağıtamayacağı kadar büyüdüğünde, mikro hizmetlerin ayrıştırılması, farklı bileşenlerin bağımsız olarak ölçeklendirilmesine olanak tanır.

Ne Zaman Ayrıştırılmalı

Mikro hizmetlerle başlamayın. İyi yapılandırılmış bir monolitle başlayın ve aşağıdaki durumlarda ayrıştırın:

  • Farklı bileşenlerin çok farklı ölçeklendirme gereksinimleri vardır (arama için 20 örnek gerekir, ödeme için 5 örnek gerekir)
  • Farklı ekiplerin, sürüm planlarını koordine etmeden bağımsız olarak konuşlandırılması gerekir
  • Belirli bir bileşen farklı bir teknoloji yığınına ihtiyaç duyar (Python'da makine öğrenimi, Node.js'de API)
  • Monolitin dağıtım süresi, kod tabanı boyutundan dolayı 30 dakikayı aşıyor

İlk Önce Ne Çıkarılmalı

HizmetNeden ÇıkartÖlçeklendirmenin Avantajı
Resim/dosya işlemeCPU yoğun, hızlıÇalışanları bağımsız olarak ölçeklendirin, anlık örnekleri kullanın
AraBellek yoğun, okuma ağırlıklıÖzel arama kümesi (Elasticsearch/Meilisearch)
Bildirim hizmetiHarici API'ye bağımlı, gecikmeye dayanıklıKuyruk tabanlı, bağımsız ölçeklendirme
Ödeme işlemeGüvenlik açısından hassas, uyumluluk gereksinimleriYalıtılmış güvenlik sınırı, bağımsız denetim
Raporlama/analizVeri yoğunluklu, planlıYoğun olmayan saatlerde daha ucuz bulut sunucularında çalıştırın

Sıkça Sorulan Sorular

Ne zaman ölçeklendirmem gerektiğini nasıl bileceğim?

Dört temel ölçümü izleyin: CPU kullanımı (sürekli %70'in üzerinde), bellek kullanımı (%80'in üzerinde), yanıt süresi P95 (SLO'nuzun üzerinde) ve hata oranı (%0,1'in üzerinde). Herhangi bir metrik sürekli olarak eşiğini aştığında ölçeklendirme yapmanız gerekir. Uyarı veren proaktif izleme, bu eğilimleri kullanıcılar fark etmeden yakalar. İzleme kılavuzumuza bakın.

Otomatik ölçeklendirme mi yoksa ön hazırlık mı daha uygun maliyetli?

Otomatik ölçeklendirme, öngörülemeyen trafik için daha uygun maliyetlidir çünkü kapasite için yalnızca ihtiyacınız olduğunda ödeme yaparsınız. Otomatik ölçeklendirmenin kapasite eklemesi 3-10 dakika sürdüğünden, ön provizyon öngörülebilir yoğunluklar (Kara Cuma, günlük yoğunluklar) için daha iyidir. En uygun maliyetli yaklaşım, her ikisini de birleştirir: Beklenen zirveler için ön provizyon, beklenmeyen artışlar için otomatik ölçeklendirme ve temel kapasiteniz için ayrılmış bulut sunucularını kullanma. Bulut maliyeti optimizasyon kılavuzumuza bakın.

Konteynerleri (Docker/Kubernetes) mi yoksa geleneksel VM'leri mi kullanmalıyım?

Konteynerler daha hızlı başlar (saniyeler yerine dakikalar), kaynakları daha verimli kullanır (ana bilgisayar başına daha yüksek yoğunluk) ve geliştirme ve üretim genelinde tutarlı ortamlar sağlar. Kubernetes, orkestrasyon (otomatik ölçeklendirme, kendi kendini iyileştirme, dağıtımların yuvarlanması) ekler ancak önemli düzeyde operasyonel karmaşıklık sağlar. Kubernetes'i düşünmeden önce yönetilen konteyner hizmetleriyle (AWS ECS, Google Cloud Run) başlayın.

Veri kaybı olmadan veritabanı yük devretme işlemini nasıl gerçekleştirebilirim?

Sıfır veri kaybıyla yük devretme için eşzamanlı çoğaltma kullanın; birincil, kopya onaylayana kadar bir yazmayı onaylamaz. Bu, yazma gecikmesini artırır (genellikle aynı bölge içinde 1-5 ms), ancak yük devretme sırasında veri kaybı olmayacağını garanti eder. AWS RDS Multi-AZ ve Aurora, otomatik yük devretmeyle yönetilen eşzamanlı çoğaltma sağlar.


Sırada Ne Var

Mevcut altyapınızı büyüme tahminlerinize göre değerlendirin. Tek bir sunucu çalıştırıyorsanız uygulamanızın durum bilgisi olmayan ve yatay ölçeklendirmeye hazır olduğundan emin olun. Zaten birden fazla örnek çalıştırıyorsanız yük dengeleyici yapılandırmanızı optimize edin ve otomatik ölçeklendirme ilkelerini uygulayın.

Performans mühendisliği perspektifinin tamamı için iş platformunuzu ölçeklendirme hakkındaki temel kılavuzumuza bakın. Ölçeklendirdikçe maliyetleri optimize etmek için bulut maliyet optimizasyonu ile ilgili kılavuzumuzu okuyun.

ECOSIRE, AWS ve çoklu bulut ortamlarındaki iş platformları için ölçeklenebilir altyapı tasarlar ve uygular. Altyapı ölçeklendirme değerlendirmesi için DevOps ekibimizle iletişime geçin.


ECOSIRE tarafından yayınlandı — işletmelerin Odoo ERP, Shopify eCommerce ve OpenClaw AI genelinde yapay zeka destekli çözümlerle ölçeklenmesine yardımcı oluyor.

E

Yazan

ECOSIRE Team

Teknik Yazarlık

ECOSIRE teknik yazarlık ekibi Odoo ERP, Shopify ile e-ticaret, yapay zekâ ajanları, Power BI ile analitik, GoHighLevel ile otomasyon ve kurumsal yazılımda en iyi uygulamalar hakkında yazar. Rehberlerimiz işletmelerin bilinçli teknoloji kararları vermesine yardımcı olur.

ECOSIRE

ECOSIRE ile İşinizi Büyütün

ERP, e-Ticaret, yapay zeka, analitik ve otomasyon genelinde kurumsal çözümler.