Geleneksel sunucu yönetimini minimize etmek ve yazılım geliştiricilere esneklik sağlamak amacıyla geliştirilen “Serverless” mimarisi, bulut tabanlı altyapılarda hızla benimsenmektedir. Peki, kendi Cloud Server altyapınız üzerinde “serverless” bir modeli test etmek mümkün mü? Bu yazıda, serverless mimarinin temelini, nasıl test edileceğini ve elde edilen performans metriklerini ele alacağız.
Serverless Nedir?
Serverless, aslında “sunucusuz” demek değildir. Buradaki temel fikir, altyapı yönetiminin geliştiricilerden tamamen soyutlanmasıdır. Uygulamalar, event’lere dayalı olarak çalıştırılır ve sadece ihtiyaç duyulan süre boyunca çalışır. Böylece sürekli çalışan bir sunucuya gerek kalmaz.
Başlıca Serverless sağlayıcıları arasında AWS Lambda, Google Cloud Functions ve Azure Functions bulunur. Ancak bu servisler büyük ölçekli cloud platformlara bağlıdır. Biz bu yazıda, kendi bağımsız Cloud Server’ımızda serverless modelini test edeceğiz.
Kendi Cloud Server’ınızda Serverless Mimari Testi Nasıl Yapılır?
1. Test Ortamının Oluşturulması
Aşağıdaki yapıyı kullanacağız:
- Cloud Server: Ubuntu 22.04 (4 vCPU, 8 GB RAM)
- Runtime Ortamı: Docker + OpenFaaS
- Kod Dili: Python ve Node.js
- Gateway: Traefik (Opsiyonel)
- İzleme: Prometheus + Grafana
2. OpenFaaS Kurulumu (Docker Tabanlı)
git clone https://github.com/openfaas/faas
cd faas
./deploy_stack.sh
3. Örnek Bir Fonksiyon Ekleyin
faas-cli new hello-python --lang python
cd hello-python
# Python kodunu yazın ve deploy edin
faas-cli up -f hello-python.yml
4. Test Senaryoları
- Soğuk Başlatma (Cold Start): 20 saniyede bir çağrı ile fonksiyonun yeniden uyanma süresi ölçüldü.
- Yoğunluk Testi: Apache Bench ile 1000 istek / 10 concurrency ile baskı testi yapıldı.
- Kaynak Kullanımı: CPU ve bellek tüketimi Grafana üzerinden izlendi.
- Yanıt Süresi (Latency): Prometheus ile her istek süresi loglandı.
Elde Edilen Bulgular
Test Adımı | Ortalama Yanıt Süresi | CPU Kullanımı | RAM Kullanımı |
---|---|---|---|
Soğuk Başlatma | ~350ms | Düşük | Orta |
Yoğunluk Testi | ~90ms | Yüksek (pik) | Stabil |
Devamlı Çağrı Testi | ~45ms | Orta | Düşük |
Notlar:
- İlk çağrılarda gecikme kaçınılmaz.
- Auto-scaling yapılandırması ile 3 kopyaya kadar scale edildi.
- Fonksiyonların hafif olması (örneğin: JSON dönüşleri) performansı önemli ölçüde artırdı.
Avantajlar ve Sınırlamalar
Avantajlar:
- Geliştiriciye sadece fonksiyona odaklanma imkanı sunar.
- Kaynak tüketimi çok daha verimli.
- Geleneksel web server yapılarına kıyasla daha hızlı dağıtım sağlar.
Sınırlamalar:
- Kendi Cloud Server üzerinde yapılandırma karmaşık olabilir.
- Soğuk başlatma problemleri optimizasyon gerektirir.
- Ağ gecikmeleri centralized sistemlere göre biraz daha yüksektir.
Kimler Kullanmalı?
- Aralıklı çalışan görevler (ör. webhook işleyiciler)
- Zamanlanmış cron iş yükleri
- Yüksek ölçeklenebilirlik gerektiren mikro hizmetler
- Düşük maliyetli, olay tabanlı mimari isteyen geliştiriciler
Alternatif Çözümler
- OpenFaaS
- Kubeless (Kubernetes tabanlı)
- Knative
- Fission
- Fn Project (Oracle destekli)
Sonuç
Kendi Cloud Server’ınızda serverless test etmek hem mümkündür hem de gerçekçi bir altyapı simülasyonu sunar. Özellikle container tabanlı çözümlerle bu model, kaynak tasarrufu ve esneklik açısından ciddi avantajlar sağlar. Ancak doğru izleme, kaynak yönetimi ve gateway yapılandırmaları yapılmadan üretime alınması önerilmez.