EN
← Tüm işler

Stüdyo ürünü · Android

lit

Üniversite öğrencileri için, okul e-postasıyla doğrulanan, yalnızca kampüse özel bir sosyal keşif uygulaması. Backend’i ben kurdum ve işletiyorum — eşleştirme, canlı sohbet, sıralama ve altyapı.

Rol
Backend ve ML sorumlusu
Yıl
2025–26
Durum
Google Play’de yayında
Bağlantılar
Öğrencilerle dolu bir amfi, içlerinden biri telefonuna bakıyor
370+
backend commit’i, servisin büyük çoğunluğu
UT-xxxx
uygulamanın üzerinden karar verdiği hata kataloğu
0
yönetilen servis — Hetzner’de kendi sunucumuz

Bağlam

lit bir 4ourstack ürünü: öğrenciler üniversite e-postasıyla kaydoluyor ve kendi kampüslerindeki insanları keşfediyor. Mobil uygulamayı Uygar Çapar, yönetim panelini Ramiz Kadayıfcı geliştiriyor; backend, eşleştirme ve sunucular benim sorumluluğumda.

Eşleştirmeyi üretim için yeniden yazmak

İlk sürüm her beğeni ve geçişi kullanıcı profilinin içinde JSON dizisi olarak tutuyor, tek sunucunun belleğinde önbellekliyor ve her istekte mesafeleri C#’ta hesaplıyordu. Demo için yeterliydi, bir dönemi atlatamazdı. Tasarladığım v2 mimarisi:

  • Swipe’lar kendi indeksli tablosunda — her swipe’ta büyüyen profili yeniden yazmak yerine tek satır okuma.
  • İlgi alanları 64 bitlik bayrak alanı — ortak ilgi puanı bir bitwise AND ve popcount’a iniyor.
  • Kullanıcı başına Bloom filtresi Redis’te; görülen profiller geri gelmiyor.
  • Uyumluluk puanı — “premium > doğrulanmış > diğerleri” yerine; küçük kampüsler için şehir düzeyinde konum ve tohumlanmış yarıçap geri düşüşü.
  • ONNX sıralayıcı — Python’da çevrimdışı eğitilen (two-tower + hobi embedding’leri) model, .NET sürecinin içinde servis ediliyor.

Eşzamanlılık altında doğruluk

Tasarım bilinçli bir stres testi incelemesinden geçti. Gerçek bir bulgu: aynı anda birbirini beğenen iki öğrenci “zaten eşleşmiş mi?” kontrolünü birlikte geçebiliyordu — benzersizlik kısıtı veriyi korudu ama biri eşleşme bildirimini hiç almadı. Düzeltme, çakışmada mevcut eşleşmeyi okuyup SignalR bildirimini yine de gönderiyor. Soğuk başlangıç ve yarış durumları kendi planını ve testlerini aldı.

Uygulamanın güvenebileceği bir API

Beklenen her hata sabit bir kod (UT-1006), yerelleştirilmiş bir mesaj ve önerilen bir eylem döndürüyor. Uygulama metne değil koda göre karar veriyor. Backend mesajları sunucu tarafında çevriliyor.

Altyapı

Eski bir Plesk sunucusundan Hetzner Cloud’a, Docker Compose ve diğer ürünlerimize de hizmet veren ortak bir Caddy edge’ine taşındı. git push → GitHub Actions → GHCR → sunucu → sağlık kontrolü. Serilog’dan Seq’e loglar, hatalar için Sentry, her taşıma için yazılı bir runbook.

İletişim

Probleminizi
anlatın.

Birkaç satır yeterli. Bir iş günü içinde dönüyorum — sorularla, kaba bir planla ya da dürüst bir “burada yapay zekâ çözüm değil” ile.

Ya da doğrudan ulaşınhello@erenakay.com
WhatsApp ↗