📝 BLOG

Serverless Mimarisi: AWS Lambda, Vercel ve Cloud Functions

Serverless (sunucusuz) mimari, sunucu yönetimi olmadan kod çalıştırmanızı sağlar. Bu rehberde serverless kavramlarını, AWS Lambda, Vercel ve Cloud Functions kullanımını anlatıyoruz.

Son güncelleme:

Hazırlayan: Gsetsoft

Serverless Mimarisi: AWS Lambda, Vercel ve Cloud Functions

Serverless Nedir?

Serverless, sunucu yönetimi olmadan kod çalıştırmanızı sağlayan bir cloud computing modelidir. Sunucular hala var ama siz yönetmezsiniz.

FaaS (Function as a Service): Kodunuzu fonksiyon olarak deploy edersiniz. Cloud provider, fonksiyonu istek geldiğinde çalıştırır ve sonuç döner.

BaaS (Backend as a Service): Veritabanı, authentication, storage gibi backend servislerini managed olarak kullanırsınız. Firebase, Supabase gibi.

Avantajlar: Sunucu yönetimi yok, otomatik ölçekleme, pay-per-use (kullanım başına ödeme), sıfır idle maliyet.

AWS Lambda

AWS Lambda, AWS'nin serverless compute servisidir. Node.js, Python, Java, Go, .NET, Ruby runtime'larını destekler.

Handler: Fonksiyonun giriş noktası. exports.handler = async (event, context) => { ... } şeklinde tanımlanır.

Trigger: Lambda fonksiyonunu tetikleyen olaylar. API Gateway (HTTP), S3 (dosya yükleme), DynamoDB (veri değişikliği), SQS (mesaj kuyruğu).

Cold start: İlk çağrıda fonksiyonun başlatılması gerekir. Bu, 100ms-1s gecikme oluşturur. Provisioned concurrency ile cold start'ı azaltabilirsiniz.

Limits: Maksimum 15 dakika execution time, 10 GB memory, 10 GB ephemeral storage. Timeout ve memory ayarlarını optimize edin.

Vercel ve Netlify

Vercel: Next.js, Nuxt, SvelteKit gibi framework'ler için optimize edilmiş serverless platform. Edge Functions ve Serverless Functions desteği.

Netlify: Static site hosting + serverless functions. Netlify Functions (AWS Lambda tabanlı) ile backend logic ekleyin.

Edge Functions: Cloudflare Workers veya Vercel Edge Runtime ile edge'de çalışan fonksiyonlar. Ultra düşük latency.

Avantajlar: Git push ile otomatik deploy, preview deployments, global CDN, otomatik HTTPS. Developer experience çok iyi.

Kullanım: JAMstack uygulamaları, API endpoints, form handling, image optimization, authentication.

Cold Start ve Performans

Cold start: Fonksiyon ilk çağrıldığında container başlatılır. Bu, latency ekler. Warm function'lar daha hızlıdır.

Azaltma stratejileri: Provisioned concurrency (AWS Lambda), keep-alive (periyodik ping), smaller bundle, faster runtime (Node.js > Java).

Memory optimization: Daha fazla memory = daha fazla CPU. Memory artırarak cold start süresini azaltabilirsiniz.

Connection pooling: Database bağlantılarını fonksiyon dışında (global scope) oluşturun. Her çağrıda yeni bağlantı açmayın.

Monitoring: CloudWatch (AWS), Vercel Analytics ile cold start süresini ve error rate'i izleyin.

Serverless Best Practices

Stateless: Fonksiyonlar stateless olmalı. State'i external storage'da (DynamoDB, Redis) saklayın.

Idempotency: Fonksiyonu birden fazla çalıştırmak aynı sonucu vermeli. Retry ve duplicate event'ler için güvenli olmalı.

Error handling: Hataları yakalayın ve dead letter queue'ya (DLQ) gönderin. Retry mekanizması tanımlayın.

Security: Least privilege IAM roles. Environment variables ile secret yönetimi. Input validation.

Cost optimization: Memory ve timeout'u optimize edin. Gereksiz invocation'ları azaltın. Provisioned concurrency'yi dikkatli kullanın.

Serverless vs Container vs VM

Serverless: Sıfır yönetim, otomatik ölçekleme, pay-per-use. Kısa süreli, event-driven işlemler için ideal.

Container (Docker/K8s): Daha fazla kontrol, uzun süreli işlemler, stateful uygulamalar. Orchestration gerekir.

VM: Tam kontrol, legacy uygulamalar, özel donanım gereksinimleri. En yüksek yönetim maliyeti.

Seçim: Kısa, event-driven işlemler → Serverless. Uzun süreli, stateful uygulamalar → Container. Legacy, özel gereksinimler → VM.

Gizlilik tercihiniz

Temel çerezler güvenli kullanım ve oturum yönetimi içindir. Temel ziyaret sayımı ayrıca yapılır; izin verirseniz ek kullanım analizlerini etkinleştiririz. Çerez Politikası