Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Üretim kontrol listesi

Bu sayfa, canlıya çıkmadan önce tek tek işaretleyeceğiniz maddeleri toplar. Her madde kısa bir nedenle gelir ve ilgili sayfaya bağlanır. Listeyi lansmandan önce bir kez ve her büyük değişiklikten sonra yeniden gözden geçirin.

1. Ağ ve barındırma

  • Her şey HTTPS. Oturum çerezleri __Secure- öneklidir ve Secure bayrağı taşır; düz HTTP’de oturum kurulamaz. Soketler wss:// ile açılır. Yerel geliştirmede http://localhost kullanıyorsanız tarayıcınızın localhost istisnasını doğrulayın.
  • Tarayıcıdan çağrı yolu seçildi. Ya oyunun alan adı bir ortamın alan adı listesindedir ve oyun Open Play’i doğrudan çağırır (sunucu CORS başlıklarını gönderir; oyun ile Open Play aynı kayıtlı alan adının alt alanları olmalıdır, yoksa SameSite=Lax oturum çerezi gitmez), ya da oyun API’yi kendi alan adı altından ters vekille çağırır (mimari ve barındırma).
  • Vekil şu başlıkları olduğu gibi iletir: Authorization, Cookie (ve yanıtta Set-Cookie), Origin, x-crx-env, x-csrf-token, Idempotency-Key, If-Match, x-crx-schema-version, Sec-WebSocket-* (alt protokol ve uzantı pazarlığı dahil). Yanıt başlıklarını (x-csrf-token, Deprecation, Retry-After, ETag) silmez.
  • WebSocket yükseltmesi vekilde açıktır, Upgrade/Connection başlıkları iletilir ve bağlantı en az 5 dakika boşta kalabilir (sunucu boşta kapatmayı kendisi yapar: limitler).
  • İstek gövdesi sınırı en az 2 MiB. Sunucu 2 MiB üstünü 413 ile reddeder; vekiliniz daha düşük bir sınır koymasın.
  • Zaman aşımı: vekilin yanıt-başlık bekleme süresi uzun işlemleri kesmez (Open Play’in kendi ağ geçidi 65 sn kullanır).
  • İstemci IP’si iletilir. Kimlik uçlarındaki hız sınırları istemci IP’sine bağlıdır. Vekil X-Forwarded-For eklemiyorsa tüm oyuncular tek kovada toplanır (ör. misafir açma dakikada 30). Birden çok vekil zincirliyse operatör güvenilir vekil bloklarını tanımlamalıdır.
  • Panel yolu internete kapalı. /v1/panel/* yolu halka açık ağ geçidinde 404 döndürülür; panele yalnız yönetim ağından ya da ayrı bir alan adından erişilir.
  • Önbellek: çerez ya da Authorization taşıyan API yanıtları paylaşımlı önbelleğe (CDN) alınmaz. Yalnız herkese açık, içerik adresli yanıtlar (/v1/assets/{sha256}, /v1/model-files/{sha256}) ve ETag taşıyan katalog yanıtları uygun önbellek kuralına tabidir.

2. Ortamlar ve alan adları

  • Geliştirme, hazırlık ve canlı için ayrı ortamlar kullanıyorsunuz; veriler paylaşılmaz.
  • Her ortamın alan adı panelde tanımlı (Oyun ayarları: ortamlar); izinli Origin listesi budur.
  • İstemci yapılandırmasına doğru ortam kimliği (x-crx-env değeri) konmuş; canlı istemci hazırlık ortamını göstermiyor.
  • Yalnız gereken modüller açık (modüller). Kapalı modül 404 module_disabled döner; açık bıraktığınız her modül saldırı yüzeyidir.
  • Giriş yöntemleri panelde yapılandırılmış (misafir, e-posta, Google); kullanmadığınız yöntem kapalı (Giriş yöntemleri).

3. Anahtarlar ve sırlar

  • Sunucu anahtarları yalnız sunucuda. İstemci paketinde, mobil uygulamada, WebGL derlemesinde, depoda yoktur (güvenlik).
  • Ortam ve hizmet başına ayrı anahtar; anahtarlara son kullanma tarihi verildi.
  • İstemci anahtarı kullanıyorsanız hangi uçları çağırabildiğini bildiğinizi doğruladınız; oyuncu işlemleri oyuncu oturumuyla yapılıyor (uç noktalar).
  • Anahtar döndürme provası yapıldı: ikinci anahtar, dağıtım, eskiyi iptal.
  • Anahtar ve jetonlar günlüklerde yok; Authorization, Cookie ve x-csrf-token süzülüyor.
  • Webhook gizli anahtarı alıcınızda gizli yönetim aracında; kayıtta yalnız bir kez gösterildiği için yedeği var.

4. Tekrar güvenliği ve eşzamanlılık

  • Para, eşya, ödül ve komut gönderen her çağrı Idempotency-Key taşıyor; anahtar bir kez üretilip tekrarlarda aynen kullanılıyor (idempotency).
  • Belirsiz sonuçta (zaman aşımı, ağ kopması) komut yeni anahtarla değil aynı anahtarla ya da sonuç sorgusuyla tamamlanıyor.
  • Paylaşılan kaynak yazan çağrılar If-Match/expectedVersion gönderiyor; 409’da durum yeniden okunuyor.
  • 429, 503 ve ağ hatalarında üstel geri çekilme + sapma (jitter) var; Retry-After dikkate alınıyor (hız sınırları).
  • Hata işleme durum koduna göre; düz metin mesajı ayrıştırılmıyor (hatalar).

5. Oyuncu kimliği

  • Oturum kaybı akışı kurulu: 401 gelince oturum yenileme, olmazsa yeniden giriş; yasaklı hesap için ayrı ekran (oturumlar ve CSRF).
  • Misafir kimliğinin saklama davranışı ve e-posta ya da Google’a yükseltme akışı kuruldu (misafir ilerlemesi yükseltmeyle korunur).
  • Oyun sunucunuz erişim JWT’sini JWKS ile doğruluyor, süre ve ortam alanlarını denetliyor (sunucu doğrulaması).
  • Kimlik hız sınırları (misafir 30/dk, e-posta girişi 5/dk, kayıt 10/dk, IP başına) beklenen lansman trafiğinizi taşıyor; gerekirse yük testi yapıldı.

6. Realtime

  • İstemci SDK’yı kullanıyor ya da protokolü (bilet, Origin, alt protokol) eksiksiz uyguluyor (protokol).
  • Yeniden bağlanma: her bağlantıda yeni bilet, üstel geri çekilme, kalıcı akışlarda son imleçle Join, ResyncRequired’da imleçsiz Join (yeniden bağlanma).
  • Boşta kapanma (4100) için “Devam et” ekranı var; duraklatma ekranlarında canlı tutma girdisi gönderiliyor.
  • Çerçeve hızı 40/sn altında; oyuncu başına 4 sekme/soket sınırı biliniyor.
  • Bildirim ve sohbet soketleri tarayıcıdan doğrudan açılamaz (başlık kısıtı); gelen kutusu yoklaması ya da REST uçları kullanılıyor (realtime genel bakış).

7. Eklentiler

  • Kullandığınız eklentinin şema özeti (schemaSha256) sürüm manifestinize yazılı ve bağlamalar bu özetle üretildi (bağlamalar).
  • Sunucu güncellemesinden sonra özet karşılaştırması (başlangıçta ya da CI’da) yapılıyor.
  • Eklentinin ortamdaki durumu etkin (Eklentiler); beklenmedik 403 forbidden için ilk bakılacak yer burasıdır.
  • Deprecation başlığı taşıyan çağrılar için geçiş işi açıldı (sürümleme).

8. Webhook’lar

  • Uç nokta https; imza her istekte doğrulanıyor, zaman damgası penceresi denetleniyor, X-Crx-Event-Id ile tekilleştirme yapılıyor (güvenlik).
  • Alıcı hızlı 2xx döner (işi kuyruğa alır); 10 deneme sonunda failed (DLQ) olan teslimatlar için izleme planı var (Webhook ve olay kuyruğu yalnız izleme sunar, yeniden gönderme yoktur); kaçırılan olayları ilgili kaynağı REST ile okuyarak telafi eden bir yolunuz var.

9. Gözlem ve işletme

  • İstek günlüğünüzde durum kodu, süre, çağrılan yol ve (eklenti uçlarında) x-request-id var; gizli değerler yok.
  • 5xx ve 429 oranı için uyarınız var; 503 + Retry-After yanıtlarının yeniden denendiği doğrulandı.
  • Panel yönetici hesapları kişiye özel, iki aşamalı doğrulama açık (Panel yöneticileri).
  • İşlem geçmişi düzenli gözden geçiriliyor; güvenlik şalterleri varsayılan konumunda (bilerek değiştirdiyseniz gerekçesi kayıtlı).
  • SDK sürümü tam sabitlenmiş (^ yok); yükseltmeler değişiklik günlüğünden izleniyor (sürümleme).

10. Lansman öncesi son deneme

  1. Canlı ortama benzer bir hazırlık ortamında uçtan uca akışı koşun: giriş, ödül, satın alma, soket bağlantısı, bağlantı kopması ve yeniden bağlanma.
  2. Bilerek Idempotency-Key ile aynı isteği iki kez gönderin; ikinci yanıtın aynı sonucu döndüğünü doğrulayın.
  3. Sunucu anahtarını bir kez iptal edin ve ikinci anahtara geçişi gözlemleyin.
  4. Webhook alıcınıza hatalı imzayla bir istek gönderin; reddettiğini doğrulayın.
  5. Kimlik uçlarında lansman trafiğinizi taklit eden bir deneme yapın; 429 oranına bakın.

Sorun çıkarsa sorun giderme sayfasına bakın.