Serverless (Sunucusuz Mimari) Nedir ve Nasıl Çalışır?
Sözlük

Serverless (Sunucusuz Mimari) Nedir ve Nasıl Çalışır?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Serverless (sunucusuz mimari) nedir, nasıl çalışır? FaaS, olay tetikleyicileri ve AWS Lambda ile örnek bir akışı, avantaj ve sınırlarıyla birlikte öğrenin.

Serverless nedir?

Serverless, uygulama kodunu çalıştıran altyapının yönetimini bulut sağlayıcısına bırakan bir bulut bilişim modelidir. Yazılımcı sunucu kurmaz, işletim sistemi yamalamaz, kapasite planlamaz; yalnızca kodu ve bu kodun hangi olayla çalışacağını tanımlar. Sağlayıcı, kodu gerektiğinde çalıştırır ve çalışmadığı zaman kaynak ayırmaz.

Adın aksine sunucular vardır; yalnızca yönetimi sizden alınmıştır. Faturalama genellikle ayrılmış sunucu saati yerine fiilen yapılan çalıştırmalar ve harcanan kaynak üzerinden hesaplanır. Bu nedenle kullanım dalgalı ya da öngörülemez olduğunda cazip bir modeldir.

Serverless'ın iki yüzü: FaaS ve yönetilen servisler

Serverless iki bileşenden oluşur:

  • FaaS (Function as a Service): Küçük, tek amaçlı fonksiyonların olay geldiğinde çalıştırılması. AWS Lambda bunun en bilinen örneklerinden biridir.
  • Yönetilen servisler (BaaS): Veritabanı, kuyruk, nesne depolama, kimlik doğrulama gibi sağlayıcının işlettiği ve kullanım kadar ödenen servisler.

Gerçek bir serverless uygulama bu iki bileşenin olay tetikleyicileriyle bağlanmasından doğar: bir dosya depolamaya yüklenir, bir fonksiyon tetiklenir, sonucu bir veritabanına yazar ve bir kuyruğa mesaj bırakır.

Nasıl çalışır?

Bir fonksiyon, bir olaya bağlanır: bir HTTP isteği, bir kuyruğa düşen mesaj, bir depolama alanına eklenen dosya ya da zamanlanmış bir tetik. Olay geldiğinde sağlayıcı fonksiyon için bir yürütme ortamı hazırlar, kodu çalıştırır ve sonucu döner. Eş zamanlı çok sayıda olay gelirse sağlayıcı kendi kendine paralel kopyalar açar; ölçekleme sizin yönetiminizde değildir.

Fonksiyonlar durumsuz (stateless) tasarlanır: bir çalıştırmadan diğerine bellek içi veri taşınamaz. Kalıcı bilgi harici bir veritabanında ya da depolamada tutulur. Uzun süren işler küçük adımlara bölünür ve bir orkestrasyon servisiyle bağlanır.

Küçük bir örnek

Örneğin bir e-ticaret sitesinde kullanıcılar ürün görseli yüklüyor. Geleneksel yaklaşımda görsel boyutlandırma için sürekli çalışan bir sunucu gerekir. Serverless yaklaşımda görsel depolamaya yüklendiğinde bir fonksiyon tetiklenir, görseli farklı boyutlarda üretip kaydeder ve işlem biter.

Gün içinde az yükleme olduğunda neredeyse hiçbir kaynak kullanılmaz; kampanya anında yüklemeler arttığında sağlayıcı çok sayıda fonksiyon kopyasını paralel çalıştırır. Ekibin kapasite planlaması ya da sunucu bakımıyla uğraşmasına gerek kalmaz.

Avantajları ve sınırları

Avantajların başında operasyon yükünün azalması, olaya bağlı otomatik ölçekleme ve kullanım kadar ödeme modeli gelir. Yeni özellikler küçük fonksiyonlar halinde hızlı yayına alınabilir.

Sınırlar da bilinmelidir. Soğuk başlatma (cold start): uzun süre çağrılmamış fonksiyonun ilk çalıştırması ek gecikme getirebilir. Çalışma süresi ve bellek gibi sağlayıcı sınırları uzun, ağır işlerde engel olabilir. Yerel geliştirme ve hata ayıklama daha zordur; dağıtık yapı izlemeyi karmaşıklaştırır. Ayrıca belirli bir sağlayıcının servislerine sıkı bağlanmak (vendor lock-in) taşıma maliyetini artırır. Çok yoğun ve sürekli yükte, ayrılmış kaynak ekonomik olarak daha avantajlı olabilir.

Sık yapılan hatalar

Sık görülen hata, tüm uygulamayı tek büyük bir fonksiyona koymaktır; bu hem soğuk başlatmayı hem bakımı zorlaştırır. Bir diğeri, fonksiyonlar arası sıkı bağımlılık kurup senkron zincirler oluşturmaktır; asenkron kuyruk ve olay desenleri daha dayanıklıdır.

Güvenlik tarafında fonksiyona gereğinden geniş yetki vermek tipik bir sorundur; her fonksiyon yalnızca ihtiyaç duyduğu kaynaklara erişmelidir. Maliyet tarafında, kontrolsüz yeniden denemeler ve sonsuz tetik döngüleri beklenmedik fatura üretebilir. Bu yüzden uyarı limitleri ve gözlemlenebilirlik üretime çıkmadan kurulmalıdır.

Mindset programlarında serverless

Mindset kataloğundaki Serverless Mimari (AWS Lambda) ile Uygulama Geliştirme eğitimi serverless temellerini, Lambda yürütme modelini, HTTP uçları ve API Gateway entegrasyonunu, olay tetikleyicilerini, durum ve orkestrasyonu, altyapı kodu ve dağıtım hattını, gözlemlenebilirlik ve maliyeti işler. AWS Lambda ile Sunucusuz Uygulama Geliştirme eğitimi ise fonksiyon geliştirme, paketleme, güvenlik, performans ve maliyet yönetimi konularını kapsar.

İlgili Mindset programı

Serverless Mimari (AWS Lambda) ile Uygulama Geliştirme

Sık sorulanlar

Sık sorulan sorular

Serverless'ta gerçekten sunucu yok mu?

Sunucular vardır, ancak yönetimleri sağlayıcıya aittir. Siz sunucuyu kurmaz, yamalamaz ve ölçeklendirmezsiniz; yalnızca kodunuzu ve tetikleyicilerini tanımlarsınız. Ad, sunucuların görünmez olmasından gelir. Örneğin bir görsel yüklendiğinde çalışan fonksiyon için kapasite planlamazsınız; fonksiyon çalışmadığı sürece genellikle çalışma maliyeti de oluşmaz.

AWS Lambda ile serverless aynı şey midir?

Hayır. Serverless bir yaklaşım, AWS Lambda ise bu yaklaşımı hayata geçiren Amazon'un FaaS ürünüdür. Başka sağlayıcıların da benzer ürünleri vardır. Serverless uygulama yalnızca fonksiyon değil, yönetilen veri ve mesajlaşma servislerinin birleşimidir.

Soğuk başlatma (cold start) nedir?

Bir fonksiyon bir süre çalışmadığında sağlayıcı yürütme ortamını kapatabilir. Sonraki ilk istekte ortamın yeniden hazırlanması ek gecikme yaratır. Gecikmeye duyarlı uygulamalarda bu etki ölçülmeli ve gerekirse hafifletici önlemler alınmalıdır.

Serverless her proje için uygun mudur?

Hayır. Olaya dayalı, dalgalı yüklü ve kısa süreli işlerde güçlüdür. Uzun süren hesaplamalar, çok düşük ve sabit gecikme gerektiren işler ya da sürekli yüksek yük altında çalışan sistemlerde alternatif mimariler daha uygun olabilir.

Serverless Nedir? Sunucusuz Mimari ve AWS Lambda