Afet tıbbında ve acil hekimliğinde en çok korkulan senaryolardan biri "Kitlesel Yaralanma Olayı"dır (Mass Casualty Incident - MCI). Gözünüzün önüne ıssız bir dağ köyündeki iki odalı sağlık ocağını getirin. İçeride sadece bir pratisyen hekim ve bir sağlık memuru görev yapmaktadır. Günlük rutinleri tansiyon ölçmek, aşı yapmak ve reçete yazmaktır. Bir bayram günü, sağlık ocağının 500 metre ilerisindeki virajda iki şehirlerarası yolcu otobüsü kafa kafaya çarpışır.
Üç dakika içinde o iki odalı sağlık ocağının bahçesine ve kapısına 150 ağır yaralı, kırıkları ve kanamaları olan insan yığılır. O iki kişilik fedakâr sağlık ekibinin elindeki sargı bezi 40 saniyede biter, tek oksijen tüpü ilk dakikada tükenir, sedye olmadığı için hastalar koridorda birbirinin üzerine yığılır. Hekim ne kadar yetenekli olursa olsun o kapı kilitlenmek zorundadır; çünkü fiziksel kapasite biyolojik bir duvara toslamıştır.
Web barındırma ekosisteminde de destek masalarını en çok güldüren ama aynı zamanda en çok yoran trajedilerden biri, tam olarak bu kitlesel vaka izdihamıdır: Yıllık maliyeti bir paket çerez parasını geçmeyen paylaşımlı hosting paketiyle ulusal televizyon veya sosyal medya patlamasını karşılamaya kalkışmak.
Cuma Akşamı 21:30: "Az Sonra Canlı Yayındayız!"
Senaryo neredeyse harfi harfine aynıdır. Küçük bir el yapımı deri cüzdan üreticisi veya yerel bir çikolata butiği... Sahibi iki yıl önce bir kampanya görmüş, yıllık 50-100 TL'ye en temel paylaşımlı başlangıç paketini satın almıştır. Sitede günde ortalama 15-20 kişi gezmekte, ayda 3 sipariş çıkmaktadır.
Bir cuma akşamı şans yüzüne güler. Türkiye'nin en çok izlenen ana haber bülteninde veya milyonlarca takipçisi olan popüler bir YouTube kanalında bizim butik üreticinin hikayesi yayınlanır: "Anadolu'dan dünyaya açılan lezzet mucizesi!"
Sunucu ekranda markanın web sitesini gösterir ve adını söyler: sirketadi.com.tr.
O saniyede, Türkiye'nin dört bir yanından aynı anda 40.000 kişi akıllı telefonlarından siteye girmek için linke tıklar.
CloudLinux ve 508 Resource Limit Duvarı
Kullanıcının barındığı sunucuda CloudLinux işletim sistemi ve LVE (Lightweight Virtual Environment) kalkanı devrededir. Kullanıcının satın aldığı paketin sınırları bellidir:
- CPU: %100 (Tek bir çekirdeğin gücü)
- RAM: 1 GB (1024 MB)
- Eşzamanlı İşlem (Entry Processes / EP): 20
- Eşzamanlı Toplam Süreç (NPROC): 40
- I/O Limiti: 2 MB/s
Gelen ilk 20 kişi sitenin ana sayfasını yükler. WordPress ayağa kalkar, 45 farklı eklentiyi hafızaya yükler, MySQL'e 30 farklı sorgu atar.
Ve 3. saniyede 21. kişi kapıya gelir. EP sınırı (20) aşılmıştır!
Sunucu işlemcisi o kullanıcıya ayrılan tek çekirdeği %100 tüketir. Bellek 1024 MB tavanına vurur. CloudLinux çekirdeği (kernel), sunucudaki diğer 300 masum sitenin zarar görmesini engellemek için giyotini indirir.
Siteye girmeye çalışan on binlerce insanın ekranında o meşhur, buz gibi hata belirir:
508 Resource Limit Is Reached
The website is temporarily unable to service your request as it exceeded
resource limits. Please try again later.Potansiyel milyonlarca liralık satış fırsatı, 30 saniye içinde buharlaşır gider.
"Sunucunuz Çökeceği Günü Bildi!" Öfkesi
Ekranda haber devam ederken, müşteri çılgınlar gibi destek hattını arar. Hatta ağlamaklı bir öfkeyle bağırır:
"Siz nasıl bir firmasınız! İki yıldır sitenin hiçbir şeyi yoktu, tıkır tıkır çalışıyordu. Tam televizyona çıktık, Türkiye bizi konuşuyor, sunucunuz çöktü! Çökeceği günü bildi resmen! Bütün müşterilerim kaçtı, trilyonluk zararım var! Hemen o sunucuyu açın, neyi bekliyorsunuz!"
Destek mühendisi LVE istatistiklerini (lveinfo) ekrana yansıtır: "Beyefendi, sunucumuz çökmedi. Sunucu sapasağlam ayakta. Sitenize şu anda saniyede 8.000 yeni istek geliyor. Sizin satın aldığınız paket ise aynı anda sadece 20 kişinin tıklamasını karşılayabilecek kapasitede bir başlangıç paketidir."
Müşterinin cevabı asla şaşmaz:
"Bana ne sınırdan kardeşim! Hosting hosting değil mi? Ben parasını ödemedim mi? Açın oradan vanayı, verin bütün sunucuyu bana! Yarın düşer zaten trafik!"
Stadyumu Köy Kahvesine Sığdırma İllüzyonu
Bir köy kahvesi kiralayıp içine 5 masa, 20 sandalye koyduğunuzu düşünün. Bir akşam Galatasaray-Fenerbahçe derbisi oynanacak diye kahvenin kapısına 50.000 taraftar yığılırsa ve kahveci kapıyı kapatıp "İçeri giremezsiniz, yerim yok" derse; kahveciye "Sen beni rezil ettin, neden stadyum değilsin?" diye kızabilir misiniz?
Paylaşımlı hosting, kişisel sunucu parkı değildir. Bir stadyum dolusu insanı aynı saniyede karşılamak istiyorsanız, mimarinizi ona göre inşa etmek zorundasınız:
- Önbellekleme Katmanı (Full Page Caching): WordPress'i her ziyarette PHP ve MySQL'i yeniden çalıştıracak şekilde çıplak bırakamazsınız. Redis / Memcached veya LiteSpeed Cache (LSCache) ile sitenin sayfalarını statik HTML olarak RAM'de tutmak zorundasınız. Statik HTML bir sayfa, 1 çekirdekle bile saniyede 5.000 isteği rahatlıkla karşılar.
- CDN Kenar Önbelleklemesi (Cloudflare Edge Cache): Sitenin önbelleğini Cloudflare üzerine alıp "Cache Everything" kuralı tanımlarsanız, o 40.000 kişinin %95'i sizin sunucunuza hiç ayak basmadan Cloudflare'in devasa sunucularından içeriği alır.
- Otomatik Ölçeklenen Bulut (Auto-scaling Cloud / Kubernetes): Televizyona veya büyük bir reklam kampanyasına çıkmadan önce sistemi AWS, Google Cloud veya DigitalOcean üzerinde yük arttıkça yeni sunucu kopyaları ayağa kaldıran (Load Balancer + Auto Scaling) elastik bir kümeye taşımak gerekir.
Yılda 50 lira ödeyip arkasına yaslanarak ulusal televizyon reytingini karşılamayı beklemek mühendislik değil, hayalperestliktir. Altyapı bir mucize yeri değildir; matematiğin, bant genişliğinin ve donanım sınırlarının hüküm sürdüğü fiziksel bir dünyadır. Hayalleriniz milyonluksa, altyapınıza ayıracağınız bütçe de bir fincan çay parasından fazla olmak zorundadır.