İletişim

Serverless (Sunucusuz Mimari) Nedir?

Kısa tanım

Serverless (sunucusuz mimari), uygulama kodunun sunucu kurma, yamalama ve kapasite planlama işleri tamamen bulut sağlayıcısına bırakılarak çalıştırıldığı bulut modelidir. Kod genellikle bir HTTP isteği, kuyruğa düşen mesaj veya zamanlayıcı gibi olaylarla tetiklenen kısa ömürlü fonksiyonlar hâlinde yazılır. Sağlayıcı talebe göre otomatik ölçekler; ücret sabit sunucu kirası yerine istek sayısı ve çalışma süresine göre alınır.

Diğer adları: Sunucusuz Mimari, Sunucusuz Bilişim, Serverless Computing, FaaS, Function as a Service

Sunucusuz fonksiyonun boştayken sıfır sunucuyla beklediği, yoğunlukta ölçeklendiği ve çalıştığı süre kadar ücretlendiği zaman çizelgesi

Sunucusuz, ama sunucusuz değil

Adı yanıltıcıdır: kod yine sunucularda çalışır. Değişen, o sunuculardan kimin sorumlu olduğudur. İşletim sistemi güncellemeleri, kapasite planlaması, trafiğe göre yeni makine açıp kapatmak sağlayıcının işidir; geliştirici yalnızca fonksiyonu ve onu tetikleyecek olayı tanımlar. Bu modelin en bilinen biçimi FaaS'tır (Function as a Service): AWS Lambda, Google Cloud Run functions veya Azure Functions gibi servisler. Kimlik doğrulama, veritabanı ve dosya depolama gibi hazır servislerin kullanıldığı tarafa ise genellikle BaaS (Backend as a Service) denir.

Serverless mimari doğası gereği olay güdümlüdür: bir HTTP isteği, depolama alanına yüklenen bir dosya, kuyruğa düşen bir mesaj ya da her gece aynı saatte çalışan bir zamanlayıcı fonksiyonu tetikler.

Fonksiyonun yaşam döngüsü ve cold start

Bir fonksiyon ilk kez çağrıldığında sağlayıcı ona bir çalışma ortamı hazırlar: kodu indirir, çalışma zamanını başlatır ve handler dışındaki başlatma kodunu çalıştırır. Bu hazırlığın kullanıcıya yansıyan gecikmesine cold start denir. İş bittikten sonra ortam bir süre dondurulmuş hâlde bekletilir; aynı fonksiyona yeni bir istek gelirse hazır ortam yeniden kullanılır (warm start).

AWS'nin Lambda dokümantasyonuna göre cold start'lar çağrıların genellikle yüzde 1'inden azında görülür ve süreleri 100 milisaniyenin altından 1 saniyenin üstüne kadar değişebilir. Düşük trafikli fonksiyonlar bu gecikmeyi daha sık yaşar. Etkisini azaltmak için bağımlılıkları küçük tutmak, ağır kütüphaneleri yalnızca gerektiğinde yüklemek ve gecikmenin kritik olduğu yerlerde önceden ısıtılmış örnekler (AWS'de provisioned concurrency) kullanmak işe yarar.

Limitler tasarımı belirler

Serverless fonksiyonlar kısa süreli ve durumsuz (stateless) işler için tasarlanmıştır. AWS Lambda örneğinde varsayılan sınırlar şöyledir:

SınırAWS Lambda değeri
Tek çağrının azami süresi900 saniye (15 dakika)
Bellek128 MB ile 10.240 MB arası; işlemci gücü bellekle orantılı artar
Senkron istek/yanıt boyutuHer biri için 6 MB
/tmp disk alanı512 MB ile 10.240 MB arası, geçici

Pratik sonuçları şunlardır: Uzun süren video işleme veya büyük veri aktarımları parçalara bölünmeli ya da başka bir servise taşınmalıdır. Bir çağrıdan diğerine bellekte ya da diskte veri saklanacağı varsayılmamalıdır. Veritabanı bağlantıları özel dikkat ister: trafik arttığında yüzlerce fonksiyon örneği aynı anda bağlantı açabilir, bu yüzden paylaşılan bir bağlantı havuzu ya da HTTP tabanlı veri erişimi gerekir.

Maliyet modeli: kullandıkça öde

Lambda gibi FaaS servislerinde ücret iki kalemden oluşur: istek sayısı ve çalışma süresi. Süre, ayrılan bellekle çarpılarak GB-saniye cinsinden ölçülür ve milisaniye hassasiyetinde yuvarlanır. 512 MB bellekle 200 milisaniye çalışan bir fonksiyon, her çağrıda 0,1 GB-saniye tüketir; ayda bir milyon çağrı 100.000 GB-saniye eder. AWS'nin ücretsiz katmanı ayda bir milyon istek ve 400.000 GB-saniye içerir.

Bu model düzensiz ve seyrek trafikte çok avantajlıdır: kimse kullanmadığında fatura sıfıra yaklaşır. Gün boyu sabit ve yüksek yük taşıyan bir serviste ise aynı iş, sabit ücretli bir VPS veya container platformunda daha ucuza gelebilir. Karar vermeden önce beklenen çağrı sayısı ve ortalama süreyle basit bir hesap yapmak gerekir.

Ne zaman uygun, ne zaman değil?

  • Uygun: Webhook alıcıları, form işleme, görsel küçültme gibi olay tetikli işler; zamanlanmış görevler; trafiği tahmin edilemeyen veya ani sıçramalar yaşayan API'ler; prototipler.
  • Zorlayıcı: Uzun süreli bağlantılar (WebSocket gibi) gerektiren sistemler; sürekli yüksek yük altındaki servisler; düşük ve kararlı gecikmenin kritik olduğu uç noktalar; sağlayıcıya özgü servislere derinden bağlanmanın kabul edilemeyeceği projeler.

İlgili terimler

← Sözlüğe dön