Tinder benzeri uygulamanın backendi nasıl hazırlanmalı?

Arsen Lüpen

Hectopat
Katılım
28 Şubat 2021
Mesajlar
102
Daha fazla  
Cinsiyet
Erkek
Merhaba. Tinder tarzı bir kart kaydırma uygulamasında backend kısmında kafama takılan bir soru var. Şimdi her kaydırmada veritabanına istek gönderiliyordu ve yeni veri oluşturuluyordu. Geri komutu çalıştığı zamanda oluşturulan satır siliniyordu. Her kaydırmada DB'yi yormak yerine redis ile cachede tutup bulk olarak kayıt ederim diye düşündüm. Ama bulk olarak kayıt edilme ne zaman olmalı sizce?

1) Bir kaydırmadan sonra süre başlatılıp o süre bitene kadar kaydırma yapılmazsa bulk edilebilir.(ama her kullanıcı için bir timer başlatılacak)
2) Belli bir kaydırma sayısına ulaşılınca.(çok mantıksız, hiçbir zaman garantisi yok ne kadar kaydırma yapılacağı.)
3) Kullanıcı uygulamadan çıkınca veya uygulamaya girince.(olası bir internet kopmasında kullanıcı uygulamayı kapattı ama bağlantı olmadığı için apiye istek gönderilemedi.)
4) Background worker eklenebilir.(bunda da yine her kullanıcı için bir süre mi başlatılmalı(kaydırma yapıldı ve 1 dakikalık bir süre başladı) yoksa uygulamada her 10 dk da bir tüm redisdeki veriler mi bulk edilmeli? Çok fazla veri olur bu sefer de.)
Bana en mantıklı 1 ve 3 geliyor. 1 performans olarak sorun yaratabilir gibi geliyor. 3 de riskli oldu olası bir internet kopmasında kayıt edilemeyebilir.
 
Bu tür durumlarda tek, en süper çözüm diye bir şey olmaz, uygulamanıza, arkadaki yapılarınıza, trafiğe vs. bağlı olarak çözüm üretilir. Ayrıca bu çözümlerden sadece bir tanesini seçip uygulamak zorunda da değilsiniz, kombinasyon yapabilirsiniz.

Mesela benim aklıma şöyle bir şey geliyor;
-işlemler öncelikle bir yere gönderilmeden, bulk olarak gönderilmek üzere tutulacak
-kullanıcı ilk işlemi yaptığında uygulamada bir timer başlatılır (mesela 10 saniye)
-timer dolduğunda ya da kullanıcı bir limite ulaştığında (mesela 10 adet) bulk veri gönderimi yapılır
-bunu da doğrudan dbye yazmak yerine mesela rabbitmq kuyruğuna ya da kafkaya basabilirsiniz, database'e anlık büyük yük bindirmeden de consumerlar kuyruktaki kayıtları işler.
 
Bu tür durumlarda tek, en süper çözüm diye bir şey olmaz, uygulamanıza, arkadaki yapılarınıza, trafiğe vs. bağlı olarak çözüm üretilir. Ayrıca bu çözümlerden sadece bir tanesini seçip uygulamak zorunda da değilsiniz, kombinasyon yapabilirsiniz.

Mesela benim aklıma şöyle bir şey geliyor;
-İşlemler öncelikle bir yere gönderilmeden, bulk olarak gönderilmek üzere tutulacak.
-Kullanıcı ilk işlemi yaptığında uygulamada bir timer başlatılır (mesela 10 saniye)
-Timer dolduğunda ya da kullanıcı bir limite ulaştığında (mesela 10 adet) bulk veri gönderimi yapılır.
-Bunu da doğrudan DB'ye yazmak yerine mesela rabbitmq kuyruğuna ya da kafkaya basabilirsiniz, Database'e anlık büyük yük bindirmeden de consumerlar kuyruktaki kayıtları işler.

Çok teşekkür ederim cevabınız için.
 

Yeni konular

Geri
Yukarı