Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Tek Sunucudan Milyonlarca Kullanıcıya: Vertical ve Horizontal Scaling, Stateless Tier
Uygulama tier'ını horizontal ölçeklemenin şartı stateless olmak: session, Data Protection key ring'i, IMemoryCache, yerel dosyalar ve zamanlanmış işler instance'ın dışına alınmalı. İki instance'lı gerçek bir denemede session'ı Redis'e taşımak tek başına hiçbir şeyi düzeltmiyor, çünkü session ve authentication cookie'leri Data Protection key'leriyle şifreli; key ring de paylaşılıp SetApplicationName verildiğinde iki sunucu tek uygulama gibi davranıyor.
Back-of-the-Envelope Estimation: QPS, Storage, Bandwidth ve Availability Hesabı
Back-of-the-envelope estimation, DAU'dan ortalama ve peak QPS'e, oradan storage, bandwidth ve availability'ye giden ve mertebe olarak doğru sonuç veren kısa bir hesap zinciridir. 10 milyon DAU'lu URL shortener'da peak ~1.700 QPS ve 5 yılda ~1 TB veri tek veritabanına sığarken, fotoğraf uygulamasında 55,6 Gbps egress CDN'i zorunlu kılıyor; %99,9 yılda 8,76 saat kesinti demek ve seri bileşenlerde availability çarpılıyor.
System Design Nedir, Nasıl Çalışılır? Requirement'lardan Deep Dive'a 4 Adımlı Yöntem
System design'a dört adımla yaklaşılır: requirement'ları ve scope'u netleştir, high-level design'ı çizip onay al, problemi taşıyan component'te deep dive yap, trade-off'ları söyleyip toparla. Kampanya günü çöken Bookstore örneğinde Little's law (L = λ × W) darboğazın CPU değil connection pool olduğunu kâğıt üstünde gösteriyor ve gerçek SqlClient çıktısı bunu doğruluyor.