Altyapı Ölçeklendirme: Yatay ve Dikey, Yük Dengeleme ve Otomatik Ölçeklendirme
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ör | Dikey Ölçeklendirme | Yatay Ölçeklendirme |
|---|---|---|
| Uygulama karmaşıklığı | Düşük -- örnek tipini yükseltin | Yüksek - durum bilgisi olmayan tasarım ve yük dengeleme gerektirir |
| Maksimum tavan | Mevcut en büyük makineyle sınırlıdır | Pratik olarak sınırsız |
| Yüksek kullanılabilirlik | Tek arıza noktası | Artıklık yerleşik |
| Maliyet verimliliği | Orta sınıfa kadar uygun maliyetli | Büyük ölçekte uygun maliyetli |
| Ölçeklendirme için kapalı kalma süresi | Genellikle yeniden başlatma gerektirir | Sıfır kesinti süresi (örnek ekleme/kaldırma) |
| Veri tutarlılığı | Basit (tek makine) | Dağıtılmış koordinasyon gerektirir |
| Şunun için en iyisi | Veritabanları, ö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ı
| Özellik | L4 Yük Dengeleyici | L7 Yük Dengeleyici |
|---|---|---|
| Yönlendirme ayrıntı düzeyi | IP ve bağlantı noktası | URL, başlıklar, çerezler, yöntem |
| SSL sonlandırma | Hayır (geçiş) | Evet |
| WebSocket desteği | Geçiş | Yükseltme ile tam destek |
| Sağlık kontrolleri | TCP bağlantı kontrolü | Durum koduyla HTTP uç nokta kontrolü |
| Değişiklik talep et | Hayır | Evet (başlık ekleyin, URL'leri yeniden yazın) |
| Verim | Daha yüksek (daha az işlem) | Alt (daha derin inceleme) |
| Maliyet | Aşağı | Daha yüksek |
| Örnek (AWS) | Ağ Yük Dengeleyici (NLB) | Uygulama Yük Dengeleyici (ALB) |
Yük Dengeleme Algoritmaları
| Algoritma | Nasıl Çalışır | En İyisi |
|---|---|---|
| Yuvarlak sıralama | Talepler dönüşümlü olarak eşit şekilde dağıtılıyor | Benzer kapasiteye sahip homojen sunucular |
| Ağırlıklı yuvarlak robin | Sunucular, atanan ağırlıklarla orantılı trafik alır | Karışık sunucu boyutları |
| En az bağlantı | En az etkin bağlantıya sahip sunucuya giden yollar | Uzun ö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üresi | En hızlı ortalama yanıt süresine sahip sunucuya giden yollar | Heterojen 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ği | Eşiği Aşağı Ölçeklendir | Dikkat Edilmesi Gerekenler |
|---|---|---|---|
| CPU kullanımı | 3 dakika boyunca %70'in üzerinde | 10 dakika boyunca %30'un altında | En 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 üzerinde | 10 dakika boyunca %40'ın altında | Yoğ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ında | Tahmin edilebilir isteğe bağlı iş yükleri için iyi |
| Kuyruk derinliği | 100'ün üzerinde mesaj | 10 mesajın altında | Arka planda çalışanlar için mükemmel |
| Tepki süresi (P95) | 500 ms'nin üstünde | 100 ms'nin altında | Kullanı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
- Ö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)
- Birden fazla ölçüm kullanın - tetikleyen ilk ölçümü kullanarak CPU VEYA bellek VEYA istek sayısını ölçeklendirin
- Minimum ve maksimum sınırları belirleyin -- sıfıra ölçeklendirmeyi (kullanılabilirlik yok) veya süresiz ölçeklendirmeyi (maliyet patlaması) önleyin
- 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
- Ö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ı
| Hizmet | Neden Çıkart | Ölçeklendirmenin Avantajı |
|---|---|---|
| Resim/dosya işleme | CPU yoğun, hızlı | Çalışanları bağımsız olarak ölçeklendirin, anlık örnekleri kullanın |
| Ara | Bellek yoğun, okuma ağırlıklı | Özel arama kümesi (Elasticsearch/Meilisearch) |
| Bildirim hizmeti | Harici API'ye bağımlı, gecikmeye dayanıklı | Kuyruk tabanlı, bağımsız ölçeklendirme |
| Ödeme işleme | Güvenlik açısından hassas, uyumluluk gereksinimleri | Yalıtılmış güvenlik sınırı, bağımsız denetim |
| Raporlama/analiz | Veri 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.
Yazan
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
ECOSIRE ile İşinizi Büyütün
ERP, e-Ticaret, yapay zeka, analitik ve otomasyon genelinde kurumsal çözümler.
İlgili Makaleler
Web Uygulamaları için AWS EC2 Dağıtım Kılavuzu
Eksiksiz AWS EC2 dağıtım kılavuzu: bulut sunucusu seçimi, güvenlik grupları, Node.js dağıtımı, Nginx ters proxy, SSL, otomatik ölçeklendirme, CloudWatch izleme ve maliyet optimizasyonu.
ERP için Bulut Barındırma: AWS vs Azure vs Google Cloud
2026'da ERP barındırma için AWS, Azure ve Google Cloud'un ayrıntılı karşılaştırması. Performansı, maliyeti, bölgesel kullanılabilirliği, yönetilen hizmetleri ve ERP'ye özgü önerileri kapsar.
2026'da Bulut ve Şirket İçi ERP: Kesin Kılavuz
2026'da bulut ve şirket içi ERP: toplam maliyet analizi, güvenlik karşılaştırması, ölçeklenebilirlik, uyumluluk ve işletmeniz için doğru dağıtım modeli.