TOPLULUK ARACI · 2025 – BUGÜN
KillReport
EVE Online oyuncuları, korporasyonları ve ittifakları için gerçek zamanlı killmail takip ve analiz platformu. zKillboard ve EVE’nin resmî ’si (ESI) ile senkronize çalışıyor; CCP lisansı gereği ticari değil.
Rolümüz: Tasarım, geliştirme ve işletme tamamen bizde.
killreport.com- arka plan işçisi
- ~45
- veri modeli
- 42
- paylaşılan API sınırı
- 50 istek/sn
- GraphQL abonelikleri
- Canlı
Problem
Oyunda her çatışma bir killmail kaydı üretir ve bu kayıtlar durmadan akar. Her kaydı zenginleştirmek için dış API’ye birçok istek atmak gerekir, ama API’nin sıkı bir hız sınırı vardır.
Liderlik tabloları ve canlı akış gecikmeden güncel kalmalı; bir işçinin çökmesi ya da yeniden başlaması siteyi durdurmamalı.
Mimari
Veri Kaynakları
zKillboard · ESI
İş Kuyruğu
- RabbitMQ
Görev Dağıtımı
İşçiler
- TypeScript
~45 Süreç
Veri Katmanı
- PostgreSQL
- Prisma
- Redis
Kalıcı Veri ve Olaylar
API
- GraphQL Yoga
Canlı Abonelikler
Arayüz
- Next.js
App Router
API sunucusu ve işçiler ayrı süreçler; birbirleriyle yalnızca Redis üzerinden konuşur, bu yüzden bağımsız yeniden başlatılabilirler.
Neler Yaptık
Canlı Akış
Yeni killmail’ler GraphQL abonelikleriyle sayfaya anında düşer.
Karakter, Korporasyon, İttifak
Her varlık için geçmiş, istatistik ve otomatik senkronizasyon.
Liderlik Tabloları
Günlük sayaçlar kayıtla aynı işlemde güncellenir; ayrı bir zamanlanmış iş gerekmez.
Egemenlik ve Harita
Bölge, yıldız sistemi ve egemenlik kampanyalarının takibi.
İşçi Paneli
Kuyruk ve işçilerin durumunu gösteren izleme ekranı.
EVE SSO
Oyuncular EVE’nin kendi hesabıyla giriş yapar; tokenlar otomatik yenilenir.
Çözdüğümüz Zor Problemler
- 1
Süreçler Arası Paylaşılan Hız Sınırı
ESI saniyede 150 isteğe izin veriyor. Onlarca işçi aynı sınırı paylaştığı için Redis tabanlı ortak bir sınırlayıcı yazdık ve güvenlik payıyla saniyede 50 istekte tuttuk.
- 2
Zamanlanmış İş Olmadan Güncel Tablolar
Günlük sayaçlar, killmail’in kaydedildiği veritabanı işleminde atomik olarak artırılıyor. Liderlik tabloları hiçbir zaman eski kalmıyor ve ayrı bir cron işine gerek yok.
- 3
Şema Dışı Tabloların Korunması
Performans için elle yazılmış tabloların ORM göçlerinde silinmesini engelleyen bir koruma ekledik.
Teknolojiler
- Next.js
- React
- TypeScript
- GraphQL
- Prisma
- PostgreSQL
- Redis
- RabbitMQ
- GitHub Actions
İlgili Hizmetler
Benzer bir sistem mi kuruyorsunuz? Mimarisinden canlıya alınmasına kadar birlikte çalışabiliriz.
İletişime geç