Anasayfa Makale Serverless Nedir?

Serverless Nedir?

serverless

Gelişen web teknolojileri ve bilişim alanındaki yenilikçi çözümlerle birlikte hayatımıza giren “sunucusuz” yani serverless adını verdiğimiz ölçeklendirilebilir bilişim çözümlerine göz atıyoruz.

Bildiğiniz üzere geleneksel web sitesi veya uygulama yayınlama çözümlerinde web uygulamalarının çalışması için HTTP isteklerini kontrol edecek ve yanıtlayacak bir sunucu gerekir ve işleyiş bu şekilde gerçekleşir. Bu tarz geleneksel çözümlerde genelde kaynak yönetimi ve kaynakların sağlanmasıyla sunucunun/projenin sahibi ilgilenir. Neticede barındırma çözümünün sağlandığı sunucu ve proje size ait ve siz bununla ilgilenmelisiniz fakat kimi zaman bu noktada bazı sorunlar çıkabiliyor.

Sunucuya gereken güncellemelerin yapılması, güvenlik yapılandırmaları, donanımsal bakım gibi durumlarda yaşanabilecek aksilikler işte bir önceki paragrafta belirttiğimiz “bazı sorunlardan” birkaçı. Geleneksel sunucu çözümlerinde:

  • Donanımsal kaynak yükseltmesi için genellikle sunucuyu yükseltme işlemi bitene kadar offline konuma almak gerekir.
  • Güvenlik, optimizasyon ve kurulum gibi birtakım gerekli yapılandırmaların yapılması, sunucu hizmeti alınmıyor ise sunucu sahibine ait.
  • Donanım size ait değilse ve sunucu dedicated dediğimiz türden kiralanmış fiziksel sunucu ise kullanmadığınız kaynaklar için de ödeme yaparsınız.
  • Kolayca yükseltme veya kaynak tüketimi azaldığında sunucuya ait kaynakları geri azaltmak ve maliyeti düşürmek pek mümkün değil.
  • Esneklik az.

Yeni bir projeye başladıysanız veya başlama evresindeyseniz genelde bu tarzdaki ek iş yükleri daha proje başında “göz korkutabilir” veya ana odak noktasının dağılmasına neden olabilir. Ana proje ekibinin bunlarla uğraşmasını istemiyorsanız bunları sizin yerinize yapacak birilerini bulmanız daha proje başında ek maliyet anlamına gelebilir. Zaten büyük çaplı ve belirli bir seviyeye gelmiş projelerde bu işlerle uğraşan özel birimler mevcuttur fakat dediğimiz gibi bunlar aynı zamanda ek iş yükü ve maliyet demek.

Sunucusuz yani serverless adını verdiğimiz bu web çözümü yeni başlayanlar, küçük veya orta halli işletmeler için aranan kan. Peki sunucusuz kullanım nasıl gerçekleşiyor, göz atalım.

Sunucusuz Bilişim Çözümleri

Serverless (Sunucusuz) bilişim çözümlerinde ana odakta bulut sağlayıcıları bulunur. Microsoft Azure, Amazon Web Services ve Google Cloud sunucusuz çözümlerde en bilinen sağlayıcılardan birkaçı. Bu çözümlerde sağlayıcıların oluşturduğu dinamik kaynağa sahip alanlarda kod çalıştırılıp tükettiği kaynak kadar ücret alınır. Kodun çalışması esnasındaki işlevleri de birtakım alanlarda çalıştırılır.

Genellikle bahsettiğimiz tarzdaki sunucusuz bilişim çözümlerinde sağlayıcılar bir fonksiyon çalıştırdıkları için bu hizmetlere kimi zaman FaaS (Functions as a Service) yani “Fonksiyonlarla Servisler” de denilmekte. Önde gelen bulut sağlayıcılarının FaaS çözümleri ise:

  • AWS Lambda
  • Microsoft Azure Functions
  • Google Cloud Functions

Aslında sunucusuz çözüm derken arka planda çalışan sunucu ve donanım elbette mevcut. Bu çözümü diğerlerinden ayıran önemli nokta, proje geliştirici ve yüklenicilerini arkada dönen işleyişten uzak tutması ve bulut sağlayıcı servisin devamlılığı için yönetim sorumluluğunu üzerine almasıdır.

Serverless yani sunucusuz servislerde kodlarımız belirli fonksiyonlar ile çalışacağı için birkaç temel terim hakkında da bilgi edinmeliyiz.

serverlessMikroservisler

Serverless hizmetleri kullanmaya başlamadan önce kodlarınız fonksiyonlar halinde çalışmaya başlayacak şekilde ayarlanmalı ve düzenlenmeli. Uygulamanızı tek parça halinde yayınlamak elbette hoş olabilir fakat sunucusuz çözümlere geçecekseniz mikroservislere uygun bir yazılım mimarisi, kod şekli belirlemelisiniz. Tüm uygulamayı tek fonksiyona bağlayıp çalışacak şekilde ayarlayabilirsiniz fakat modüler şekilde olan bir sistem her zaman daha uygun boyutlarda olacaktır.

Durumsuz Fonksiyonlar

Sunucusuz çalışma ortamlarında fonksiyonlarınız genelde güvenli bilinen “container” ortamlarda çalışır. Uygulamanın çalıştığı sunucuda bir durum tamamlandıktan bir süre sonra önceki yürütülen eylemle alakalı yürüteci kullanarak uygulamadaki kodu çalıştıramayabilirsiniz. Fonksiyonların her seferinde “container” içinde çalıştığına dikkat edilmeli.

Soğuk ve Sıcak Çalışma

Serverless çözümlerde kullanılan “container” ortamlar kod çalıştırılmadan önce ufak bir gecikmeye neden olabilirler. Bu ilk çalışmaya soğuk başlatma/çalışma denilir. Fonksiyonlar çalıştırıldıktan sonra “container” üzerinde çalışacak başka bir şey olursa yazılım hazır olduğu için hızlıca yanıt verir. Buna ise “sıcak başlatma” denilir.

Soğuk başlatma aşamasındaki yanıt süresi daha çok hizmetin alındığı bulut servis sağlayıcısına, projede kullanılan yazılım ve yazılım diline bağlı olarak değişebilir. Tekniklerin ve teknolojinin zaman içerisindeki gelişimi de göz önüne alındığında soğuk başlatmadaki gecikmenin oldukça azaldığını görüyoruz. Yine de projenizin sıkça “soğuk başlatma” evresinden geçmesini istiyorsanız belirli aralıklarla kodunuzu çalıştıracak ekler geliştirebilirsiniz.

Sonuç

Her şey bir yana sunucusuz bilişim çözümleri artık günümüzde oldukça önemli bir yer edinmeye başladı. Sunduğu kolaylık ve esnekliğin dışında serverless çözümler proje dışındaki şeylerle uğraşmaya gerek kalmaması nedeniyle oldukça mantıklı bir seçim. Esneklik önemliyse ve kodunuza bağlı olarak maliyet hesaplamaları yapacaksanız bu çözümler size göre.

Ben kendi altyapımı kuracağım, projenin çalıştığı ortamda sonuna kadar özgürlük istiyorum diyorsanız da geleneksel çözümlerden yararlanabilirsiniz. Zira bu teknolojiler daha çok ihtiyaca yönelik çıkarılmış hizmetler. Normal barındırma hizmetleri ile ilgileniyorsanız Hosting Seçimi Yaparken Nelere Dikkat Edilmeli isimli yazımıza göz atabilirsiniz.

Sizler de ihtiyacınız ne yönde ise ona göre karar verebilir, tavsiye ettiğiniz bulut servisleri varsa yorumlarda belirtebilirsiniz.