Giriş

Bulut bilişim, son yıllarda teknoloji dünyasında devrim yarattı ve sunucusuz hesaplama (serverless computing) bu devrimin önemli bir parçası haline geldi. Geliştiricilere altyapı yönetiminden kurtularak tamamen uygulama geliştirmeye odaklanma imkanı sunan sunucusuz mimari, özellikle İşlev-olarak-Hizmet (FaaS) modeli ile dikkat çekiyor. Bu makalede, sunucusuz hesaplama ve FaaS’ın ne olduğunu, tarihçelerini, faydalarını, avantajlarını ve dezavantajlarını ele alacağız. Ayrıca, somut örneklerle bu kavramları daha anlaşılır hale getireceğiz.

Sunucusuz Hesaplama Nedir?

Sunucusuz hesaplama, geliştiricilerin altyapı yönetimi ile uğraşmadan uygulamalar oluşturup çalıştırmasına olanak tanıyan bir bulut geliştirme modelidir. “Sunucusuz” terimi biraz yanıltıcı olabilir çünkü bu modelde fiziksel sunucular hala kullanılır, ancak bu sunucuların yönetimi ve sağlanması bulut sağlayıcısı tarafından yapılır. Geliştiriciler, sadece kodlarını konteynerlere paketleyip dağıtarak uygulamalarını çalıştırabilirler. Sunucusuz hesaplama ile uygulamalar talebe göre otomatik olarak ölçeklenir ve boşta kaldıklarında herhangi bir maliyet yaratmazlar.

İşlev-olarak-Hizmet (FaaS) Nedir?

İşlev-olarak-Hizmet (FaaS), sunucusuz hesaplama modelinin bir parçasıdır. Bu modelde, geliştiriciler olaylar meydana geldiğinde çalışan küçük kod parçaları yazarlar. Bu kodlar, tamamen bir bulut platformu tarafından yönetilen konteynerlerde çalışır. FaaS, geliştiricilere daha fazla kontrol sağlar ve bu sayede özel iş mantığı yazabilirler. FaaS modelinde, işlevler genellikle kısa ömürlü, durumsuz ve olay tetikli olarak çalışır.

Sunucusuz Hesaplama ve FaaS’ın Tarihçesi

Sunucusuz hesaplama ve FaaS, bulut bilişimin evrimi ile birlikte ortaya çıktı. İlk olarak Amazon Web Services (AWS), 2014 yılında AWS Lambda’yı piyasaya sürerek FaaS modelini tanıttı. Bu model, geliştiricilere sunucu yönetimi ile uğraşmadan işlevler yazma ve çalıştırma imkanı sundu. AWS Lambda’nın başarısı, diğer büyük bulut sağlayıcılarının da benzer hizmetler sunmasına yol açtı: Google Cloud Functions, Microsoft Azure Functions ve IBM Cloud Functions bu örnekler arasında yer alır.

FaaS ve Sunucusuz Hesaplama Arasındaki Farklar

Başlangıçta, FaaS ve sunucusuz hesaplama terimleri birbirine oldukça yakın anlamlar taşıyordu, ancak zamanla sunucusuz kavramı daha geniş bir mimari desenler ve uygulamalar setini ifade etmeye başladı. FaaS, sunucusuz mimarinin bir parçası olarak kabul edilirken, sunucusuz daha geniş bir çerçevede, veri tabanları, mesajlaşma sistemleri gibi yönetilen hizmetleri de kapsar.

FaaS ve Sunucusuz Hesaplamanın Faydaları

1. Artan Geliştirici Verimliliği: Geliştiriciler, sunucu yönetimi ve sağlama gibi rutin görevlerden kurtularak tamamen kod yazmaya ve iş değerini artırmaya odaklanabilirler.

2. Maliyet Verimliliği: Sunucusuz modelde, yalnızca ihtiyaç duyulan kaynaklar için ödeme yapılır. Boşta kalan süreler için maliyet oluşmaz.

3. Kolay Ölçeklenebilirlik: Sunucusuz uygulamalar, talebe göre otomatik olarak ölçeklenir. Bu, uygulamaların yüksek talep dönemlerinde sorunsuz çalışmasını sağlar.

4. Hızlı Geliştirme Süresi: Sunucusuz mimari, uygulamaların daha hızlı pazara sunulmasını sağlar. Geliştiriciler, karmaşık dağıtım süreçlerine ihtiyaç duymadan kodlarını parça parça ekleyebilir ve güncelleyebilirler.

Dezavantajlar ve Zorluklar

1. Soğuk Başlangıçlar: Bir sunucusuz işlev uzun süre kullanılmadığında, sağlayıcı bu işlevi kapatabilir. İşlev tekrar çağrıldığında, başlatma süresi gecikmelere yol açabilir.

2. Sağlayıcıya Bağımlılık: Sunucusuz model, belirli bir bulut sağlayıcısına bağımlılığı artırabilir. Sağlayıcı değişikliği, sistemlerin yeniden yapılandırılmasını gerektirebilir.

3. Performans Kısıtlamaları: İşlevlerin yürütülme süresi genellikle sınırlıdır. Bu nedenle, uzun süreli işlemler için uygun olmayabilirler.

Serverless ve FaaS: Somut Örneklerle Farklar

Serverless Computing (Sunucusuz Hesaplama)

Serverless, daha geniş bir kavramdır ve geliştiricilerin sunucu altyapısı yönetimi olmadan uygulama geliştirmesine olanak tanır. Serverless, veri tabanı hizmetleri, kimlik doğrulama, depolama, mesajlaşma sistemleri gibi çeşitli hizmetleri kapsayabilir. İşte bir örnek:

Örnek: Bir Blog Platformu

Bir blog platformu oluşturduğunuzu düşünelim. Kullanıcıların blog yazılarını oluşturup paylaşabildiği bir sistem:

  • Veri Tabanı Hizmeti (Database-as-a-Service – DBaaS): Blog yazılarını saklamak için bir veri tabanı kullanıyorsunuz. Bu veri tabanı, Amazon RDS veya Firebase gibi bir sunucusuz veri tabanı hizmeti olabilir. Veri tabanı yönetimi ve ölçeklendirme bulut sağlayıcısı tarafından yapılır.
  • Kimlik Doğrulama Hizmeti (Authentication-as-a-Service): Kullanıcıların platforma giriş yapabilmesi için kimlik doğrulama hizmeti kullanıyorsunuz. Bu hizmet, AWS Cognito veya Auth0 gibi bir sunucusuz kimlik doğrulama hizmeti olabilir.
  • Depolama Hizmeti (Storage-as-a-Service): Kullanıcıların yüklediği resimleri saklamak için Amazon S3 gibi bir sunucusuz depolama hizmeti kullanıyorsunuz.

Bu örnekte, blog platformunuzun altyapısı tamamen sunucusuz hizmetlerle yönetiliyor, ancak siz sadece uygulama mantığına odaklanıyorsunuz.

Function-as-a-Service (FaaS)

FaaS, sunucusuz mimarinin bir parçasıdır ve geliştiricilerin küçük, bağımsız işlevler yazmasını ve bu işlevlerin olay tetiklendiğinde çalışmasını sağlar. İşlevler kısa ömürlü, durumsuz ve genellikle tek bir görevi yerine getirir.

Örnek: Görüntü İşleme Hizmeti

Bir e-ticaret sitesi için yüklenen ürün resimlerinin otomatik olarak farklı boyutlara dönüştürülmesi gereken bir senaryo düşünelim:

  • AWS Lambda Kullanımı: Kullanıcı bir ürün resmi yüklediğinde, bu olay AWS Lambda işlevini tetikler. Lambda işlevi, resmi alır, çeşitli boyutlarda yeniden boyutlandırır ve sonuçları Amazon S3’e kaydeder. Bu işlev durumsuzdur, yani her çağrıldığında yeni bir işlev örneği çalışır ve işlem tamamlandığında sona erer.

FaaS örneğinde, sadece belirli bir işlevi yerine getiren kod parçacıkları yazılır ve bu işlevler olaylar tarafından tetiklenir. FaaS ile, uygulamanın belirli bölümleri bağımsız işlevler olarak çalıştırılır ve bulut sağlayıcısı bu işlevlerin yönetimini, ölçeklenmesini ve çalışmasını sağlar.

Serverless ve FaaS’ın Birlikte Kullanımı

Çoğu uygulama, hem sunucusuz hizmetleri (serverless) hem de FaaS işlevlerini bir arada kullanır. İşte birleşik bir örnek:

Örnek: Haber Uygulaması

Bir haber uygulaması geliştirdiğinizi düşünelim. Bu uygulama, kullanıcıların haberleri okumasına ve yorum yapmasına olanak tanır:

  • Veri Tabanı Hizmeti: Haber içeriklerini ve kullanıcı yorumlarını saklamak için bir sunucusuz veri tabanı (örneğin, Firebase Firestore) kullanıyorsunuz.
  • Kimlik Doğrulama Hizmeti: Kullanıcıların giriş yapabilmesi için sunucusuz kimlik doğrulama hizmeti (örneğin, AWS Cognito) kullanıyorsunuz.
  • Görsel İşleme: Kullanıcılar haberlerle ilgili resimler yüklediğinde, bu resimler AWS Lambda kullanılarak otomatik olarak optimize edilir ve yeniden boyutlandırılır.
  • Bildirim Gönderme: Yeni bir haber yayınlandığında veya kullanıcı yorum yaptığında, bu olaylar Azure Functions ile tetiklenir ve kullanıcılara push bildirimleri gönderilir.

Bu senaryoda, sunucusuz hizmetler genel altyapıyı yönetirken, FaaS işlevleri belirli olaylara yanıt veren işlevleri yerine getirir. Böylece geliştiriciler hem geniş kapsamlı sunucusuz hizmetlerden hem de olay bazlı işlevlerden yararlanabilirler.

Bu Örnekte “Görsel İşleme” de Detaylı Neler Yapıyoruz?

AWS Lambda Kullanımı:

  1. Resim Yükleme Olayı: Kullanıcı bir haberle ilgili resim yüklediğinde, bu olay tetiklenir.
  2. Lambda İşlevi: Bu olay, AWS Lambda işlevini tetikler. Lambda işlevi, yüklenen resmi alır ve farklı boyutlarda yeniden boyutlandırır.
  3. Sonuçların Kaydedilmesi: Yeniden boyutlandırılan resimler, Amazon S3 gibi bir depolama hizmetine kaydedilir.

Bu süreçte, Lambda işlevi belirli bir olay (resim yükleme) tarafından tetiklenir ve kısa ömürlü bir işlev olarak çalışır. İşlev tamamlandığında sona erer.

Bu Örnekte “Bildirim Gönderme” de Detaylı Neler Yapıyoruz?

Azure Functions Kullanımı:

  1. Haber Yayınlama Olayı: Yeni bir haber yayınlandığında veya bir kullanıcı yorum yaptığında bu olay tetiklenir.
  2. Azure Function İşlevi: Bu olay, Azure Function işlevini tetikler. Function işlevi, ilgili kullanıcıya push bildirimi göndermek için çalışır.
  3. Bildirim Gönderimi: Kullanıcıya haber veya yorum ile ilgili push bildirimi gönderilir.

Bu süreçte, Azure Function işlevi belirli bir olay (haber yayınlama veya yorum yapma) tarafından tetiklenir ve belirli bir görevi (bildirim gönderme) yerine getirir. İşlev tamamlandığında sona erer.

Özetle, Bu örnekte, FaaS Bileşenleri:

  • Görsel İşleme: AWS Lambda kullanılarak resimlerin otomatik olarak işlenmesi ve farklı boyutlarda kaydedilmesi.
  • Bildirim Gönderme: Azure Functions kullanılarak yeni haberler veya yorumlarla ilgili push bildirimlerinin gönderilmesi.

Serverless bileşenleri ise genel altyapıyı yönetir:

  • Veri Tabanı Hizmeti: Haber içeriklerini ve kullanıcı yorumlarını saklamak için bir sunucusuz veri tabanı (Firebase Firestore gibi).
  • Kimlik Doğrulama Hizmeti: Kullanıcıların giriş yapabilmesi için bir sunucusuz kimlik doğrulama hizmeti (AWS Cognito gibi).

Bu kombinasyon, uygulamanın hem geniş kapsamlı altyapı yönetimi hem de belirli olaylara yanıt veren işlevsellik açısından etkin bir şekilde çalışmasını sağlar.

Sonuç

Sunucusuz hesaplama ve İşlev-olarak-Hizmet (FaaS) modelleri, geliştiricilere daha fazla verimlilik ve esneklik sağlar. Bu modeller, altyapı yönetimini bulut sağlayıcılarına devrederek geliştiricilerin tamamen uygulama geliştirmeye odaklanmasını sağlar. Ancak, bazı dezavantajlar ve zorluklar da göz önünde bulundurulmalıdır. Sağlayıcı bağımlılığı ve performans kısıtlamaları gibi konular, sunucusuz ve FaaS modellerinin uygulanmasında dikkate alınması gereken önemli faktörlerdir.

Sarav Asiye Yiğit – 7 Temmuz 2024

https://www.cloudflare.com/learning/serverless/what-is-serverless

https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless

https://www.redhat.com/en/topics/cloud-native-apps/what-is-faas

https://baselime.io/glossary/aws-lambda