Aylık taban maliyet ve fatura öngörülebilirliği
Vercel Pro $20/ay + $20 dahil kullanım kredisiyle başlıyor. Taban net ama kredi tükenince fatura değişkenleşiyor: Fast Data Transfer, Edge Request, fonksiyon çağrısı, ISR yazma ve görsel dönüşüm ayrı ayrı işliyor. Vercel'in bot koruması ve AI-bot managed ruleset'leri varsayılan olarak KAPALI geliyor; Spend Management tavanı ise Pro'da var ama harcamayı sürekli değil, birkaç dakikada bir kontrol ediyor. İkisini de bilinçli kurmazsan ani trafik patlamaları faturayı orantısız yükseltebiliyor.
Hetzner VPS'te tablo tersine dönüyor: aylık ücret sabit, dahil trafik kotası aşılmadıkça fatura değişmiyor. Ama dürüst olalım — 2026'da Hetzner iki zam yaptı (1 Nisan, 15 Haziran); dedicated vCPU hatları (CCX/CPX) bazı yapılandırmalarda %100'ün üzerinde arttı, paylaşımlı hatlar (CX/CAX) daha ölçülü (%30-38) geçti. "Sabit ve ucuz" hâlâ doğru ama artık hangi hattı seçtiğine bağlı.
Gizli maliyet kalemi insan-saati: DevOps zamanı zaten var olan bir yetenekse marjinal maliyet düşük, sıfırdan öğrenilecekse gerçek maliyet Vercel'e yaklaşabilir.
Bandwidth, Edge Request ve ISR Write birim fiyatları
Vercel'in resmi bölgesel fiyat tablosu net: Fast Data Transfer'da ilk 1TB dahil, sonrası 1 GB $0.15-$0.35. Fast Origin Transfer'da dahil kota yok — $0.06/GB'tan başlıyor, bölgeye göre $0.43'e çıkıyor. Edge Request ayda 10M dahil, sonrası 1M istek $2.00-$3.20 (fra1: $2.60). ISR'de dahil kota diye bir şey yok: 1M yazma birimi $4.00-$6.40 (fra1: $5.20), 1M okuma birimi $0.40-$0.64. Dikkat et, birim sayfa değil — bir yazma birimi 8 KB veri demek; büyük bir sayfa tek revalidate'te onlarca birim tüketebilir. Fonksiyon çağrısı $0.60/1M, görsel dönüşüm $0.05-$0.0812/1K.
Hetzner + Cloudflare'de tablo farklı: Hetzner sunucu fiyatına dahil bir trafik kotası veriyor — resmi ürün sayfası bunu “cömert dahil trafik, ek veri transferinde çok düşük fiyat” diye anlatıyor; güncel GB rakamını kendi hesabından teyit et. Önüne Cloudflare koyunca statik trafik zaten CDN'den karşılanıyor. ISR-write'ın karşılığı diske yazma: dolar faturası değil, disk I/O.
Kırılma noktası: hacmin dahil kotaların altındaysa fark önemsiz; üstüne çıktıkça Vercel'in faturası büyürken Hetzner sabit kalıyor.
DevOps yükü: sıfır konfigürasyon mu, elle yönetim mi?
Vercel'de deploy git push'tan sonra otomatik: build, TLS, CDN, preview deployment, rollback platform tarafından yönetiliyor. Pricing tablosunda "Automatic CI/CD" ve "Instant Rollback" dahil özellikler.
Hetzner VPS'te bu sorumluluk tamamen sende. Next.js'in resmi self-host dokümanı önüne bir reverse proxy (nginx) koymanı öneriyor — malformed request ve rate-limit koruması sunucu process'inden ayrı tutulmalı. glibc tabanlı Linux'ta Image Optimization'ın aşırı bellek tüketebileceği de resmi dokümanda belirtiliyor.
Somut karşılığı: TLS yenileme, güvenlik güncellemeleri, process yönetimi (systemd), log rotasyonu ve eşzamanlı build'leri önleyecek bir build-lock disiplini. Bu sitenin portfolio-ssr.service kurulumu tam olarak böyle çalışıyor: systemd unit + nginx + Cloudflare + build-lock/RAM-kontrolü/health-retry içeren bir dağıtım scripti. Kurulum gerçek mühendislik zamanı gerektiriyor — çoğu "self-host ucuzdur" makalesinin atladığı maliyet kalemi budur.
ISR, streaming ve Image Optimization: self-host'ta gerçekten ne kaybediyorsun?
Yaygın yanlış anlama: "self-host'a geçersen ISR/Image Optimization/Proxy'yi kaybedersin." Next.js resmi dokümanına göre bu YANLIŞ — Node.js/Docker dağıtımı "tüm özellikleri destekler." Image Optimization ve Proxy next start ile sıfır ek yapılandırmayla çalışıyor.
Gerçek yapısal fark tek bir yerde: ISR cache. Vercel'de takım-paylaşımlı dağıtık bir Data Cache üzerinde çalışıyor. Self-host'ta ise cache varsayılan olarak her sunucu instance'ının yerel disk dosya sistemine yazılıyor. Tek instance'ta (bu projedeki gibi) sorunsuz; çoklu-instance'a geçince her instance kendi cache'ine sahip oluyor, kullanıcılar stale sayfa görebilir — çözüm paylaşımlı bir cache handler (Redis/NFS).
next export ile ISR beklemek de ayrı bir tuzak — export tamamen statik üretir, ISR bu modda çalışmaz. Bu, standalone/Docker yerine yanlış dağıtım modunun getirdiği bir kısıtlama.
Tek-instance kurulumlar için (çoğu portföy/blog/orta ölçekli SaaS) fark pratikte sıfıra yakın; ancak yatay ölçekleme gerektiren sistemlerde gerçek bir mühendislik maliyeti doğuyor.
Build/CI otomasyonu, ölçekleme modeli ve CDN kontrolü
Vercel'de build, CI/CD, preview deployment ve ölçekleme tek pakette. Fluid Compute mimarisi fonksiyonları bölgeye göre Active-CPU + Provisioned-Memory üzerinden faturalıyor (Frankfurt'ta saatlik $0.184 CPU + $0.0152 GB-bellek gibi resmi rakamlar var) — trafik arttıkça kapasite otomatik büyüyor. CDN Vercel'e ait, çok sayıda bölgeyi kapsıyor.
Hetzner VPS'te build/CI kendi kurduğun bir şey (GitHub Actions veya özel script). Ölçekleme otomatik değil, manuel — dikey (sunucu büyütme) veya yatay (load balancer ekleme). Ani trafik patlamalarında dezavantaj; öngörülebilir trafikte israf yok.
CDN tarafında Hetzner + Cloudflare kombinasyonu güçlü bir kontrol sunuyor: cache purge, edge kuralları tamamen senin API token'ında. Bu proje production'da her deploy sonrası otomatik cache purge tetikliyor. Vercel'de esneklik (bölge sayısı, otomatik dağıtım) farklı bir eksende, Cloudflare'in ayrıntılı kural motoru farklı bir eksende kazanıyor.
Veri yerleşimi, KVKK/GDPR, yedekleme ve kesinti disiplini
KVKK/GDPR kapsamındaki bir proje için veri yerleşimi soyut bir kriter değil. Hetzner veri merkezlerini açıkça listeliyor: Almanya (Falkenstein, Nürnberg), Finlandiya (Helsinki), ABD (Hillsboro, Ashburn), 2024'ten beri Singapur. Almanya ve Finlandiya tesisleri ISO/IEC 27001 sertifikalı, şirket Almanya merkezli — verinin nerede durduğunu tam olarak biliyorsun.
Vercel'de statik içerik her planda global CDN'de önbellekleniyor; fonksiyon ve ISR cache bölgesini ise sen seçiyorsun — resmi dokümandaki tabloya göre Hobby tek bölge, Pro 5 bölge, Enterprise tüm bölgeler. Yani bölge seçimi var ama plan başına sayıyla sınırlı.
Yedekleme sorumluluğu her iki modelde de uygulama katmanında sana ait — platform yalnız altyapı garantisi veriyor. Hetzner'de bunu tamamen sen kuruyorsun (bu projede günlük otomatik yedek + aylık restore provası). Kesinti/rollback'te Vercel "Instant Rollback" hazır sunuyor; Hetzner'de karşılığı, build başarısızsa eski sürümü serviste bırakan fail-safe bir deploy disiplini. İkisinin de kendi status sayfası şeffaf, iletişim biçimleri farklı.