Yatay ve dikey ölçeklendirme: sistemi büyütmenin yolları
Sözlük

Yatay ve dikey ölçeklendirme: sistemi büyütmenin yolları

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Dikey ölçeklendirme tek sunucuyu güçlendirir, yatay ölçeklendirme sunucu sayısını artırır. Farklar, sınırlar ve hangisinin ne zaman seçileceği anlatılır.

Ölçeklendirme nedir ve neden gerekir?

Ölçeklendirme (scaling), bir sistemin artan iş yükünü karşılamak için kapasitesinin büyütülmesidir. Kullanıcı sayısı, istek hacmi ya da veri miktarı arttığında sistem yavaşlar, hata verir ya da çöker. Kapasite artırmak için mevcut makineyi güçlendirmek ya da yanına yeni makineler eklemek mümkündür.

İlk yola dikey ölçeklendirme (scale up), ikincisine yatay ölçeklendirme (scale out) denir. Ölçeklenebilirlik (scalability), sistemin bu büyümeyi makul maliyet ve çabayla taşıyabilme yeteneğidir.

Dikey ölçeklendirme: tek makineyi büyütmek

Dikey ölçeklendirmede aynı sunucuya daha fazla işlemci, bellek ya da depolama eklenir; bulutta ise sanal makine daha büyük bir boyuta geçirilir. Uygulamanın kodunu değiştirmeyi gerektirmez; veritabanı gibi tek merkezde çalışmaya alışkın bileşenler için en kısa çözümdür.

Sınırı vardır. Bir makinenin alabileceği donanım tavanı bellidir ve büyük makine orantısız pahalılaşır. Ayrıca tek makine tek hata noktasıdır: sunucu çökerse uygulama durur. Boyut değiştirmek çoğu zaman yeniden başlatma gerektirir, bu da kesinti anlamına gelebilir.

Yatay ölçeklendirme: makine sayısını artırmak

Yatay ölçeklendirmede aynı uygulamanın birden çok kopyası çalıştırılır ve gelen istekler bir yük dengeleyici tarafından kopyalar arasında paylaştırılır. Yük artınca yeni kopya eklenir, azalınca çıkarılır. Tavan neredeyse yoktur ve bir kopyanın düşmesi tüm uygulamayı durdurmaz; bu yüzden yüksek erişilebilirlikle birlikte anılır.

Bedeli tasarım gereksinimidir. Uygulama, kullanıcının oturumunu ya da durumunu sunucunun kendi belleğinde tutuyorsa isteği hangi kopya karşılarsa karşılasın tutarlı yanıt veremez. Bu nedenle durumsuz (stateless) tasarım, oturum bilgisinin ortak bir yerde saklanması ve yapılandırmanın koddan ayrılması gerekir. Bu ilkeler bulut doğal uygulama tasarımının temelini oluşturur.

Örnek: kampanya yükü altında bir e-ticaret sitesi

Örneğin bir e-ticaret sitesi, kampanya günü beklenenden çok daha fazla ziyaretçi alsın. Dikey yaklaşımda ekip uygulama sunucusunu daha büyük bir boyuta geçirir; kısa sürede rahatlama olur ama kampanya yükü bir kez daha artarsa aynı tavana çarpılır. Yatay yaklaşımda uygulama kopyaları artırılır ve yük dengeleyici trafiği paylaştırır.

Veritabanı katmanı farklı davranır. Okuma ağırlıklı iş yükü, okuma kopyaları eklenerek yatay büyütülebilir. Yazma yükü ise tek merkezde yoğunsa bölümleme (sharding) gibi daha karmaşık tasarımlar gerekir. Uygulamayı yatay, veritabanını dikey ölçeklendirmek yaygın bir başlangıç karışımıdır.

Hangisini ne zaman seçmeli?

Ölçüt: Uygulama durum tutuyorsa ve hızlı çözüm gerekiyorsa. Dikey ölçeklendirme daha az mühendislik çabasıyla kapasite verir.

Ölçüt: Büyüme beklentisi yüksekse ve kesinti tolere edilemiyorsa. Yatay ölçeklendirme tavanı kaldırır ve hata toleransı sağlar.

Ölçüt: Maliyet. Küçük ve orta yükte tek makine daha ucuz olabilir; yük değişkense kopya sayısı yükle birlikte artıp azalarak maliyeti kontrol eder.

Ölçüt: Yönetim yükü. Yatay modelde dağıtım, izleme ve yapılandırma yönetimi karmaşıklaşır. Gerçek sistemler genellikle karma yaklaşım kullanır: uygulama katmanı yatay, durumlu bileşenler dikey ya da uzmanlaşmış yatay çözümlerle büyütülür.

Mindset programlarında ölçeklendirme

Bulut Bilişim Temelleri programı, servis modelleri, dağıtım modelleri ve maliyet yönetimi modülleriyle bulut kavramlarına yeni giren yazılım, altyapı ve ürün ekipleri içindir. Bulut Doğal (Cloud-Native) Uygulama Tasarım Prensipleri programı, durum yönetimi, dayanıklılık ve yaşam döngüsü modülleriyle, uygulamayı yatay büyümeye uygun tasarlaması gereken geliştiricileri ve mimarları hedefler. Uygulama Bulut Taşıma (Cloud Migration) Desenleri programı mevcut uygulamayı buluta taşıyan ekipler, GCP Professional Cloud Architect Hazırlık programı ise bulut mimarisi tasarlayan ve ölçeklenebilirlik ile maliyet dengesini sınav bağlamında çalışan adaylar içindir.

İlgili Mindset programı

Bulut Doğal (Cloud-Native) Uygulama Tasarım Prensipleri

Sık sorulanlar

Sık sorulan sorular

Scale up ile scale out arasındaki fark nedir?

Scale up, dikey ölçeklendirmedir: aynı makineye daha fazla işlemci ya da bellek eklenir. Scale out, yatay ölçeklendirmedir: aynı uygulamanın birden fazla kopyası çalıştırılır ve yük aralarında paylaştırılır. Dikey yol basittir ama tavanı vardır, yatay yol daha esnektir ancak uygulama tasarımında değişiklik gerektirir.

Yatay ölçeklendirme neden durumsuz uygulama ister?

Gelen istek herhangi bir kopyaya yönlendirilebilir. Kullanıcının oturumu o kopyanın belleğinde tutulursa, sonraki istek başka kopyaya gittiğinde oturum kaybolur. Durum ortak bir depoda (önbellek ya da veritabanı) tutulduğunda kopyalar birbirinin yerini alabilir ve istenildiği kadar eklenip çıkarılabilir.

Veritabanı yatay ölçeklendirilebilir mi?

Evet ama uygulama katmanı kadar kolay değildir. Okuma yükü, okuma kopyalarıyla yayılabilir. Yazma yükü içinse veriyi bölümlere ayırmak ya da dağıtık veritabanı kullanmak gerekir. Bu, tutarlılık ve sorgu karmaşıklığı açısından ek tasarım kararları getirir; bu nedenle birçok sistem veritabanını önce dikey büyütür.

Ölçeklendirme ile performans optimizasyonu aynı şey mi?

Hayır. Performans optimizasyonu, mevcut kaynakla işi daha verimli yapmaktır: sorguyu hızlandırmak, önbellek kullanmak. Ölçeklendirme ise kaynak miktarını artırmaktır. Önce darboğaz bulunmalıdır; verimsiz bir sorgu yüzünden yavaşlayan sisteme sunucu eklemek maliyeti artırır, sorunu çözmeyebilir.

Yatay ve Dikey Ölçeklendirme Nedir? Scale Out ve Up