Serverless Nedir? Tanımı, Nasıl Çalışır ve Kullanım Alanları
Serverless, geliştirici tarafından sunucu yönetimi yapılmadan uygulamaların çalıştırılmasını sağlayan bulut mimarisidir. Kod parçaları (function) tetikleyici tarafından çalıştırılır ve sadece kullanım süresi kadar ücret alınır. AWS Lambda, Google Cloud Functions gibi hizmetler bu modeli sunmaktadır.
Serverless, sunucu altyapısının yönetimi sorumluluğunu bulut sağlayıcısına devreden, tamamen olay tabanlı (event-driven) bir bilişim mimarisidir. Geliştirici kod yazarken sunucu kurulumu, ölçeklendirme veya bakımından endişe etmez. Kod parçaları (function) belirli bir tetikleyici tarafından çalıştırılır ve yalnızca çalışma süresi kadar ücretlendirilir. AWS Lambda, Google Cloud Functions, Microsoft Azure Functions ve IBM Cloud Functions bu modelin en yaygın örnekleridir.
Serverless Nasıl Çalışır?
Serverless mimarisi beş adımda çalışır:
- Kod yazma ve yükleme: Geliştirici belirli bir işlevi yerine getiren kod dosyasını (genellikle Python, Node.js, Java veya Go gibi dillerinde) bulut platformuna yükler.
- Tetikleyici tanımlama: Fonksiyonun ne zaman çalışacağını belirleyen tetikleyici ayarlanır. Bu HTTP istek, veritabanı güncellemesi, dosya yüklemesi, zamanlı olay (cron) veya mesaj kuyruğu olabilir.
- Bulut altyapısının hazırlanması: Bulut sağlayıcı, kodu çalıştırmak için gerekli kaynakları (konteyner, CPU, bellek) otomatik olarak oluşturur.
- Fonksiyonun tetiklenmesi ve çalışması: Belirtilen olay oluştuğunda, fonksiyon anında çalıştırılır, işlemi tamamlar ve sonucu döndürür.
- Kaynak temizliği ve ücretlendirme: Fonksiyon tamamlandıktan hemen sonra kaynaklar serbest bırakılır. Fatura yalnızca çalışma süresi ve bellek kullanımına göre hazırlanır.
Serverless'in Avantajları
- Altyapı yönetimi sorumluluğu yok: Sunucu kurulumu, güncelleme ve bakımından geliştirici sorumlu değildir.
- Maliyet verimliliği: Ödeme sadece kullanım süresine bağlıdır. Boş kaynak ücretlendirilmez.
- Otomatik ölçeklendirme: Talep arttığında sistem otomatik olarak kapasiteyi artırır; talep azaldığında kaynaklar düşürülür.
- Hızlı dağıtım: Kod yüklendikten dakikalar içinde canlı ortamda çalışır. Deployment süresi kısaldır.
- Yüksek kullanılabilirlik: Bulut sağlayıcı, yedeklilik ve felaket kurtarma mekanizmalarını sağlar.
- Geliştirici odağı: Ekipler altyapı detayı yerine iş mantığına yoğunlaşır.
- Esneklik: Farklı diller ve runtime ortamları desteklenir.
Serverless'in Dezavantajları
- Soğuk başlangıç (Cold Start) sorunu: Uzun süre kullanılmayan fonksiyon ilk çalıştırıldığında gecikme yaşanabilir.
- Kaynak sınırlama: Her fonksiyon için bellek, CPU ve zaman sınırları önceden tanımlanmıştır. Karmaşık işler için uygun olmayabilir.
- Durum yönetimi zorlukları: Serverless fonksiyonlar stateless (durumsuz) tasarlanmıştır. Veri tutarlılığı için harici depolama gerekir.
- Hata ayıklama güçlüğü: Lokal ortamda tam test etmek zordur. Bulut ortamı ve ürün ortamı farklılıklar gösterebilir.
- Satıcı bağımlılığı (Vendor Lock-in): Bir bulut sağlayıcısında başlanan proje başka platforma taşınması zordur.
- İzleme ve kayıtlama karmaşıklığı: Çok sayıda küçük fonksiyonun kayıtlarını takip etmek karışıklığa yol açabilir.
- Artan maliyet riski: Yanlış ayarlanmış fonksiyonlar sınırsız tetiklemelerle yüksek fatura oluşturabilir.
Serverless Nerede Kullanılır?
Serverless mimarisi, aşağıdaki kullanım senaryolarında idealdır:
- Web uygulamaları ve API'ler: RESTful API'ler, GraphQL uç noktaları ve dinamik web sayfaları.
- Dosya işleme: Resim yeniden boyutlandırma, PDF dönüştürme, video transkodlama.
- Veritabanı tetikleyicileri: Veri değiştiğinde otomatik işlemler (örneğin: yeni sipariş oluştuğunda email gönderme).
- Zamanlı görevler (Cron jobs): Periyodik veritabanı yedekleme, raporlama, veri temizleme.
- IoT ve sensör işleme: Milyonlarca sensörden gelen verilerin gerçek zamanlı işlenmesi.
- Makine öğrenmesi modeli sunumu: Eğitilmiş modelleri API aracılığıyla sunma.
- İçerik dönüştürme: Görüntü filtreleme, watermark ekleme, metin analizi.
- Mesaj kuyruğu işleme: Asenkron işlemler, event stream işleme.
- Chatbot ve sanal asistan: NLP tabanlı uygulamalar.
- Mobil uygulama backend'i: Hafif, event-driven backend hizmetleri.
Serverless Türleri
Serverless mimarisi, sunulan hizmet türüne göre kategorize edilir:
| Tür | Tanım | Örnekler |
|---|---|---|
| Function as a Service (FaaS) | Tek bir görev yapan stateless fonksiyonların çalıştırılması | AWS Lambda, Google Cloud Functions, Azure Functions |
| Backend as a Service (BaaS) | Kimlik doğrulama, veritabanı, dosya depolama gibi backend hizmetlerinin sunulması | Firebase, Supabase, AWS Amplify |
| Database as a Service (DBaaS) | Serverless veritabanı hizmetleri (ölçeklendirme otomatik) | AWS DynamoDB, Google Firestore, Azure Cosmos DB |
| API Gateway | API oluşturma ve yönetme (serverless fonksiyonlara çağrı yönlendirme) | AWS API Gateway, Google Cloud Endpoints |
| Containers as a Service (CaaS) | Konteyner çalıştırma (sunucu yönetimsiz) | AWS Fargate, Google Cloud Run |
Serverless'in Tarihçesi
2014: AWS Lambda piyasaya sürüldü ve FaaS konseptini popüler hale getirdi.
2015: Google Cloud Functions ve Microsoft Azure Functions çıkış yaptı.
2016: Firebase, serverless backend hizmetini yaygınlaştırdı.
2018: Open-source serverless platformlar (Kubernetes-based, Open Faas, Knative) ortaya çıktı.
2020 ve sonrası: Serverless, microservice mimarisi ile birleştirildi ve edge computing ile entegre edilmeye başlandı.
Serverless vs. Diğer Mimariler
| Özellik | Serverless | Konteyner (Docker) | Sanal Sunucu (VM) |
|---|---|---|---|
| Sunucu yönetimi | Yok | Kısmen (orkestrasyon gerekli) | Tam sorumluluk |
| Ölçeklendirme | Otomatik ve anlık | Manuel veya dinamik | Manuel veya yavaş |
| Maliyet modeli | Kullanım-tabanlı | Kaynak-tabanlı | Sabit veya saat-tabanlı |
| Başlangıç süresi | Milisaniye-saniye | Saniye | Dakika |
| Durum yönetimi | Stateless | Stateful olabilir | Stateful olabilir |
| Karmaşık işler | Sınırlı (timeout, bellek var) | Uygun | Uygun |
"Serverless'in geleceği, geliştirici deneyimi ve maliyet tasarrufu arasındaki dengenin optimizasyonuna bağlıdır. Soğuk başlangıç ve kaynak sınırlamaları çözüldüğünde, serverless mimarisi kurumsal uygulamalara tamamen hakim olacak." — Cloud Architecture Trends Report 2024
Serverless Kullanırken Best Practices
- Fonksiyonları küçük ve odaklı tutun