Bulut sağlayıcılarının pazarlama departmanları bize yıllardır aynı masalı anlatıyor: "Altyapıyı boşver, sadece koduna odaklan, sadece kullandığın kadar öde." Kulağa harika geliyor, değil mi? Teoride evet. Ama pratikte Serverless, bazen ucu bucağı görünmeyen bir finansal karadelik haline gelebiliyor.
Dürüst olalım; "Pay-as-you-go" modeli, ne yaptığınızı tam olarak bilmiyorsanız "Pay-as-you-panic" modeline çok hızlı evrilir. Gelin, o parlak sunumların arkasındaki gizli maliyetlere ve bu kaostan nasıl sağ çıkacağımıza şüpheci bir gözle bakalım.
1. "Bedava" Diye Bir Şey Yoktur: Görünmez Katiller
Serverless dendiğinde herkesin aklına sadece Execution Time (çalışma süresi) geliyor. "Fonksiyonum 100ms çalıştı, şu kadar kuruş ödedim" diye hesap yapıyorsunuz. Yanılıyorsunuz. Faturayı şişiren asıl kalemler genellikle şunlardır:
- Data Transfer (Egress): Verinin Cloud dışına çıkışı çoğu zaman fonksiyonun kendisinden pahalıdır.
- API Gateway: Lambda veya Azure Functions kapılarını dünyaya açtığınız o "kapı", bazen arkadaki işlem gücünden daha fazla maliyet üretir.
- Logging & Observability: "Her şeyi loglayalım, lazım olur" dediğiniz an yandınız. CloudWatch veya benzeri servislerin Log Ingestion ücretleri, ay sonunda sizi "Keşke bu kadar çok şey bilmeseydim" dedirtecek noktaya getirebilir.
2. Cold Start: Sadece Performans Değil, Para Kaybı
Herkes Cold Start'ın gecikme (latency) sorunundan bahseder. Ama şüpheci bir uzman şunu sorar: "Bu gecikme sırasında ne kadar para kaybediyorum?" Eğer uygulamanız user-facing ise ve o 2 saniyelik gecikme yüzünden kullanıcı sepeti terk ediyorsa, o fonksiyonun maliyeti teknik dökümandaki 0.00001 dolardan çok daha fazladır.
Ölçeklenmek iyidir ama "boşta" duran bir Provisioned Concurrency'nin maliyeti ile geleneksel bir VM maliyeti arasındaki çizgi sandığınızdan daha incedir.
3. Mimari Karar: Ne Zaman Kaçmalı?
Bir noktada durup şunu sormanız gerekiyor: "Biz neden Kubernetes veya bare-metal bir sunucu kullanmıyoruz?" Eğer trafiğiniz stabilse, öngörülebilirse ve 7/24 yüksekse, Serverless sizin için en pahalı tercihtir.
Serverless, spiky (belirsiz ve ani artış gösteren) trafikler için bir nimettir. Ancak sürekli çalışan bir sistemde Serverless kullanmak, her gün işe taksiyle gitmeye benzer. Belli bir noktadan sonra araba satın almak (veya kiralamak) çok daha mantıklıdır.
4. Optimizasyon İçin "Gerçek" Reçete
Peki, cüzdanı nasıl koruruz?
- FinOps Kültürü: Maliyet takibi sadece muhasebenin değil, developer'ın da işidir. Yazdığınız kodun kaç dolara mal olduğunu bilmeden "Senior" olamazsınız.
- Granularity Tuzağı: Uygulamayı binlerce küçük fonksiyona bölmek (Nano-services), yönetim ve iletişim maliyetini arşa çıkarır. Mantıklı gruplandırmalar yapın.
- Timeout Ayarları: Default bırakılan 5 dakikalık timeoutlar tehlikelidir. Hatalı bir loop'a giren fonksiyonun faturasını ödemek istemezsiniz.