Localhost'ta kusursuz çalışan bir projenin canlıya çıktığı ilk gece çökmemesi için yayına almadan önce tek tek işaretleyeceğin Production-Ready kontrol listesi.
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.
1. API Güvenliği ve Trafik Kontrolü
Kötü niyetli botların veya hatalı bir istemci döngüsünün sunucunu saniyeler içinde kilitlemesini kapıda engelle.
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.
2. Konfigürasyon ve Ortam Değişkenleri (.env)
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.
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.
3. Merkezi Hata Yönetimi ve Loglama
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.
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.
4. Veritabanı, Havuz ve Yedekleme Güvenliği
Trafik arttığında ilk darboğaz her zaman veritabanıdır. Bağlantıları, sorguları ve yedekleri yayına çıkmadan güvenceye al.
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.
5. Dağıtım (Deploy), Healthcheck ve Rollback Planı
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.
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.
15 yarım proje yerine canlıya hazır tek bir proje
İster kendi SaaS ürününü yayına alıyor ol, ister iş görüşmesinde GitHub reponu savunuyor ol: Seni diğerlerinden ayıracak olan şey yeni bir framework denemek değil, yazdığın kodu canlı ortamın gerçeklerine (hız sınırı, ortam doğrulaması, hata maskeleme, sağlık kontrolü ve geri dönüş planı) hazırlamaktır.