Sunucusuz mimari (serverless), bulut bilişim dünyasında son yılların en popüler yaklaşımlarından biri haline geldi. Peki bu mimari tam olarak nedir, hangi durumlarda kullanılmalı ve nelere dikkat edilmeli? Bu yazıda serverless hakkında merak edilen tüm soruları yanıtlıyoruz.
Sunucusuz Mimari (Serverless) Nedir?
Sunucusuz mimari, uygulama geliştiricilerinin sunucu altyapısını yönetmek zorunda kalmadan kod çalıştırmasına olanak tanıyan bir bulut bilişim modelidir. Adında "sunucusuz" geçse de aslında sunucular hâlâ vardır; ancak bunların sağlanması, ölçeklenmesi ve bakımı tamamen bulut sağlayıcısı tarafından üstlenilir. Geliştirici yalnızca kod yazar ve belirli olaylar (HTTP isteği, veritabanı değişikliği, dosya yükleme vb.) tetiklendiğinde bu kod parçacıkları (functions) çalıştırılır.
Serverless'ın temel bileşeni FaaS (Function as a Service)'tir. AWS Lambda, Azure Functions ve Google Cloud Functions en yaygın örneklerdir. Bunun yanında Backend as a Service (BaaS) çözümleri de (örneğin Firebase, AWS Amplify) sunucusuz mimari kapsamında değerlendirilebilir.
Serverless’ın Avantajları Nelerdir?
- Altyapı Yönetimi Yok: Sunucu kurulumu, güncellemesi, yedeklemesi gibi işlemler bulut sağlayıcısına bırakılır. Geliştirici sadece uygulama mantığına odaklanır.
- Otomatik Ölçeklenme: Trafik arttığında otomatik olarak yeni fonksiyon örnekleri başlatılır; talep düştüğünde kaynaklar serbest bırakılır. Kullanıcı müdahalesi gerekmez.
- Ödeme Yalnızca Kullanım Kadar: Sunucusuzda yalnızca kodunuzun çalıştığı süre ve kullandığı kaynaklar kadar ödeme yaparsınız. Boşta bekleyen sunucu maliyeti yoktur.
- Hızlı Dağıtım: Küçük kod parçalarının dağıtımı saniyeler içinde tamamlanabilir, bu da CI/CD süreçlerini hızlandırır.
Serverless’ın Dezavantajları ve Sınırlamaları
- Soğuk Başlangıç (Cold Start): Fonksiyon uzun süre kullanılmazsa ilk istekte başlatma gecikmesi yaşanabilir. Bu gecikme genellikle milisaniyelerle ifade edilse de gerçek zamanlı uygulamalarda sorun yaratabilir.
- Çalışma Süresi Sınırı: AWS Lambda'da maksimum 15 dakika, Azure ve Google'da da benzer sınırlamalar vardır. Uzun süreli işlemler için uygun değildir.
- Durum Yönetimi Zorluğu: Sunucusuz fonksiyonlar durumsuz (stateless) olarak tasarlanır. Oturum bilgisi gibi kalıcı veriler harici veritabanlarında (örneğin DynamoDB, Firestore) tutulmalıdır.
- Bağımlılık ve Kilitlenme: Her bulut sağlayıcısının kendine özgü API ve hizmetleri vardır; sunucusuz uygulamalar taşınabilirlik açısından zorluk çıkarabilir.
- Hata Ayıklama ve İzleme: Dağıtık yapı nedeniyle hata ayıklama geleneksel uygulamalara göre daha karmaşıktır. AWS X-Ray, Azure Monitor gibi araçlar kullanılmalıdır.
Sunucusuz Mimari Ne Zaman Kullanılmalıdır?
Serverless her proje için uygun değildir. Aşağıdaki durumlarda tercih edilmelidir:
- Değişken Trafik: Uygulamanızın talebi öngörülemiyorsa, ani yükselişler olabiliyorsa (örneğin bir kampanya sitesi veya API) serverless otomatik ölçeklenme sayesinde ideal bir çözümdür.
- Prototip ve MVP Geliştirme: Hızlıca fikir test etmek ve pazara çıkmak için sunucusuz mimari altyapı maliyetlerini düşürür ve geliştirme süresini kısaltır.
- Mikrohizmetler: Küçük, bağımsız hizmetler serverless fonksiyonlar olarak modellenebilir. Her fonksiyon belirli bir olaya yanıt verir.
- Olay Tabanlı İşlemler: Resim yükleme sonrası küçültme, veritabanı değişikliği sonrası bildirim gönderme gibi senaryolar serverless için biçilmiş kaftandır.
- Geçici İş Yükleri: Belirli zamanlarda çalışan batch işler veya scheduled tasks (her gün saat 3'te rapor oluşturma) serverless ile düşük maliyetle çalıştırılabilir.
Serverless Ne Zaman Kullanılmamalıdır?
- Sürekli Yüksek Trafik: Eğer uygulamanız 7/24 yoğun talep alıyorsa, serverless yerine sabit kaynaklar (EC2, VM) daha ekonomik olabilir. Çünkü sürekli çalışan fonksiyonların toplam maliyeti, geleneksel sunucu kirasını aşabilir.
- Uzun Süreli İşlemler: Video kodlama, büyük veri analizi gibi 15 dakikayı aşan işlemler için serverless uygun değildir.
- Düşük Gecikme Gereksinimi: Soğuk başlatma gecikmesinin kabul edilemez olduğu finansal işlemler, oyun sunucuları gibi gerçek zamanlı uygulamalarda geleneksel yaklaşımlar daha iyidir.
- Karmaşık Durum Yönetimi: Uygulama oturum bazlı bir mimariye sahipse ve durum yönetimi harici veritabanlarına taşınamayacak kadar karmaşıksa serverless önerilmez.
Serverless vs. Geleneksel Bulut (IaaS/PaaS) Karşılaştırması
| Özellik | Serverless (FaaS) | Geleneksel (VM/Sanal Makine) |
|---|---|---|
| Altyapı Yönetimi | Yok (bulut sağlayıcıya ait) | Tamamen geliştirici sorumluluğunda |
| Ölçeklenme | Otomatik, anlık | El ile veya otomatik (konfigürasyon gerekir) |
| Fatura Modeli | Çalışma süresi başına | Saatlik/kaynak bazlı (boşta da ödeme) |
| Başlangıç Gecikmesi | Soğuk başlatma riski | Yok (sunucu sürekli açık) |
| İşlem Süresi Sınırı | Var (genelde 15 dk) | Sınır yok |
| Taşınabilirlik | Düşük (vendor lock-in riski) | Yüksek (standart VM imajları) |
Sunucusuz Mimariye Geçerken Nelere Dikkat Edilmelidir?
- Maliyet Hesaplaması: Başlangıçta düşük maliyet avantajı sunsa da yüksek trafikte maliyetler kontrolsüz artabilir. AWS Lambda maliyet hesaplayıcı gibi araçlarla önceden simülasyon yapın.
- Soğuk Başlatma Optimizasyonu: Düzenli istek göndererek fonksiyonları sıcak tutma stratejisi (örneğin CloudWatch Events ile periyodik trigger) veya Provisioned Concurrency (AWS) kullanılabilir.
- Güvenlik: Fonksiyonların doğru IAM rolleriyle yetkilendirildiğinden emin olun. En az yetki prensibini uygulayın.
- İzleme ve Loglama: AWS X-Ray, Azure Monitor gibi hizmetlerle fonksiyon performansını ve hatalarını izleyin. CloudWatch Logs veya Log Analytics kullanarak logları merkezileştirin.
- Vendor Lock-In: Mümkün olduğunca sağlayıcıya özel özellikler kullanmaktan kaçının. Serverless Framework, Terraform gibi araçlarla çoklu bulut desteği planlayın.
Sıkça Sorulan Sorular
Soru: Serverless gerçekten sunucusuz mu?
Cevap: Hayır, sunucular arka planda hâlâ çalışır, ancak geliştirici bu sunucuları görmez, yönetmez. Bulut sağlayıcısı tarafından tam yönetilir.
Soru: Serverless ile web sitesi kurulabilir mi?
Cevap: Evet, statik web siteleri için AWS S3 + CloudFront + Lambda Edge veya Azure Static Web Apps gibi çözümler kullanılabilir. Dinamik içerik için ise fonksiyonlar API Gateway ile birleştirilir.
Soru: Serverless mı yoksa Kubernetes mi daha iyi?
Cevap: İkisi farklı ihtiyaçlara hitap eder. Kubernetes daha karmaşık, uzun süreli ve yüksek trafikli uygulamalar için uygunken, sunucusuz basit, olay tabanlı ve hızlı geliştirme gerektiren projelerde avantaj sağlar.
Soru: Serverless veritabanı kullanılabilir mi?
Cevap: Evet, AWS DynamoDB, Azure Cosmos DB gibi NoSQL veritabanları serverless uygulamalarla sıkça kullanılır. Ayrıca AWS Aurora Serverless veya Azure SQL Serverless gibi ilişkisel seçenekler de mevcuttur.
Sık Sorulan Sorular
Serverless (sunucusuz) mimari tam olarak nedir?
Serverless, geliştiricilerin sunucu altyapısını yönetmeden kod çalıştırmasına olanak tanıyan bulut modelidir. Bulut sağlayıcısı sunucuların bakımını, ölçeklenmesini üstlenir; kullanıcı yalnızca fonksiyonlarını yazar ve tetikleyici olaylar tanımlar.
Serverless ne zaman kullanılmalıdır?
Değişken trafikli uygulamalar, prototip geliştirme, olay tabanlı işlemler, mikrohizmetler ve geçici batch işleri için idealdir. Sürekli yüksek trafik veya uzun süreli işlemlerde önerilmez.
Serverless'ın en büyük dezavantajı nedir?
Soğuk başlatma gecikmesi ve çalışma süresi sınırı en önemli dezavantajlardır. Ayrıca durum yönetimi zorluğu ve satıcıya bağımlılık riski de bulunur.
Serverless ile geleneksel bulut arasındaki fark nedir?
Serverless'ta altyapı yönetimi yoktur, ölçeklenme otomatiktir ve yalnızca kullanım kadar ödeme yapılır. Geleneksel bulutta ise sunucuları kendiniz yönetir, boşta da ödeme yaparsınız.
Hangi bulut sağlayıcıları serverless hizmet sunar?
AWS Lambda, Azure Functions, Google Cloud Functions en popüler FaaS ürünleridir. Ayrıca IBM Cloud Functions, Alibaba Cloud Function Compute gibi alternatifler de mevcuttur.
