Skip to main content
Bulut Bilişim

Serverless Mimari: Sunucusuz Bilişimin Avantajları ve Kullanım Alanları

Mart 14, 2026 7 dk okuma 16 views Raw
Serverless bulut bilişim veri merkezi altyapısı
İçindekiler

Serverless (Sunucusuz) Mimari Nedir?

Serverless mimari, geliştiricilerin sunucu yönetimi, kapasite planlama ve altyapı bakımı ile ilgilenmeden uygulama ve hizmetler geliştirmesini sağlayan bir bulut bilişim modelidir. "Sunucusuz" ifadesi sunucu olmadığı anlamına gelmez; sunucular bulut sağlayıcısı tarafından yönetilir ve geliştiriciler yalnızca iş mantığına odaklanır.

Serverless mimaride uygulama, olaylara yanıt olarak çalışan fonksiyonlardan oluşur. Bir HTTP isteği, veritabanı değişikliği, dosya yükleme veya zamanlayıcı gibi bir olay fonksiyonu tetikler. Fonksiyon çalışır, işini yapar ve sonlanır. Yalnızca fonksiyonun çalıştığı süre için ücret ödersiniz; boşta bekleme maliyeti yoktur.

Serverless mimarinin temel özellikleri şunlardır:

  • Sıfır sunucu yönetimi: Altyapı tamamen sağlayıcı tarafından yönetilir
  • Otomatik ölçekleme: Talebe göre otomatik olarak ölçeklenir
  • Kullanım bazlı fiyatlandırma: Yalnızca çalışma süresi için ödeme yapılır
  • Olay güdümlü: Fonksiyonlar olaylar tarafından tetiklenir
  • Durumsuz: Her fonksiyon çağrısı bağımsızdır

FaaS (Function as a Service) Kavramı

FaaS, serverless mimarinin temel yapı taşıdır. Geliştiriciler tek bir fonksiyon yazar, bu fonksiyonu bulut platformuna yükler ve platform fonksiyonun çalışması için gereken tüm altyapıyı sağlar. FaaS'ın geleneksel bilişim modellerinden farkı, sürekli çalışan bir sunucu yerine yalnızca ihtiyaç duyulduğunda çalışan geçici fonksiyonlar kullanmasıdır.

FaaS'ın Çalışma Prensibi

  1. Geliştirici fonksiyon kodunu yazar
  2. Kodu bulut platformuna yükler ve tetikleyiciyi yapılandırır
  3. Bir olay gerçekleştiğinde platform fonksiyon için bir çalışma ortamı oluşturur
  4. Fonksiyon çalışır ve sonucu döndürür
  5. Çalışma ortamı belirli bir süre sonra sonlandırılır
  6. Faturalama, fonksiyonun çalışma süresi ve kaynak tüketimine göre hesaplanır

Başlıca Serverless Platformları

Üç büyük bulut sağlayıcısının her biri kendi FaaS hizmetini sunmaktadır. Her platformun kendine özgü güçlü yönleri ve sınırlamaları vardır.

AWS Lambda

AWS Lambda, serverless bilişimin öncüsü ve en olgun platformudur. 2014 yılında tanıtılan Lambda, en geniş olay kaynaklarını ve entegrasyonları destekler.

AWS Lambda'nın temel özellikleri:

  • Node.js, Python, Java, C#, Go, Ruby ve özel çalışma zamanlarını destekler
  • Maksimum 15 dakika çalışma süresi
  • 10 GB'a kadar bellek tahsisi
  • 100'den fazla AWS hizmeti ile doğal entegrasyon
  • Lambda@Edge ile CDN üzerinde çalışma imkanı
  • Provisioned Concurrency ile soğuk başlangıç sorununun çözümü
// AWS Lambda fonksiyonu örneği (Node.js)
exports.handler = async (event) => {
    const name = event.queryStringParameters?.name || 'Dünya';

    return {
        statusCode: 200,
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            message: `Merhaba, ${name}!`,
            timestamp: new Date().toISOString()
        })
    };
};

Azure Functions

Azure Functions, Microsoft Azure'un serverless bilişim hizmetidir. .NET ekosistemi ile derin entegrasyonu ve hibrit çalışma seçenekleri ile öne çıkar.

Azure Functions'ın ayırt edici özellikleri:

  • C#, JavaScript, TypeScript, Python, Java, PowerShell destekler
  • Durable Functions ile durum bilgili iş akışları oluşturma
  • Azure Kubernetes Service üzerinde çalıştırabilme (KEDA ile)
  • Yerinde (on-premises) çalıştırma desteği
  • Visual Studio ve VS Code ile güçlü geliştirme deneyimi
  • Consumption, Premium ve Dedicated hosting planları
// Azure Functions örneği (C#)
[FunctionName("MerhabaFonksiyonu")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    ILogger log)
{
    log.LogInformation("HTTP tetikleyici fonksiyonu çalıştırıldı.");

    string name = req.Query["name"];
    name = name ?? "Dünya";

    return new OkObjectResult($"Merhaba, {name}!");
}

Google Cloud Functions

Google Cloud Functions, GCP'nin serverless bilişim hizmetidir. Google'ın küresel altyapısı üzerinde çalışır ve diğer GCP hizmetleri ile sorunsuz entegrasyon sağlar. Cloud Run ile birlikte kullanıldığında konteyner tabanlı serverless uygulamalar da oluşturulabilir.

Olay Güdümlü (Event-Driven) Mimari

Serverless mimari, doğası gereği olay güdümlüdür. Uygulamalar, olaylara tepki veren gevşek bağlı fonksiyonlardan oluşur. Bu yaklaşım, sistemlerin ölçeklenebilirliğini ve esnekliğini artırır.

Yaygın Olay Kaynakları

  • HTTP istekleri: API Gateway üzerinden gelen web istekleri
  • Veritabanı değişiklikleri: DynamoDB Streams, Cosmos DB Change Feed
  • Dosya yükleme: S3, Blob Storage'a dosya yüklendiğinde tetikleme
  • Mesaj kuyrukları: SQS, Azure Service Bus, Pub/Sub mesajları
  • Zamanlayıcılar: Cron benzeri zamanlanmış çalışma
  • IoT olayları: Cihazlardan gelen veri akışları
  • Kimlik doğrulama: Kullanıcı kayıt/giriş olayları

Olay Güdümlü Tasarım Desenleri

Serverless uygulamalar için yaygın kullanılan tasarım desenleri şunlardır:

  • Fan-out/Fan-in: Bir olayı birden fazla fonksiyona dağıtma ve sonuçları birleştirme
  • Saga: Dağıtık işlemleri adım adım yönetme ve hata durumunda telafi etme
  • CQRS: Okuma ve yazma işlemlerini ayrı fonksiyonlarda ele alma
  • Event Sourcing: Durum değişikliklerini olay akışı olarak saklama

Soğuk Başlangıç (Cold Start) Sorunu

Soğuk başlangıç, serverless bilişimin en çok tartışılan konularından biridir. Bir fonksiyon uzun süre çağrılmadığında çalışma ortamı sonlandırılır. Yeni bir istek geldiğinde ortamın yeniden oluşturulması gerekir ve bu süre ek gecikmeye neden olur.

Soğuk Başlangıç Süreleri

Soğuk başlangıç süresi, kullanılan programlama diline ve paket boyutuna göre değişir:

Programlama DiliTipik Soğuk BaşlangıçSıcak Çağrı
Python100-300ms1-5ms
Node.js100-300ms1-5ms
Go50-200ms1-3ms
Java500-3000ms5-20ms
C# (.NET)300-1000ms5-15ms

Soğuk Başlangıcı Azaltma Stratejileri

  • Provisioned Concurrency: Önceden hazır tutulacak fonksiyon örneği sayısını belirleyin
  • Paket boyutunu küçültün: Gereksiz bağımlılıkları kaldırın
  • Hafif diller tercih edin: Python veya Node.js gibi hızlı başlayan dilleri kullanın
  • Bağımlılıkları optimize edin: Lazy loading kullanın, başlangıçta tüm modülleri yüklemeyin
  • SnapStart kullanın: Java fonksiyonları için AWS Lambda SnapStart özelliğini etkinleştirin

Maliyet Modeli

Serverless mimarinin en büyük avantajlarından biri, kullanım bazlı fiyatlandırma modelidir. Geleneksel sunucu modelinde 7/24 çalışan bir sunucu için ödeme yaparsınız; serverless'ta yalnızca fonksiyon çalıştığında ödeme yaparsınız.

Fiyatlandırma Bileşenleri

  • İstek sayısı: Fonksiyona yapılan toplam çağrı sayısı
  • Çalışma süresi: Fonksiyonun çalıştığı süre (genellikle 1ms hassasiyetle)
  • Bellek tahsisi: Fonksiyona ayrılan bellek miktarı
  • Ağ transferi: Giden veri transferi
AWS Lambda ücretsiz katmanı aylık 1 milyon istek ve 400.000 GB-saniye hesaplama süresi sunar. Düşük ve orta ölçekli iş yükleri için bu ücretsiz katman genellikle yeterlidir.

Maliyet Karşılaştırması

Serverless maliyet avantajı, iş yükünün yapısına bağlıdır. Düzensiz ve öngörülemeyen trafik desenleri için serverless genellikle daha ekonomiktir. Ancak sürekli yüksek trafikli uygulamalar için geleneksel veya konteyner tabanlı çözümler daha uygun maliyetli olabilir.

Kullanım Alanları

Serverless mimari, belirli kullanım senaryolarında mükemmel sonuçlar verir.

İdeal Kullanım Alanları

  • API Backend'leri: RESTful ve GraphQL API'leri için serverless backend'ler
  • Veri İşleme: ETL süreçleri, dosya dönüştürme, resim boyutlandırma
  • Bildirim Sistemleri: E-posta, SMS, push bildirim gönderimi
  • IoT Veri İşleme: Cihazlardan gelen verilerin gerçek zamanlı işlenmesi
  • Zamanlanmış Görevler: Raporlama, temizlik, yedekleme görevleri
  • ChatBot'lar: Konuşma tabanlı uygulamalar
  • Webhook İşleme: Üçüncü taraf servislerden gelen webhook'ların işlenmesi

Serverless'ın Uygun Olmadığı Durumlar

  • Uzun süreli işlemler (15 dakikayı aşan)
  • Düşük gecikme gerektiren gerçek zamanlı uygulamalar
  • Yüksek ve sürekli trafik alan uygulamalar
  • WebSocket bağlantıları gerektiren uygulamalar
  • Karmaşık durum yönetimi gerektiren iş yükleri

Serverless Framework ve Araçlar

Serverless uygulamalar geliştirmek ve dağıtmak için çeşitli framework'ler ve araçlar mevcuttur.

Serverless Framework

Serverless Framework, en popüler serverless geliştirme aracıdır. AWS, Azure ve GCP'yi destekler. YAML tabanlı yapılandırma ile fonksiyonlar, olaylar ve kaynaklar tanımlanır.

# serverless.yml
service: my-api

provider:
  name: aws
  runtime: nodejs18.x
  region: eu-west-1

functions:
  getUsers:
    handler: handlers/users.getAll
    events:
      - httpApi:
          path: /users
          method: get

  createUser:
    handler: handlers/users.create
    events:
      - httpApi:
          path: /users
          method: post

  processImage:
    handler: handlers/images.process
    events:
      - s3:
          bucket: uploads
          event: s3:ObjectCreated:*

AWS SAM (Serverless Application Model)

AWS SAM, AWS'ye özgü bir serverless framework'tür. CloudFormation şablonlarını genişleterek serverless kaynakları daha kolay tanımlamanızı sağlar. Yerel geliştirme ve test için SAM CLI aracını sunar.

Terraform ile Serverless

Terraform, altyapı kodlaması aracı olarak serverless kaynakları da yönetebilir. Çoklu bulut ortamlarında tutarlı altyapı yönetimi sağlar.

İzleme ve Hata Ayıklama

Serverless uygulamaların izlenmesi, dağıtık yapıları nedeniyle ek zorluklar içerir. Geleneksel izleme araçları yeterli kalmayabilir.

İzleme Araçları

  • AWS CloudWatch: Lambda fonksiyonları için yerleşik izleme
  • Azure Application Insights: Azure Functions için kapsamlı izleme
  • AWS X-Ray: Dağıtık izleme ve performans analizi
  • Datadog: Çoklu platform serverless izleme
  • Lumigo: Serverless odaklı izleme ve hata ayıklama

İzleme En İyi Uygulamaları

  • Yapılandırılmış loglama kullanın (JSON formatında)
  • Korelasyon ID'leri ile istekleri izleyin
  • Özel metrikler oluşturarak iş mantığını izleyin
  • Soğuk başlangıç sürelerini ve hata oranlarını takip edin
  • Maliyet anomalilerini tespit etmek için alarm kurun

Serverless En İyi Uygulamaları

Serverless mimariden en iyi şekilde yararlanmak için aşağıdaki en iyi uygulamaları takip edin:

  • Fonksiyonları küçük ve odaklı tutun: Her fonksiyon tek bir iş yapmalıdır
  • Bağımlılıkları minimize edin: Paket boyutunu küçük tutun
  • Ortam değişkenlerini kullanın: Yapılandırmaları sabit kodlamayın
  • Hata yönetimini doğru yapın: Yeniden deneme politikaları ve ölü mektup kuyrukları kullanın
  • Güvenlik ilkelerini uygulayın: En az ayrıcalık ilkesiyle IAM rolleri tanımlayın
  • Zaman aşımını uygun ayarlayın: Çok kısa veya çok uzun zaman aşımlarından kaçının
  • Bağlantı havuzunu yönetin: Veritabanı bağlantılarını fonksiyon dışında oluşturun
  • İdempotent fonksiyonlar yazın: Aynı olay birden fazla kez işlense bile tutarlı sonuç verin

Sonuç

Serverless mimari, doğru kullanım senaryolarında muazzam faydalar sağlayan güçlü bir yaklaşımdır. Sunucu yönetimi yükünü ortadan kaldırarak geliştiricilerin iş değeri üreten kod yazmaya odaklanmasını sağlar. Otomatik ölçekleme ve kullanım bazlı fiyatlandırma ile hem operasyonel hem de finansal verimlilik sunar.

Ancak serverless her sorunun çözümü değildir. Soğuk başlangıç, çalışma süresi limitleri ve sağlayıcı bağımlılığı gibi kısıtlamalar göz önünde bulundurulmalıdır. Serverless mimariye geçişi düşünüyorsanız, küçük ve bağımsız bir bileşenle başlayarak deneyim kazanın ve zamanla kapsamı genişletin. Doğru iş yükü için doğru araç seçimi, her zaman en önemli mühendislik kararıdır.

Bu yazıyı paylaş