FaaS veya Hizmet olarak Fonksiyon, müşterilerin genellikle bir uygulamanın geliştirilmesi ve çalıştırılmasıyla ilgili altyapıyı oluşturma ve sürdürme karmaşıklığı olmadan uygulama oluşturmasına, çalıştırmasına ve yönetmesine olanak tanıyan bir bulut bilişim hizmetidir.
Sunucusuz bilişim (veya kısaca sunucusuz) ise bulut sağlayıcısının, kaynakları dinamik olarak atayarak bir kod parçasını ya da konteyner haline getirilmiş bir uygulamayı çalıştırmaktan sorumlu olduğu bir işletim modelidir.
FaaS nedir?
FaaS, durum bilgisi olmayan (stateless containers) konteynerlerde çalışan olay güdümlü bir yürütme modelidir. Bu modelle geliştiricilerin bazı olaylara yanıt olarak fonksiyon adı verilen uygulama kodu bölümlerini çalıştırması mümkün oluyor. FaaS çözümleri, genel bulutlarda da bulunuyor ve FaaS ile şirket içinde kurumsal BT’ye uygulama geliştirme için önemli yeni yetenekler eklenebiliyor.
Bulut yerlisi bir geliştirme modeli olan sunucusuz ile geliştiriciler sunucuları yönetmeden uygulamalarını oluşturabiliyor ve çalıştırabiliyor. Sunucusuz modelde sunucular bulunuyor ancak uygulama geliştirme sürecinde yer almıyor. Sunucu altyapısının rutin kaynak ayırma, yönetme ve ölçeklendirme gibi işlemlerinden bulut sağlayıcısı sorumlu oluyor. Geliştiricilerin de kodlarını kullanıma alması için sadece konteynerlemesi yeterli oluyor.
FaaS bulut bilişim hizmetlerini kullanan bir bulut bilişim platformu olarak kullanılmaya başlansa da model, şirket içi ve hibrit dağıtımları da içerecek şekilde genişliyor. Sunucusuz, ölçekleme, zamanlama gibi arka uç altyapı yönetimi görevlerinin tamamını buluta (Red Hat OpenShift gibi) aktarıyor ve böylece geliştiriciler uygulamalarına ait iş mantığına ve kodlara odaklanabiliyor.
Fonksiyon, bir işletim sistemi üzerinde iş mantığını çalıştıran bir yazılım parçasıdır. Uygulamalar birçok fonksiyonun bir araya gelmesiyle oluşabilir.
FaaS modeliyle sunucusuz bir mimariye sahip uygulama oluşturmak mümkün ancak sunucusuz paradigmanın popülerleşmesiyle birlikte geliştiriciler, sunucusuz mikroservisler ve durum bilgisi olmayan konteynerler oluşturmayı destekleyen çözümler arıyor.
Popüler FaaS Örnekleri
IBM Cloud Functions
Apache OpenWhisk tabanlı IBM Cloud Functions, ölçeklenebilir biçimde isteğe bağlı olarak yürütülen basit kod geliştirme için çok dilli bir FaaS programlama platformudur. API ağ geçidi, işlemlerinizi kolayca RESTful uç noktaları olarak kullanıma sunmanızı sağlar.
Amazon AWS Lambda
Kasım 2014’te tanıtılan ve Amazon Web Services’in bir parçası olarak Amazon tarafından sağlanan olay odaklı, sunucusuz bir bilgi işlem platformu olan AWS Lambda, olaylara yanıt olarak kod çalıştıran ve bu kodun gerektirdiği bilişim kaynaklarını otomatik olarak yöneten bir bilişim hizmetidir.
Google Cloud Functions
Google ürünlerinden gelen HTTP isteklerine ve olaylarına yanıt veren kodu dağıtmanıza olanak tanıyan Google’ın sunucusuz işlem ürünüdür. Etkinlik kaynakları arasında ise Cloud Storage, Cloud Firestore, Firebase Realtime Database ve diğerleri bulunuyor.
Azure Functions
Microsoft Azure’un sunduğu FaaS (Function as a Service) hizmetidir. Küçük kod parçalarını kolayca çalıştırmamızı sağlayan, uygulama geliştirmeyi hızlandırmak ve kolaylaştırmak için oluşturulmuş ve altyapı ihtiyaçlarının tamamen Azure tarafından yönetildiği sunucusuz bir yaklaşımdır.
FaaS nasıl çalışır?
Sunucusuz bilişim temelli FaaS, sadece beklenen girdiler ile tetiklendiği zaman çalışmaya başlıyor ve görevlerini bitirdikten sonra bir sonraki görevi beklemek üzere uyku moduna geçer. Örneğin bir dosya yüklemek, dosyayı çeşitli biçimlere dönüştüren özel kodu tetikleyebilir.
Sunucusuz Bilişim, olaya dayalı çalışma sistemine sahiptir. Başka bir deyişle veri tabanı sistemlerinde olduğu gibi uygulama sürekli çalışmıyor, sadece beklenen girdiler ile tetiklendiği zaman çalışmaya başlıyor ve görevlerini tamamladıktan sonra bir sonraki tetiklemeyi beklemek üzere uyku moduna geçiyor. Böylelikle sadece kodun çalıştığı süre için ücretlendirme yapılarak düşük maliyet sağlanıyor.
FaaS altyapısı, genellikle hizmet sağlayıcı tarafından öncelikle söz konusu işleme dayalı bir yürütme modeli aracılığıyla isteğe bağlı olarak ölçülüyor. PaaS gibi arka planda sürekli olarak çalışan herhangi bir sunucu işlemi de gerektirmiyor.
Modern PaaS çözümleri, geliştiricilerin uygulamaları dağıtmak için kullanabilecekleri ortak iş akışlarının bir parçası olarak sunucusuz yetenekler sunarak PaaS ile FaaS arasındaki sınırları ortadan kaldırıyor. Tüm uygulamalar fonksiyonlardan, mikroservislerden ve uzun süreli hizmetlerden oluşuyor. Red Hat OpenShift Serverless, mikroservisler, konteynerler ve FaaS uygulamaları geliştirmek ve Kubernetes üzerinde çalıştırmak için gerekli özellikleri sunuyor. OpenShift Serverless, kullanıma hazır trafik yönlendirme ve güvenlik özellikleri sağlıyor.
Daha fazla bilgi, https://red.ht/3w4ENYQ adresinde yer alıyor.
FaaS ile dinamik ölçekleme
Bir sağlayıcı, fonksiyonunuzu bir uygulama programlama arabirimi (API) aracılığıyla kullanılabilir hale getiriyor ve kaynak atanmasını yönetiyor. Fonksiyonlar kaynak odaklı değil, olay odaklı olduğu için kolayca ölçeklenebiliyor ve bu ölçeklenebilirlik daha yüksek verimlilik ve katma değer sağlıyor.
Bu avantajlardan bazılarını etkinleştirmek için bir fonksiyonun yürütülmesine ilişkin zaman sınırlamaları gibi mimari kısıtlamalar vardır. Bu nedenle bir fonksiyonun hızlı bir şekilde başlatılıp çalıştırılabilir olması gerekiyor.
Fonksiyonlar milisaniyeler içinde başlıyor ve bireysel istekleri işliyor. Fonksiyonunuz için aynı anda birkaç istek varsa, sistem talebi karşılamak için fonksiyonun gerektiği kadar kopyasını oluşturuyor.
Talep sayısı düştüğünde, uygulama da otomatik olarak küçülüyor. Dinamik ölçeklendirme avantajını sunan FaaS ile sağlayıcılar boşa harcanan zaman için değil, yalnızca kullanılan kaynaklar için ücret alıyor. Böylece maliyeti de daha düşük oluyor.
Bu dinamik yapı, kurum içinde platform yoğunluğunu da artırarak kaynak tüketiminin ve işlevselliğin optimize edilmesine olanak tanıyor.
Yatay ölçeklendirmeye ihtiyaç duyan olaya dayalı bir hizmet, RESTful uygulamaların yanı sıra bir fonksiyon olarak da iyi çalışabiliyor.
FaaS, rapor oluşturma, görüntü işleme veya zamanlanmış görevler gibi yalnızca sık sık gerçekleşen yüksek hacimli işlemler ve iş yükleri için oldukça kullanışlı. Yaygın FaaS kullanım durumlarını ise veri işleme, IoT hizmetleri ve mobil veya web uygulamaları olarak sıralamak mümkün.
FaaS kullanarak tamamen sunucusuz bir uygulama oluşturabilir veya Kubernetes gibi daha yeni teknoloji ve kapsayıcı düzenleme sistemlerinden yararlanmak için kısmen sunucusuz ve kısmen geleneksel mikroservis bileşenlerinden oluşan bir uygulama oluşturabilirsiniz.
FaaS’ın avantajları
- Geliştirici üretkenliğini artırır ve daha hızlı geliştirme süresi sunar
- Sunucu yönetiminden sorumlu olmazsınız
- Ölçeklenmesi kolaydır, yatay ölçeklendirme platform tarafından yönetilir
- Kaynakları yalnızca gerektiğinde kullandığınız için maliyet avantajı sağlar
- Fonksiyonlar hemen hemen her programlama dilinde yazılabilir.
FaaS ve sunucusuz bilişim arasındaki farklar neler?
İlk uygulama dönemlerinde FaaS ve sunucusuz, aşağı yukarı aynı anlama geliyordu ancak sunucusuz, FaaS’ta kodlanmış özel iş mantığına ek olarak ortak hizmetlerin kapsamlı bir şekilde kullanılmasını sağlayan daha geniş bir mimari kalıp ve uygulama kümesi olacak genişledi.
Sunucusuz, konteyner hale getirilebiliyor. Ayrıca dinamik ölçek ve durum yönetimi gereksinimlerine uygun oldukları sürece mikroservisler ve hatta geleneksel uygulamalar tarafından kullanılabiliyor.
“Sunucusuz”, bir bulut sağlayıcısı veya üçüncü taraf şirketler tarafından yönetildiği için bir geliştiricinin veya yöneticinin sistemi çalıştırması gerekmiyor. Dolayısıyla veritabanları ve mesajlaşma sistemleri gibi yönetilen hizmetler için de kullanılıyor.
FaaS ve ortak arka uç altyapı hizmetlerinin (veritabanları, mesajlaşma ve kimlik doğrulama gibi) birincil olarak olaya dayalı bir mimariyle birbirine bağlanması, sunucusuz geliştiriciler için önemli artılar sağlıyor.
Sunucusuz bilişim nedir?
FaaS (Function as a Service) ile PaaS (Platform as a Service) kavramları arasında bir noktada konumlandırabileceğimiz sunucusuz bilişimi sunucu yönetimi veya altyapı yapılandırması gibi işlemlere gerek kalmadan, fonksiyon olarak sistemlerde çalışabilen bilişim çözümleri olarak ifade edebiliriz. Diğer bir deyişle sunucusuz temel alınan altyapıya ilişkin derin bir içgörü gerektirmeden uygulamalar oluşturmanıza ve çalıştırmanıza olanak tanıyan bir dağıtım modelidir. Buradaki fikir, platformun her yerde bulunması ve basitçe çalışmasıdır. Geliştiriciler, altyapı hakkında endişelenmeden kod yazmaya ve nerede çalışması gerektiğini belirlemeye odaklanırlar.
Olaya dayalı sunucusuz dağıtım, yalnızca gerektiğinde kod çalıştırmayı ve altyapı sağlamayı mümkün kılıyor. Böylece uygulama gerekmediğinde boşta kalabiliyor. Sunucusuz bir uygulama, gelen talebe yanıt olarak olay tetikleyicilerine göre otomatik olarak ölçekleniyor ve kullanımdan sonra sıfıra ölçeklenebiliyor.
Sunucusuz bilişim neden önemli?
Sunucusuz model, Red Hat OpenShift’in yenilikçi gücünü daha da açığa çıkarıyor. Sunucusuz, uygulama temeldeki altyapıdan soyutlandığı için kuruluşların daha hızlı ve yenilikçi olmasına imkan sağlıyor. Uygulamalar, nasıl yazıldığına bakılmaksızın her yerde çalıştırılabilen OCI (Open Container Initiative) uyumlu konteynerler olarak paketleniyor.
Herhangi bir kapsayıcıyı sunucusuz bir şekilde çalıştırma yeteneği, yukarı akış Knative kullanılarak mümkündür. Knative, sunucusuz metodolojiyi kullanarak modern uygulamaları dağıtmak, çalıştırmak ve yönetmek için bir dizi bileşen sağlamak üzere Kubernetes’i genişletiyor. Knative’i kullanmak, sunucusuz uygulamalarınızın herhangi bir Kubernetes platformunda dağıtılabileceği ve çalıştırılabileceği anlamına geliyor ve bu da satıcıya bağlı kalma ihtimalinizi azaltıyor.
İşlevler ile karşılaştırıldığında, herhangi bir program ortamında sunucusuz bir konteyner oluşturulabiliyor. Kodunuz uygun programla birlikte bir konteynerde paketlenebiliyor ve sunucusuz işlevsellik, bir olay tarafından çağrıldıklarında uygulama konteynerlerini başlatıyor. Konteynerler ayrıca sıfıra ölçeklenebiliyor ve kullanılmadığında kaynak tüketimini ortadan kaldırıyor. Uygulamalar, kendi uygulamalarınızdaki olaylar, birden çok sağlayıcıdan gelen bulut hizmetleri, Hizmet olarak Yazılım (SaaS) sistemleri ve diğer hizmetler gibi çeşitli olay kaynakları tarafından tetiklenebiliyor.
Uygulamayı talep üzerine çalıştırmak için bu olay tetikleyicilerinden herhangi birini kullanabilirsiniz. Bu yapı, monolitik (birden fazla modül içeren tek bir kod tabanına sahip) uygulamanızı tek tek konteynerlere ayırmayı ve uygulamanızın ne zaman başlatılacağını belirlemek için gelen olayları kullanarak uygulama mantığının her bir konteyneri tetiklemesini mümkün kılıyor.
Red Hat OpenShift Sunucusuz, iş süreçlerinde size nasıl destek olur?
Geliştiriciler, Red Hat OpenShift Serverless’ı bir olaya dayalı tetikleyici ile başlayacak, kaynakları gerektiği gibi büyütecek ve kaynakların çoğalmasından sonra sıfıra ölçeklenecek olay odaklı uygulamalar oluşturmak, dağıtmak ve çalıştırmak için kullanabiliyor. Knative’in gücüyle Red Hat OpenShift Serverless uygulamaları, Red Hat OpenShift’in kurulu olduğu şirket içinde, birden fazla genel bulut konumunda veya uçta, kısaca her yerde aynı arayüzü kullanarak çalışabiliyor.
OpenShift arabirimiyle herhangi bir konteyneri sunucusuz bir şekilde dağıtmanın tüm aşamaları yönetilebiliyor. Geliştiriciler, olay parametrelerini değiştirmenin birçok yolu ile konteynerli uygulamalarının başlatılmasını hangi olayların tetiklediğini görsel olarak belirleyebiliyor.
Çok çeşitli desteklenen olay kaynakları size kotneynerleri başlatan ve ölçekleyen tetikleyiciler üzerinde seçim ve kontrol sağlıyor ve kullanılmadıklarında ise sıfıra geri ölçeklendiriyor.
Sunucusuz yeteneklerin entegre olduğu Red Hat OpenShift platformu, operasyon ekiplerinin sunucusuz yeteneklerin uygulanmasını ve geliştiricilerin olaya dayalı dağıtımları yönetmesini kolaylaştırıyor. Operasyon ekipleri, kaynak tahsisinin uygulama kullanımıyla uyumunu kullanabiliyor ve hibrit bilişim hedefleri genelinde kullanılabilirliği optimize edebiliyor. Geliştiriciler, bireysel hizmetleri başlatmak için tanımlanan olay kaynaklarını vurgulayarak kodlarının nasıl tetiklendiğini hızlı bir şekilde belirleyebiliyor. Sonuç olarak Red Hat OpenShift ile uygulamaların dağıtılmasına operasyonel yetenekler eklenmiş oluyor.
Kubernetes ve Knative nedir?
Sunucusuz mimari, son zamanlarda bulut yerlisi uygulama dağıtımında önemli bir aşamaya geldi. Şirketler, sunucusuz uygulamaların kendilerine getirdiği çeviklik, hızlı dağıtım ve kaynak maliyeti optimizasyonu gibi avantajları görmeye başladı.
Bu noktada bahsetmemiz gereken iki platform var. İlki uygulamaların devreye alınmasını, yönetilmesini ve ölçeklenmesini otomatikleştiren açık kaynaklı bir konteyner orkestrasyon platform olan Kubernetes. Bu platform, şirketlerin altyapıyla ve operasyonlarla bağlantılı birden çok görevi yerine getiren ve bulut tabanlı geliştirme ile bağlantılı sorunların aşılmasını sağlayan yüksek üretkenliğe sahip bir Hizmet Olarak Platform’a (PaaS) imkan tanıyor. Bu da geliştirme ekiplerinin yalnızca kodlamaya ve inovasyona odaklanabilmesini sağlıyor.
Diğer platform Knative, sunucusuz bilişime kolay ve hızlı başlanmasını sağlayan Knative Kubernetes’in üzerinde bulunan bir açık kaynaklı platformdur. Knative, daha basit bir dağıtım modeli aracılığıyla tüm temel ara yazılım temel öğelerini sağlayarak Kubernetes sorunlarını çözmeye çalışıyor. Knative’de monolitik uygulamalar, mikroservisler ve hatta küçük fonksiyonlar gibi herhangi bir modern uygulama iş yükünü dağıtabilirsiniz. Knative, Kubernetes’i çalıştıran herhangi bir bulut platformunda çalışabiliyor. Böylece şirketlere bulut satıcısına özgü özelliklere güvenmeden sunucusuz iş yüklerini çalıştırmada daha fazla çeviklik ve esneklik sağlıyor. Red Hat’ten Burr Sutter & Kamesh Sampath’in hazırladığı Knative Cookbook kitabında Serverless uygulamaların nasıl geliştirileceği anlatılıyor. Knative Cookbook’u https://red.ht/3wbfKmP adresinden indirebilirsiniz.