Kendi bilgisayarında tek başına test ederken her şey ışık hızında ve hatasız çalışır. Ancak projeyi gerçek kullanıcıların, botların ve kesintili ağların olduğu canlı ortama (production) aldığında kurallar tamamen değişir.
Bu interaktif kontrol listesi 'Projeyi Canlıya Çıkmadan Önce Kontrol Listesi (Production-Ready)' videosunun devamı. Projendeki her katmanı yayına çıkmadan önce buradan tek tek kontrol et, detaylarını açıp incele ve tamamladığın maddeleri işaretle; ilerlemen tarayıcında otomatik kaydedilir.
Bir konuya tıkla: ne bilmen gerektiği ve kaynaklar açılır.
Kötü niyetli botların veya hatalı bir istemci döngüsünün sunucunu saniyeler içinde kilitlemesini kapıda engelle.
Eksik bir API anahtarının gece yarısı ödeme adımında patlamasını önlemek için tüm ayarları uygulama kalkarken doğrula.
Kullanıcıya asla iç sistem detaylarını sızdırma; ama bir sorun olduğunda 30 saniyede kök nedeni bulacak kadar net log tut.
Trafik arttığında ilk darboğaz her zaman veritabanıdır. Bağlantıları, sorguları ve yedekleri yayına çıkmadan güvenceye al.
Kodu canlıya insan eli değmeden al ve işler ters giderse 60 saniye içinde önceki çalışan sürüme dönebileceğinden emin ol.
Haritadaki her konunun açıklaması, bilmen gerekenler ve kaynaklar — tek listede.
Hiçbir API ucu sınırsız bırakılmaz. Tek bir kullanıcının veya botun saniyede binlerce istek atarak veritabanını ve CPU'yu tüketmesini engellemek için hız sınırı koy.
Brute-force şifre denemelerini ve SMS/E-posta gönderim faturasını patlatacak saldırıları engellemek için kimlik doğrulama uçlarına çok daha düşük limitler uygula.
Basit bir JSON ucuna 500 MB veri gönderilerek sunucu RAM'inin şişirilmesini (Out of Memory) önlemek için maksimum gövde boyutu belirle.
İstemciden gelen hiçbir veriye güvenme. Tüm parametreleri tip ve sınır kontrolünden geçir; tarayıcı güvenlik başlıklarını sıkılaştır.
Kullanıcı 'Öde' veya 'Sipariş Ver' butonuna ağ gecikmesi yüzünden üst üste bastığında işlemin yalnızca bir kez gerçekleşmesini garanti altına al.
Uygulama ayağa kalkarken tüm zorunlu ortam değişkenlerini şema ile kontrol et. Tek bir değişken bile eksikse sunucu hiç başlamasın ve hangi değişkenin eksik olduğunu açıkça yazsın.
Lokal geliştirme ortamında canlı veritabanı veya canlı ödeme (Stripe/Iyzico) anahtarlarının kullanılmadığından emin ol.
Beklenmeyen bir veritabanı veya kod hatası oluştuğunda kullanıcıya tablo adlarını ve dosya yollarını içeren ham stack trace dönme. Standart ve güvenli bir hata mesajı ilet.
Canlıda rastgele console.log yerine aranabilir JSON log (Pino / Winston) kullan ve loglara şifre, token veya kredi kartı numarası düşmediğinden emin ol.
Her istekte yeni veritabanı bağlantısı açmak sunucuyu kilitler. Sabit boyutlu bir Connection Pool kullan ve yanıt vermeyen sorgular ya da dış API'ler için mutlaka zaman aşımı (timeout) tanımla.
WHERE, JOIN ve ORDER BY içinde kullanılan sütunlarda indeks olduğundan ve listeleme uçlarında döngü içinde 50 ayrı sorgu (N+1) atılmadığından emin ol.
Geri yüklenemeyen yedek, yedek değildir. Otomatik günlük veritabanı yedeğini aktif et ve canlıya çıkmadan önce en az bir kez yedeği farklı bir veritabanına dönmeyi test et.
Sadece '200 OK' dönen sahte bir uç yerine, veritabanı ve Redis bağlantısını gerçekten yoklayan bir `/health` ucu kur; böylece Load Balancer bozuk konteynere trafik göndermez.
Canlı sunucuya SSH ile bağlanıp elle git pull yapma. GitHub Actions ile test + build sürecini otomatikleştir ve hatalı sürümde tek tıkla önceki Docker imajına dön.