background

Microsoft’un Serverless Çözümü Azure Functions

Microsoft’un Serverless Çözümü Azure Functions

Günümüzde, internete bağlı cihazların artışıyla birlikte verinin her geçen gün önem kazandığı bilinen bir gerçek. Organizasyonlar da verideki değere ulaşabilmek için, geliştiricilerden yüksek oranda ölçeklenebilen çözümler üretmelerini bekler hale geldiler. Serverless işte bu beklentilere çözüm önerisi olarak doğmuş bir teknoloji.Ben de bu yazımda öncelikle, yazılım dünyasında da popülerliği artan Serverless’ ın ne olduğuna ve kısaca faydalarına değinmek istiyorum. Ardından, birlikte Microsoft’un Serverless çözümü olan Azure Functions’ ın özelliklerine daha yakından bakalım ve hangi özelliklerdeki uygulamaların bu çözüm için uygun olabileceğini inceleyelim.

Serverless Nedir?

Serverless işlem, cloud platformunda host edilen bir microservice gibi düşünülebilir. Uygulamanın çalışacağı altyapı cloud sağlayıcı tarafından yönetilir. Sunucu kapasitesi belirleme, işletim sistemi, uygulama kurulumu gibi altyapı işlerini düşünmeniz ve altyapıyı ölçeklendirmeniz gerekmez. Yüke bağlı olarak uygulamanızın ölçeği otomatik olarak büyütülür veya küçültülür.

Serverless mimari için farklı sağlayıcılardan alınan servisler ile uygulama mantığını oluşturur diyebiliriz. Örneğin, yetkilendirme için, bilgilendirme için farklı sağlayıcıların varlığını göz önünde bulundurabilir ve bu sağlayıcıları fonksiyonlar olarak isimlendirebiliriz. Sunucuları ve uzun ömürlü sunucu uygulamalarını yönetmeksizin, kod geliştirmeye odaklanarak oluşturduğumuz bu tip fonksiyonlar FaaS (Function as a service) olarak çalışır.

Serverless, uygulama geliştiriciler tarafından yazılan server-side uygulamalar olarak düşünülebilir, ancak bu uygulamalar geleneksel mimari yaklaşımların aksine, state tutmayan, olayla tetiklenen, çalışma süresi kısa olan, altyapısının tamamen cloud sağlayıcılar tarafından yönetildiği hizmetlerdir. Diğer bir deyişle, Serverless uygulamalara FaaS (Function as a service) diyebiliriz.

Serverless Faydaları

  • Altyapı yönetimi cloud sağlayıcısında olduğu için operasyonel maliyetlerini düşürür.
  • Operasyonel yönetimi kolaylaştırır, sistem yönetim eforunu ortadan kaldırır. Örneğin, kodu upload etmek yeterlidir, deployment işlerini düşünmeye gerek kalmaz, ölçeklendirme otomatiktir, ölçeklendirme yönetimi gerekmez.
  • Kullandığın kadar öde modeli olduğu için altyapı maliyetlerini düşürür.
  • Teknik faydalarının yanı sıra, hızlı markete çıkış ve sürekli müşteri deneyi yapma gibi iş getirileri de çok önemlidir.

Azure Functions

Azure Functions, Microsoft’un Serverless çözümüdür. Event tabanlıdır, geliştiricilerin veri kaynağı veya mesajlaşma çözümlerine bağlanarak aksiyon almalarını sağlar, böylece event ile tetiklenen işlerin işlenmesini kolaylaştırır. Azure içerisindeki ya da 3rd Party bir uygulamadaki bir event ile tetiklenebilen kodların geliştirilmesine olanak sağlar. Azure uygulama platformunu talebe göre genişletme altyapısına da sahiptir.

Azure Functions Özellikleri

  • Serverless kod desteği vermektedir. Altyapı yönetimine gerek kalmadan bir kod parçacığı çalıştırılabilir.
  • Uygulama yüküne göre, otomatik olarak ölçeklendirilir ve kullanım kadar ödeme modeli sunar.
  • .NET, Node.js, java, Python ve Powershell Core de dahil modern dillerde uygulamalar geliştirilebilir.
  • NuGet ve NPM desteği mevcuttur.
  • Remote Debug özelliği vardır
  • DevOps optimizasyonu ile continuous integration ve deployment desteği sağlanmaktadır. (Azure DevOps Services, GitHub, vb.)
  • Azure Functions uygulamalarında, yetki bazlı erişim yönetimi Basic Authentication, JWT Token, OAuth gibi yöntemlerle yapılabilmektedir.
  • Azure hizmetleri ve SaaS olarak sunulan hizmetler ile kolayca entegre olabilir. (Azure Cosmos DB, Azure Event Hubs, Azure Event Grid, Azure Notification Hubs, Azure Service Bus, Azure Storage, Twilio vb.)
  • State bilgisi içeren uygulamalar için Serverless mimarisini “Durable Functions” lar ile sağlar.
  • Çeşitli trigger yöntemleri sunarak Azure Functions uygulamasının ne zaman çalışacağını belirleyebilme imkanı sunar. (HTTPTrigger, TimerTrigger, CosmosDBTrigger, BlobTrigger, QueueTrigger, EventGridTrigger, EventHubTrigger, ServiceBusQueueTrigger, ServiceBusTopicTrigger)

    Azure Functions ne zaman tercih edilmelidir?

    • Stateless uygulamalar için çok uygun adaylardır.
    • Çalışma sıklığı tahmin edilebilen uygulamalar için uygundur (Serverless mimari de, uygulama ölçeği otomatik olarak arttırılıp azaltıldığından ve yalnızca çalışma zamanı kadar ödeme yapıldığından altyapı maliyetlerinin düşeceği öngörülür).
    • Microservice mimarisine uygun geliştirilen ve olay ile tetiklenen uygulamalar için uygundur.(Trigger lar uygulama ihtiyacına göre yapılandırılır. Uygulamanın hangi veri ile tetiklendiği ve nereye gittiği ile ilgili sağlanan altyapılar sayesinde geliştirmeler sırasında iş mantığına odaklanılması sağlanır.)
    • Çalışma süresi kısa olan uygulamalar için uygundur.
      (Timeout süresinin varsayılan değeri 5 dakikadır. Bu zaman timeout süresi en çok 10 dakikaya kadar yapılandırılabilir. * Timeout süresi olmadan birden fazla Azure Functions uygulamasının çalışmasını sağlayan Durable Functions adlı bir seçenek de mevcuttur.)

    Kaynaklar

Nasıl yardımcı olabiliriz?