Serverless (ör. AWS Lambda, Vercel Functions) ile container tabanlı deploy (Cloud Run, ECS, Kubernetes) arasında nasıl seçim yaparsınız?
Cevap
Serverless, altyapıyı tamamen platforma bırakıp istek başına ödeme yapmayı sağlar; container ise çalışma ortamı üzerinde daha fazla kontrol ve öngörülebilir performans verir. Seçim trafik deseni, çalışma süresi ve durum (state) ihtiyacına göre yapılır.
| Kriter | Serverless | Container |
|---|---|---|
| Ölçekleme | Otomatik, sıfıra iner | Otomatik ama ayar gerekir (min/max instance) |
| Maliyet | Düşük/düzensiz trafikte ucuz | Sürekli yüksek trafikte daha ucuz |
| Cold start | Var (yüzlerce ms - birkaç sn) | Yok (sıcak instance'lar varsa) |
| Çalışma süresi | Sınırlı (ör. Lambda 15 dk) | Sınırsız, uzun işler ve WebSocket uygun |
| Bağlantılar | DB bağlantı patlaması riski | Kalıcı connection pool |
| Kontrol | Runtime ve ortam kısıtlı | İstediğiniz binary, dil, OS paketi |
| Vendor lock-in | Daha yüksek | Image taşınabilir |
Pratik karar
- Serverless seçin: düzensiz trafik, webhook işleyicileri, cron işleri, MVP, Next.js API route'ları.
- Container seçin: sürekli trafik, WebSocket/uzun bağlantı, ağır CPU işleri, özel bağımlılıklar (ffmpeg, Chromium), katı latency hedefleri.
- Cloud Run ve Fargate gibi "serverless container" seçenekleri ikisinin ortasıdır: container image verirsiniz, ölçekleme yönetilir.
Serverless'ta dikkat
Her fonksiyon instance'ı kendi DB bağlantısını açar; yüzlerce eşzamanlı çağrı PostgreSQL'in bağlantı limitini aşabilir. Çözüm: RDS Proxy, PgBouncer veya HTTP tabanlı sürücüler (Neon serverless driver). Cold start'ı azaltmak için bundle'ı küçültmek ve provisioned concurrency kullanmak gerekir.
İlgili Bulut & Deploy soruları
- Bulut faturası beklenenden çok yüksek geldi. Maliyeti nasıl analiz eder ve düşürürsünüz?
- Edge function ve edge rendering nedir? Kodu ne zaman edge'de, ne zaman tek bir bölgede (region) çalıştırırsınız?
- Production'daki bir full stack uygulamayı nasıl izlersiniz? Log, metrik, trace ve alarm stratejiniz nedir?
- Veritabanı şema değişikliklerini (migration) kesintisiz (zero-downtime) nasıl deploy edersiniz? Expand-contract nedir?
- Blue-green deployment ile canary deployment arasındaki fark nedir? Rollback nasıl yapılır?
- Uygulamanıza özel bir alan adı bağlayıp HTTPS'i nasıl kurarsınız? A, CNAME kayıtları ve TTL ne işe yarar?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.