MÜLAKAT EZBERLERİYLE CANLIYA ÇIKILMAZ!

Eğitim Tanıtım Videosu

  • Eğitmen: Salih Cantekin
  • Sistem Sayısı: 5/5

Tahtada Değil, Production'da Çalışan Mimariler

Araya Load Balancer koyar, bir de Redis atarız" demek işin kolay kısmı. Peki o çizdiğiniz mimari, Efsane Cuma gecesi saniyede 500.000 request yediğinde ne olacak?

FAANG mülakatlarını ezberlemeyi bırakın. Biletix, Trendyol, Uber gibi sistemlerin arkasındaki gerçek darboğazları (bottlenecks) ve hayat kurtaran mimari kararları (trade-offs) tartışıyoruz

Sistem Gereksinimleri

1. Biletix/TicketMaster

Onbinlerce kişinin aynı anda bilet satın aldığı, yüzbinlerce kişinin etkinlik aradığı sistemleri tasarlarken nelere dikkat edilmeli? Tarkan konseri için belirlenen 1000 bileti, 1001 tane satmamayı nasıl garanti edersin?
Write your awesome label here.

2. Trendyol

Depoda 1.000 adet indirimli iPhone var, kapıda 500.000 kişi bekliyor. Kapasite sınırlarını zorlayan, saniyede yüz binlerce okuma ve yazma işleminin yapıldığı gerçek bir e-ticaret kaosu.
Write your awesome label here.

3. Youtube ►

Günde 100 MİLYON kişinin video izlediği, 1 MİLYON kişinin 256GB'a kadar büyük videoları yüklediği bir sistem düşünün. İnternetiniz süper hızlı veya kaplumbağa kadar yavaş olsa bile 1 saniyenin altında video oynatma garantisini nasıl verebilirsiniz?
Write your awesome label here.

4. Uber

Cumartesi gecesi dev bir stadyum konseri bitti ve aynı lokasyondan aynı saniyede 100.000 kişi araç çağırdı. Binlerce hareketli sürücünün konumunu sürekli güncelleyip, kimseyi aynı araca atamadan en uygun eşleşmeyi 45 saniyenin altında nasıl yaparsınız? Gerçek zamanlı eşleşme ve konum yönetiminin mimarisini tasarlıyoruz
Write your awesome label here.

5. Tinder

Milyonlarca aktif kullanıcının sürekli yer değiştirdiği bir dünyada, 'çevrendeki en uygun kişileri' milisaniyeler içinde nasıl bulursunuz? Her saniye binlerce 'swipe' işlemini veritabanını kilitlemeden işleyip, 'It’s a Match!' anını her iki tarafa da gecikmesiz iletmenin mimarisini kuruyoruz. Coğrafi indeksleme ve gerçek zamanlı eşleşme dünyasına giriyoruz.
Write your awesome label here.

Ticketmaster (Aynı Koltuğa Tıklayan 50.000 Kişi)

Cuma sabah 10:00. Biletler satışa çıktı ve herkes aynı en ön koltuğu istiyor. Bu yükü doğrudan PostgreSQL'e gönderirseniz sistemin CPU'su saniyeler içinde %100 olur ve sunucu yanıt vermeyi keser.

Ne Konuşuyoruz?

  • Veritabanını koruyan tampon bölge: Virtual Waiting Room (Sanal Bekleme Odası).

  • Race Condition kabusu ve Redis ile Distributed Lock yönetimi.

  • Bilet satış anındaki o kritik "10 dakikalık rezervasyon" mantığı.


Trendyol (Efsane Cuma İzdihamı)

Depoda 1.000 adet indirimli iPhone var ama kapıda 500.000 kişi bekliyor. Kapasite sınırlarını zorlayan, saniyede yüz binlerce okuma (read) ve yazma (write) işleminin yapıldığı gerçek bir mimari hayatta kalma mücadelesi.

Ne Konuşuyoruz?

  • Stok Çakışmaları: SQL'de UPDATE atmak yerine Redis'te Pre-allocated Tokens kullanmak.

  • Dual-Write Problemi: "Para çekildi ama sipariş yok" hatasını Outbox Pattern ile tarihe gömmek.

  • Veritabanını yormadan ana sayfayı ayakta tutmak: CDC, Debezium ve Elasticsearch entegrasyonu.

Youtube

Günde 1 milyon video yüklemesi ve 100 milyon izlenme! 256 GB boyutunda devasa bir dosya yüklenirken kullanıcının interneti koparsa ne olur? Veya yavaş interneti olan biri videoyu donmadan nasıl izler? 


Ne Konuşuyoruz?

  • Resumable Uploads: 256 GB'lık dosyaları sunucuyu boğmadan parçalara ayırarak yüklemek ve kopmalara karşı dayanıklı hale getirmek.
  • Transcoding ve Video İşleme Darboğazı: Yüklenen tek bir videonun farklı çözünürlüklerde kodlanması aşamasındaki ağır CPU maliyetlerini asenkron mimarilerle dağıtmak.
  • Düşük Gecikme: Yavaş internet bağlantılarında bile videoyu anında başlatmak için trafiği global olarak dağıtan akıllı Caching ve CDN stratejileri.

Uber

Cumartesi gecesi 23:30. Dev bir etkinlik bitti ve o bölgedeki 100.000 kişi aynı anda uygulamayı açıp fiyat tahmini alıyor, araç çağırıyor. Sistemin sürekli hareket eden binlerce sürücünün konumunu bilmesi ve yolcularla 45 saniyenin altında eşleştirmesi gerekiyor. Gerçek zamanlı veri akışının ve tutarlılığın (consistency) sınırlarının zorlandığı bir mimari hayatta kalma mücadelesi.


Ne Konuşuyoruz?

  • Geospatial Indexing: QuadTree, Geohash veya Redis GEO kullanarak hareket eden milyonlarca sürücüyü harita üzerinde milisaniyeler içinde bulmak.
  • CAP Teoremi ve Eşleşme Tutarlılığı: Eşleşme anında "Tutarlılık" neden hayati önem taşır? Aynı sürücünün aynı saniyede iki farklı yolcuya atanmasını engellemek için kurulan kilit mekanizmaları.
  • Düşük Gecikmeli İletişim (Low Latency): Sürücü ve yolcu uygulamasının anlık olarak haberleşmesi için WebSockets veya Server-Sent Events (SSE) ile kurulan çift yönlü iletişim köprüleri.

Tinder

Cuma akşamı saat 20:00. Milyonlarca insan aynı anda uygulamayı açıp çevresindeki profilleri inceliyor. Herkesin konumu sürekli güncellenirken, sistemin hem bu coğrafi veriyi sorgulaması hem de milyarlarca "beğeni" verisini (write-heavy) tek tek işlemesi gerekiyor. Veritabanı darboğazlarını aşan, lokasyon tabanlı bir mimari hayatta kalma mücadelesi.


Ne Konuşuyoruz?


  • Indexleme vs Optimize: Verileri indexlereyerek mi daha hızlı ulaşalım yoksa cache gibi mekanizmalarla optimize ederek mi?
  • Write-Heavy Processing: Yazma için optimize edilmiş veritabanı mı yoksa araya başka mekanizmaları koyarak klasik İlişkili veritabanları mı?
Empty space, drag to resize

Kimler İçin?

Sadece basit CRUD API'lar yazmaktan sıkıldınız mı? "Bu devasa şirketler Efsane Cuma gecesi arka planda o trafiği çökmeden nasıl kaldırıyor?" diye merak ediyorsanız doğru yerdesiniz.

Eğer kariyerinizde bir adım öne çıkıp Senior seviyesine oynamak, FAANG kalibresindeki şirketlerin mülakatlarını "ezberlemeden" geçmek istiyorsanız bu vizyona ihtiyacınız var.

Ufak bir uyarı: Yazılıma yeni başladıysanız bu eğitim size ağır gelir. Herhangi bir dilde backend tecrübeniz varsa ve artık işin mimari tarafında, darboğazları çözme aşamasında ter dökmeye hazırsanız, içeride çok rahat edeceksiniz.

Hakkında

İnternetteki eğitimlerin çoğu size sadece araçların dokümantasyonunu okur. Herkes Kafka'nın veya Redis'in ne işe yaradığını zaten biliyor. Asıl mesele aracı bilmek değil, kaosu yönetmektir.

Biz burada "Hello World" projeleri yapmıyoruz. 50.000 kişi aynı bilete tıkladığında veritabanı kilitlenmeden o yükü nasıl eritirsiniz? Ödeme alındığı an network koparsa faturayı nasıl kesersiniz?

Belirli bir dilde kod yazıp geçmiyoruz. "Bu sistem bu yük altında neden patlar?" sorusunu sorup; CDC, Outbox Pattern ve Lua Scripting gibi yöntemlerle production'da nasıl hayatta kalacağımızı konuşuyoruz.
Created with