Serverless Nedir? Sunucusuz Mimari Başlangıç Rehberi
Serverless, "sunucu yok" demek değildir — sunucu sizin sorununuz olmaktan çıkar. Kod yazarsınız, cloud provider çalıştırır. Sunucu yönetimi, kapasite planlaması ve ölçekleme tamamen provider'ın sorumluluğundadır.
Serverless Tanımı
Serverless computing, geliştiricilerin sunucu yönetimiyle uğraşmadan kod yazıp çalıştırabildiği bir bulut hesaplama modelidir.
İki Ana Kategori
1. Function as a Service (FaaS)
Olay tetiklemeli (event-driven) fonksiyonlar:
// AWS Lambda örneği
exports.handler = async (event) => {
const { userId, action } = JSON.parse(event.body);
if (action === 'sendWelcomeEmail') {
await sendEmail(userId);
return { statusCode: 200, body: 'Email sent' };
}
return { statusCode: 400, body: 'Unknown action' };
};
// Google Cloud Function örneği
exports.processOrder = async (req, res) => {
const order = req.body;
await saveToDatabase(order);
await notifyWarehouse(order);
res.status(200).json({ success: true, orderId: order.id });
};
2. Backend as a Service (BaaS)
Hazır backend servisleri: Authentication, veritabanı, storage, push notification.
Örnekler: Supabase, Firebase, AWS Amplify
Serverless Çalışma Modeli
Geleneksel: Sunucu 7/24 çalışır (boşta bile kaynak tüketir)
████████████████████████████████████████
Serverless: Sadece istek geldiğinde çalışır
███ ██ ████ ██ ███ █████
istek istek istek istek istek istek
Avantajlar
1. Sıfır Sunucu Yönetimi
OS güncellemesi, güvenlik yaması, kapasite planlama yok.
2. Kullandıkça Öde
Sadece fonksiyonun çalıştığı süre için ödeme yaparsınız. Trafik yoksa maliyet sıfır.
3. Otomatik Ölçekleme
0'dan binlerce eşzamanlı isteğe anında ölçeklenir. Manuel müdahale gerekmez.
4. Hızlı Geliştirme
Altyapı yerine iş mantığına odaklanırsınız.
Dezavantajlar
1. Cold Start
İlk istek yavaş olabilir (100ms-3s). Fonksiyon uzun süredir çağrılmadıysa container'ın başlatılması gerekir.
2. Vendor Lock-in
AWS Lambda'dan Google Cloud Functions'a geçiş kolay değildir.
3. Execution Limitleri
- Maksimum çalışma süresi (Lambda: 15 dk)
- Payload boyutu limitleri
- Eşzamanlılık limitleri
4. Debugging Zorluğu
Yerel ortamda test etmek ve hata ayıklamak zordur.
5. Maliyet Öngörüsüzlüğü
Trafik patlaması beklenmedik maliyetler yaratabilir.
Serverless Provider'lar
| Provider | FaaS | BaaS | |----------|------|------| | AWS | Lambda | Amplify, DynamoDB | | Google Cloud | Cloud Functions | Firebase, Cloud Run | | Azure | Azure Functions | Static Web Apps | | Cloudflare | Workers | R2, D1, KV | | Vercel | Edge Functions | — |
Ne Zaman Serverless Kullanmalı?
✅ Evet
- Event-driven iş yükleri (dosya upload, webhook)
- Düzensiz trafik (bazen yoğun, bazen boş)
- Hızlı prototipleme ve MVP
- API backend'leri
- Zamanlı görevler (cron jobs)
❌ Hayır
- Sürekli çalışan iş yükleri
- WebSocket bağlantıları (uzun süreli)
- Düşük gecikme gerektiren (< 10ms)
- Karmaşık state yönetimi
- GPU/ML inference
BilgeOne Serverless Mimarisi
BilgeOne platformunda serverless kullanımımız:
- Google Cloud Run — Container tabanlı serverless (Next.js)
- Supabase Edge Functions — Webhook işleme
- Supabase Auth — BaaS (kimlik doğrulama)
- Supabase Storage — BaaS (dosya depolama)
Cloud Run'ın avantajı: Container çalıştırdığı için vendor lock-in minimumdur.
Sonuç
Serverless, doğru kullanıldığında geliştirme hızını ve maliyet verimliliğini dramatik olarak artırır. Ancak her iş yükü serverless'a uygun değildir. Projenizin gereksinimlerini değerlendirin ve hybrid yaklaşımı da göz önünde bulundurun.
Serverless ve cloud mimarisi LabLudus DevOps kariyer yolunda pratik olarak öğretiyor.