Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
System Design Case Study: URL Shortener Tasarlamak
URL shortener okuma ağırlıklı bir sistemdir: saniyede ~40 yazmaya karşı ~3.900 redirect, bu yüzden stateless bir redirect yolu, cache-aside, çakışmasız ve tahmin edilmesi zor kodlar ve analytics için 301 değil 302 gerekir. Hesaplanmış capacity tablosu, hash çakışmalarının gerçek ölçümü, sayaç + bijective dönüşüm + base62, 301/302 curl çıktıları, alias, expiration ve kötüye kullanım.
System Design Case Study: News Feed ve Timeline
News feed'de varsayılan fan-out on write'tır, ama takipçi dağılımı power-law olduğu için tek bir ünlü paylaşımı milyon yazmaya dönüşür; çözüm, yüksek bir eşiğin üstündeki hesapları okuma anında birleştiren hibrit model, yalnız post ID tutan bir feed cache ve cursor pagination. Hesaplanmış capacity tablosu, push, pull ve hibrit simülasyonu, Redis sorted set'te offset ile cursor'ın gerçek çıktıları.
System Design Case Study: Chat ve Notification Sistemi
Chat sisteminde bağlantılar stateful gateway'lerde, sıra ve kayıt stateless bir chat service'te durur: mesaj önce kaydedilir, sohbet başına sunucu sayacıyla sıra numarası alır, alıcının gateway'i presence kaydıyla bulunur, çevrimdışı alıcıya push gider. İki gateway arasında Redis ile yönlendirme ve istemci tarafında seq ile sıralama, dedupe ve boşluk tespitinin gerçek çıktıları, okundu bilgisi, grup fan-out'u ve mesaj saklama.
System Design Case Study: Flash Sale ve Bilet Satışı
Flash sale'de overselling'i önleyen şey stok kontrolü ile azaltmanın tek atomik adımda yapılmasıdır; ani trafiği CDN'den sunulan bir waiting room emer, ödeme süresini TTL'li hold'lar yönetir, süresi dolan hold stoğu aynı statement'ta geri verir. 2.000 eşzamanlı alıcıyla 100 bilete naif kodun 2.000 rezervasyonu, koşullu UPDATE ve optimistic concurrency'nin gerçek çıktıları, ödeme timeout'u ve bot savunması.