Teknik · Oyun altyapısı
Aktif oyunları Redis ile hızlandırıp MongoDB'de arşivlemek
Canlı tavla durumunu Redis'te yönetirken tamamlanan oyunları MongoDB arşivine güvenli biçimde aktaran iki katmanlı mimari.

Aktif oyun ile arşiv aynı iş yükü değil
Aktif oyunda küçük durum değişiklikleri düşük gecikmeyle ve atomik biçimde uygulanmalıdır. Tamamlanan oyunda ise kalıcılık, sorgulanabilirlik ve replay geçmişi önem kazanır. Bu iki ihtiyacı tek veri katmanına zorlamak hem maliyeti hem karmaşıklığı artırıyordu.
Redis'i çalışan oyunun authoritative runtime katmanı, MongoDB'yi kalıcı arşiv ve ürün verisi katmanı olarak ayırdık. İstemci hamle niyetini yollar; sunucu Redis'teki güncel durum üzerinde doğrular ve uygular.
Oyun bittiğinde veri kaybolmamalı
Final action sonrasında arşiv işi kuyruğa alınır. Worker canonical geçmişi MongoDB belgesine dönüştürür, replay için gerekli alanları doğrular ve başarılı arşivden sonra aktif runtime verisini temizler.
Aynı iş tekrar çalışabilir; idempotent arşivleme aynı oyunu iki farklı sonuç gibi yazmamalıdır. Hata halinde aktif kayıt hemen silinmez ve bakım süreci işi yeniden deneyebilir.
Hız kadar maliyet de izlenmeli
Kullandığımız ücretsiz Upstash paketi aylık 500 bin komutla sınırlıydı. İlk gerçek kullanımda 770 bin komuta ulaşıp limiti aştığımızı gördük; bu da sistemi yalnız hız için değil kaynak tüketimi için de optimize etmemiz gerektiğini açık biçimde gösterdi.
Presence ve bakım cronlarının gereksiz taramalarını azaltmak, okumaları toplamak ve yalnız değişen veriyi yazmak bu süreçte öne çıktı. Ücretsiz ve limitli paketlerle başlayıp sistemi izlemek, fazla kaynak tüketen kısımları erken keşfetmemize olanak sağlıyor. Performansı artık komut tüketimi ve archive gecikmesiyle birlikte değerlendiriyoruz.
RE-PING
Bu yazıyı paylaş
Bağlantıyı kopyalayabilir veya kullandığın sosyal platformda yeniden paylaşabilirsin.
PONG
Pong sende
Yorum eklemek için bu yazının ilişkili X gönderisine cevap ver.