iToverDose/Yazılım· 29 MAYIS 2026 · 04:01

Gece Saat 3’te Çöken Liderlik Sistemi: Veltrix’in Veri Mühendisliği Macerası

Black Friday trafiği altında 2000 eşzamanlı kullanıcının taleplerini karşılayamayan bir liderlik sistemi nasıl sıfırdan yeniden inşa edildi? Veltrix’in 47 bin dolarlık kayıp ödül ödemesinden ders alınan hikaye ve mimari detaylar.

DEV Community3 dk okuma0 Yorumlar

Gece saat 03.00’te, Veltrix’in etkinlik platformunda çalışan hazine avı oyununda beklenmedik bir felaket yaşandı. Basit bir Rails uygulaması ve PostgreSQL sayaç kolonuna dayanan sistem, Black Friday’in yoğun talebi altında kilitlendi. Liderlik sorgularını engelleyen kilitlenmeler nedeniyle hata oranı %0.2’den %18’e sıçradı ve 47 bin dolarlık ödül ödemesi kaybedildi. Peki, bu krizi tetikleyen teknik sorunlar nelerdi ve nasıl bir çözümle sistem kurtarıldı?

Hazine Avı Oyununda Kritik Bir Tasarım Hatası

Veltrix’in hazine avı platformu, kullanıcıların gerçek dünya ödüller kazanabildiği interaktif bir deneyim sunuyordu. Sistem, her av için PostgreSQL’de yer alan bir sayaç kolonu üzerinden liderlik tablosunu güncelliyordu. Bu yaklaşım başlangıçta basit görünse de, PostgreSQL’in SERIAL tipi kolonların kilitlenme davranışı nedeniyle ciddi bir zafiyet taşıyordu.

PostgreSQL’in satır kilitleri, yoğun yazma operasyonları altında tablo düzeyine yükseliyordu. Bu durum, liderlik sorgularının engellenmesine ve sistem genelinde kilitlenmelere yol açıyordu. 2000 eşzamanlı kullanıcının taleplerini karşılamak üzere tasarlanan sistem, aniden %18 hata oranıyla karşı karşıya kaldı. Yazma işlemlerinde "eşzamanlı güncelleme kilitlenmesi" hataları yaygınlaşırken, ödül ödemeleri de durma noktasına geldi.

İlk Çözüm: PostgreSQL’in Bölümlendirilmesi ve Yeni Sorunlar

Ekip, sorunu geçici olarak çözmek için PostgreSQL sayaç kolonunu av kimliklerine göre 1024 parçaya bölmeyi denedi. Bu yöntem, kilitlenme sorununu azaltsa da tamamen ortadan kaldırmadı. Her av için ayrı bir dizi (sequence) oluşturmak zorunda kaldılar ve Rails kodunda sorguların doğru parçaya yönlendirilmesini sağlamak gerekti.

Ancak bu çözüm yeni problemler doğurdu:

  • Liderlik sorguları artık 1024 tabloyu birleştirmek zorunda kaldığı için gecikme 400ms’ye kadar yükseldi.
  • PostgreSQL dizilerinin düğüm yeniden başlatmalarında boşluklar oluşuyordu ve bu da yüksek trafikli avlarda binlerce doların yanlış ödenmesine neden oluyordu.
  • Redis önbelleği de liderlik sorgularını verimli bir şekilde yönetemiyordu, çünkü 1024 tabloya yapılan nokta sorgularını verimli bir şekilde yığınlayamıyordu.

Sistem, geçici bir rahatlama sağlamakla birlikte, uzun vadede daha karmaşık ve hataya açık hale geldi.

Mühendislik Devrimi: Kafka Tabanlı Olay Kaynağı Sistemi

Ekip, sorunun köküne inerek PostgreSQL sayaç sistemini tamamen kaldırdı ve yerine Kafka Streams tabanlı bir olay kaynağı sistemi olan HuntStream’i geliştirdi. Bu yeni mimari, her av eylemini (puan kazanma, ödül talep etme) Kafka konusunda yer alan değişmez olaylar olarak kaydediyordu.

HuntStream’in çalışma prensibi şu şekildeydi:

  • Her av eylemi, Kafka konusunda yer alan değişmez olaylar olarak kaydedildi.
  • RocksDB üzerinde çalışan bir materyalize edilmiş görünüm, bu olayları tüketerek liderlik tablosunu bellekte güncelledi.
  • Görünümler av kimliklerine göre parçalandığı için, liderlik sorguları sadece ilgili RocksDB parçasına yönlendirildi.
  • RocksDB’nin yerleşik önbelleği, popüler avların liderlik tablolarını bellekte tutarken, daha az kullanılanlar için disk erişimini kullanıyordu.

Bu mimari değişikliğiyle birlikte, sistem tam olarak bir kez semantik sağladı ve yatay ölçeklenebilirlik kazandı. Ayrıca, veri bozulması durumunda olayları yeniden oynatma olanağı da elde edildi. Bu sayede, önceki sistemdeki kilitlenme ve veri tutarsızlığı sorunları ortadan kalktı.

Gerçek Dünya Performansında Dönüşüm

HuntStream’in tamamen devreye alınmasının ardından sistem performansı çarpıcı şekilde iyileşti:

  • Hata oranı, aynı 2000 eşzamanlı kullanıcı altında %18’den %0.02’ye düştü.
  • Liderlik sorgularının gecikmesi, 400ms’den 12ms’ye (p99) geriledi.
  • Kafka sunucuları, saniyede 45 bin olay işledi ve bu olayların %90’ı 5ms’nin altında tamamlandı.
  • RocksDB materyalize edilmiş görünümleri, her av örneği için 1.8GB RAM kullanıyordu ve yük artışı durumunda yeni konteynerler eklenerek yatay ölçeklendirme yapılabiliyordu.

En önemlisi, ödül ödemelerinin doğruluğu da iyileşti. Olay günlüğü sayesinde, ödemeler yeniden oynatılarak tam olarak karşılanabiliyor ve 1024’lük boşluk problemi ortadan kalkıyordu.

Geleceğe Yönelik Dersler ve Öneriler

Bu deneyimden çıkarılan en önemli dersler şunlar oldu:

  • PostgreSQL’in sayaçlarını bölümlendirmek, hem karmaşıklık ekledi hem de uzun vadede yeterli ölçeklenebilirlik sağlamadı. Bu çözüm, nihai çözüm kadar karmaşıktı, ancak aynı faydayı sunamadı.
  • RocksDB kompaksiyonunun performans üzerindeki etkisi hafife alındı. İlk trafik artışında, bir avın RocksDB örneği 8 saniye boyunca kompaksiyonu durdurdu ve liderlik tablosunda gecikmelere neden oldu. Bu sorunu çözmek için kompaksiyon aralıkları ayarlanmak ve disk IOPS artırılmak zorunda kalındı.

İlerideki projelerde ekip, Kafka’yı kendi sunucularında barındırmak yerine yönetilen bir akış işleme platformu (Confluent Cloud ya da Redpanda) tercih etmeyi planlıyor. Ayrıca, her dağıtımdan önce 5000 eşzamanlı yazma operasyonunu simüle eden ve liderlik doğruluğunu doğrulayan bir entegrasyon testi yazmayı hedefliyor. Önceki test süiti yalnızca gecikmeyi ölçüyordu, ancak doğruluğu ihmal edildiği için bu hataya yol açmıştı.

Bugün, Veltrix’in hazine avı platformu artık gece saatlerinde bile güvenilir bir performans sergiliyor. Bu hikaye, modern veri mühendisliğinin karmaşıklığını ve doğru mimari seçimlerinin uzun vadeli başarıdaki önemini bir kez daha vurguluyor.

Yapay zeka özeti

Black Friday trafiğinde çöken liderlik sistemiyle 47 bin dolarlık kayıp yaşayan Veltrix, nasıl PostgreSQL’den Kafka tabanlı olay kaynağı sistemine geçti? Performans verileri ve mimari detaylar.

Yorumlar

00
YORUM BIRAK
ID #59P2ZH

0 / 1200 KARAKTER

İnsan doğrulaması

7 + 2 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.