Serverless vs Konteyner: Hangi İş Yükü Nereye Gider
Serverless ve konteyner, bulut üzerinde kod çalıştırmanın iki farklı yoludur. Hangisini seçeceğin, iş yükünün özelliğine bağlı.
Serverless nedir?
Serverless'ta (AWS Lambda, Azure Functions, Google Cloud Functions) kodu yazıp yüklersin, altyapı hakkında düşünmezsin. Sistem otomatik ölçeklenir, sadece çalıştığı saniye için ödeme yaparsın. Başlangıç süresi (cold start) olabilir; ilk çağrıda 1-2 saniye bekleyebilirsin.
Konteyner'de (Docker, Kubernetes) uygulamanı bir kutuya (image) koyarsın. Bu kutu her yerde aynı şekilde çalışır. Altyapıyı yönetmen gerekir, ama daha fazla kontrol ve öngörülebilir performans elde edersin.
Seçim kriteri
Serverless seç:
- Düzensiz, ani talep (örn. bir API'ye ayda 5 kez istek)
- Kısa süreli işler (veri işleme, mail gönderme)
- Maliyet önemli ve kullanım öngörülemez
- Altyapı yönetmek istemiyor
Konteyner seç:
- Sürekli çalışan uygulama (web sitesi, veritabanı)
- Tahmin edilebilir, düzenli trafik
- Uzun süreli işler (saatler, günler)
- Özel konfigürasyon, bağımlılık kontrol gerekli
- Maliyeti daha düşük tutmak istiyorsan (aylık sabit ödeme)
Pratik örnek: Sipariş bildirimi
Bir e-ticaret sitesinde sipariş geldiğinde müşteriye SMS gönder.
Serverless çözüm (AWS Lambda):
1import boto323sns = boto3.client('sns')45def lambda_handler(event, context):6order_id = event['order_id']7phone = event['phone']89message = f"Siparişiniz {order_id} alındı."10sns.publish(PhoneNumber=phone, Message=message)1112return {'statusCode': 200, 'body': 'SMS gönderildi'}Bu kod, sipariş her geldiğinde tetiklenir. Yoğun olmayan zamanlar hiç çalışmaz, ücret yoktur.
Konteyner çözüm (Docker + Kubernetes):
1# Dockerfile2FROM python:3.93WORKDIR /app4COPY requirements.txt.5RUN pip install -r requirements.txt6COPY app.py.7CMD ["python", "app.py"]Bu durumda bir pod (konteyner örneği) her zaman çalışır, sipariş kuyruğu dinler. Sabit maliyet, garantili yanıt.
Özet
Serverless: Ölçeklenebilir, ucuz, ama kısa işler için. Konteyner: Kontrollü, öngörülebilir, uzun çalışan sistemler için. Çoğu zaman ikisini birlikte kullanırsın; Lambda ani talep için, Kubernetes merkezi uygulamalar için.
0 yorum