Web sitesi ölçeklenme: trafik patladığında siteniz ne yapar?
·5 dk okuma·Vucod
En acı senaryo şudur: yıllarca beklediğiniz an gelir — markanız televizyonda anılır, bir paylaşım viral olur, kampanya tutar — ve binlerce insan aynı anda sitenize akın eder. Tam o anda ekranda beliren şey: "503 Service Unavailable". En çok görülmek istediğiniz dakikada görünmezsinizdir.
Web sitesi ölçeklenme meselesi tam olarak bunu konuşur: trafik normalin on katına, yüz katına çıktığında siteniz ne yapar? Bu yazıda hem bunun teknik cevabını vereceğiz hem de daha az sorulan dürüst soruyu: bu ihtimale ne kadar para ve emek ayırmaya değer?
Trafik patlaması siteyi neden çökertir?
Klasik mimaride her ziyaret, sunucuya bir iş listesi bırakır: isteği karşıla, uygulama kodunu çalıştır, veritabanına bağlan, sorguları koştur, sayfayı birleştir, gönder. Günde bin ziyarette bu liste kimseyi terletmez. Dakikada bin ziyarette ise sıra oluşur.
Darboğaz genelde işlemci bile değildir. İlk tıkanan şey çoğu zaman veritabanı bağlantı havuzudur: veritabanının aynı anda kabul edebileceği bağlantı sayısı sınırlıdır, dolunca yeni istekler kuyruğa girer. Kuyruk uzar, yanıt süreleri saniyelere çıkar, istekler zaman aşımına düşer. Kullanıcılar sayfayı yenilemeye başlar — yani yükü daha da artırır — ve zincirleme çöküş tamamlanır. Sitenin "yavaşlaması" ile "çökmesi" arasındaki mesafe, sanıldığından çok kısadır.
Üstelik patlamanın kaynağı her zaman iyi haber de değildir: kötü niyetli botlar, agresif tarayıcılar ya da bir DDoS girişimi de aynı etkiyi yaratır. Sitenizin dayanıklılığı, ziyaretçinin niyetine bakmaz.
Ölçeklenme ne demek: dikey ve yatay
İki temel strateji vardır.
Dikey ölçeklenme, makineyi büyütmektir: daha çok işlemci, daha çok bellek. Basittir, mimari değişiklik istemez. Ama tavanı vardır — bir noktadan sonra daha büyük makine ya yoktur ya da fahiş fiyatlıdır. Ve tek makine, tek arıza noktası olarak kalır.
Yatay ölçeklenme, makine sayısını artırmaktır: yük, bir yük dengeleyicinin arkasındaki birden çok sunucuya dağıtılır. Tavanı çok daha yüksektir ama bedava değildir; uygulamanın buna göre yazılmış olması gerekir. Oturum bilgisini tek makinenin belleğinde tutan, dosyaları yerel diske yazan bir uygulama, ikinci sunucu eklenince tuhaf hatalar üretmeye başlar.
Bulut sağlayıcıların "otomatik ölçeklenme" vaadi bu ikincisinin otomasyonudur: trafik artınca yeni sunucular açılır, düşünce kapanır. Kâğıt üstünde zarif; pratikte doğru yapılandırma, doğru metrikler ve buna uygun yazılmış bir uygulama ister. Yanlış kurulursa iki sonuçtan biri alınır: ya trafik anında yeterince hızlı büyüyemeyen bir sistem ya da ay sonunda şaşırtan bir fatura.
Statik içerik neden "sonsuz" ölçeklenir?
Şimdi aynı soruyu statik üretilmiş bir siteye soralım: trafik yüz katına çıktı, ne olur?
Neredeyse hiçbir şey. Çünkü ziyaret başına yapılacak iş zaten sıfıra yakındır — sayfalar önceden derlenmiş, CDN'in dünyaya dağılmış uç noktalarına kopyalanmıştır. Yüz kat trafik, yüz kat "hazır dosya uzatma" demektir ve CDN'ler tam bu iş için kurulmuş, günde milyarlarca isteği zaten taşıyan altyapılardır. Sizin kampanya gününüz, onların olağan salı günüdür.
Bu yüzden "trafik patlarsa ne olur?" sorusunun en zarif cevabı, patlama anında kahramanca ölçeklenen bir sistem değil, ölçeklenmesi gereken bir şey bırakmamış bir mimaridir. Ziyaret anında iş yoksa, o işin altında ezilecek sunucu da yoktur.
Dinamik parçalar: darboğaz nerede kalır?
Tamamen statik site her işe yetmez; form, arama, üyelik, ödeme gibi parçalar dinamiktir. Doğru mimaride bunlar da patlamaya dayanıklı kurulabilir:
- Formlar kuyruğa yazan hafif fonksiyonlarla karşılanır; bin form birden gelse kuyruk birikir ama sistem düşmez.
- Arama, ana veritabanını yormak yerine önceden kurulmuş bir dizin ya da özel arama servisi üzerinden çalışır.
- Sık okunan veriler önbellekten servis edilir; veritabanına yalnızca gerçekten değişen şey için gidilir.
Buradaki ilke hep aynıdır: ziyaretçi trafiğinin doğrudan dövdüğü katmanı aptal ve ucuz tut; pahalı ve hassas olanı arkaya, korumalı bölgeye al. Ön kapı ne kadar dayanıklıysa, arkadaki sistemlerin kötü gününde bile ziyaretçi siteyi açık görür.
Ölçeklenme ile hız aynı şey mi?
Karıştırılır ama farklıdırlar. Hız, tek bir ziyaretçinin sayfayı ne kadar çabuk gördüğüdür; ölçeklenme, o hızın kalabalıkta da korunup korunmadığıdır. Boş yolda 200 km/s giden araba hız gösterir; bayram trafiğinde hâlâ akan yol ise ölçeklenme. İkisi ayrı sorunlardır ama aynı kökten beslenirler: ziyaret başına yapılan iş. Ziyaret başına iş azsa site hem hızlıdır hem kalabalığa dayanıklıdır; iş çoksa, sakin günde yavaşlık, yoğun günde çöküş olarak karşınıza çıkar. Bu yüzden "sitemiz normalde de yavaş açılıyor" şikâyeti, aslında bir ölçeklenme uyarısıdır: normal günde zorlanan sistemin patlama günü ne yapacağı bellidir.
Dürüst soru: bu ihtimal için ne kadar yatırım yapmalı?
Şimdi kimsenin pek söylemediğini söyleyelim: çoğu kurumsal sitenin trafiği hiçbir zaman patlamaz. Yıllarca günde birkaç yüz ziyaretçiyle yaşayan bir KOBİ sitesi için "milyon kullanıcıya hazır altyapı" kurmak, iki kişilik aile için stadyum inşa etmektir. Karmaşık otomatik ölçeklenme kurulumları, kullanılmadıkları sürece sadece maliyet ve bakım yüküdür. Buna yazılım dünyasında erken optimizasyon denir ve israfın kibar adıdır.
Ama madalyonun öbür yüzü: ölçeklenebilirlik, sonradan satın alabileceğiniz bir eklenti değildir. Patlama günü geldiğinde mimari değiştiremezsiniz; o gün elinizdeki neyse onunla yaşarsınız. Çelişki gibi görünen bu iki gerçeğin çözümü, doğru mimariyi baştan seçmekte: statik build + CDN yaklaşımı, ölçeklenmeyi ekstra maliyetli bir özellik olarak değil, bedava yan ürün olarak verir. Küçük trafikte aylık birkaç dolara çalışan aynı yapı, viral gününüzde de ek yapılandırma olmadan ayakta kalır. Stadyum inşa etmiyorsunuz; büyüyebilen bir ev alıyorsunuz.
Sitemin dayanıklılığını önceden test edebilir miyim?
Evet ve bu düşündüğünüzden kolay. Yük testi araçları, siteye kontrollü biçimde yapay trafik gönderip nerede tıkandığını gösterir; ücretsiz araçlarla bile temel bir tablo çıkar. Kritik bir kampanya, TV yayını ya da lansman öncesinde bunu yapmamak, düğün salonunu görmeden kiralamaya benzer. Test ederken gerçekçi senaryo kurun: ziyaretçiler sadece ana sayfaya gelmez; form doldurur, arama yapar, ürün sayfalarında gezer. Darboğaz çoğu zaman ana sayfada değil, o az ziyaret edilen ama pahalı sorgular koşturan sayfadadır.
Önemli bir kampanya, lansman ya da yayın öncesinde sitenizin dayanıp dayanmayacağından emin değilseniz Vucod'a yazın; mevcut mimarinize bakıp dürüst bir cevap verelim. Her başvuruya 48 saat içinde dönüyoruz: vucod.com
Etiketler:ölçeklenmetrafikcdnaltyapıperformans