MÜLAKAT EZBERLERİYLE CANLIYA ÇIKILMAZ!

Eğitim Tanıtım Videosu

  • Eğitmen: Salih Cantekin
  • Sistem Sayısı: 3/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.

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.
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