Ana içeriğe atla

KULLANDIĞIN KADAR ÖDE(PAY AS YOU GO):SERVERLESS


Son zamanlarda sıkça duyduğumuz bir terim olan Serverless, ismi gibi sunucu gerektirmeyen bir şey midir? Bize sağlayacağı faydalar nelerdir? Bu konulara değinmek istiyorum.

Öncelikle serverless, sunucu gerektiren bir kavramdır. Bu isim ile anlatılmaya çalışılan şey, sunucu ile ilgilenmenizin gerekmediğidir. Sunucu kapasitesi & donanım planlanması, işletim sistemi & yazılımların kurulumu ve sunucu güncellemeleri gibi sistem yöneticiliği gerektiren işlemler, üzerinde çalıştığınız “parlak” projenizi hayata geçirmeniz için ekstra zaman gerektirecektir. Serverless kavramında tüm bu vakit alan işlemleri cloud computing’e bırakarak, sunucular için endişelenmez sadece yazılıma odaklanmış olursunuz. Serverless hizmeti veren servisler, sizin oluşturduğunuz fonksiyonları (mesela video işleme gibi) kendi ortamlarında çalıştırarak sunucunuz üzerinde oluşacak büyük yükleri üstlenirler.



Serverless fonksiyonları bulut servis sağlayıcıları aracılığı ile sağlanır, Amazon’un AWS Lambda’sı bunlardan en popüler olanıdır. Azure tarafında ise Functions’ı kullanabilirsiniz. Google ise Google Cloud Functions ile konuya cevap vermiş.


Serverless hizmetlerinde ücretlendirmeler “kullandığın kadar öde” mantığı ile komutların çalıştığı süreye ve kullandığı network’e göre hesaplanır. Serverless fonksiyonları trigger edildiklerinde, önceden belirlenmiş zamanlarda veya API istekleri ile uygulamanızdan bağımsız olarak çalıştırılırlar. Bu fonksiyonlar, hizmeti veren servisin verdiği SDK’lara göre ve destekledikleri programlama dillerine göre yazılmaktadır.
Yani Cloud Functions ile Lambda’nın SDK’ları birbirinden farklı olduğu için fonksiyonları her servis için ayrı yazmamız gerekir. Buna çözüm olarak ise Serverless adında bir framework bulunmaktadır. Bu sayede birçok serverless servisi için tek bir framework ile fonksiyon yazabilmeniz mümkün hale geliyor.
Sonuç olarak serverless’lar vaktimizi ve bütçemizi düşüren, faydası büyük servislerdir. Bununla birlikte cloud computing’in hayatımızı her geçen gün daha da kolaylaştırdığını bir kez daha görmüş oluyoruz.


Serverless’i FaaS (Function as a Service) ile Paas (Platform as a Service) kavramları arasında bir noktada konumlandırabiliriz.

Sunucusuz bilişimin avantajları nelerdir?

  • Sunucu Yönetimi Yok: Tedarik etmeniz veya bakımını yapmanız gereken bir sunucu yoktur. Yüklemeniz, bakımını yapmanız veya yönetmeniz gereken bir yazılım veya çalışma zamanı yoktur. (sunucu hazırlama, monitoring , yönetim ortadan kalkar)
  • Esnek Ölçekleme: Uygulamanız otomatik olarak veya tek tek sunucu birimleri yerine tüketim birimlerinin (ör. aktarım hızı, bellek) değiştirilmesi aracılığıyla kapasitesi ayarlanarak ölçeklenebilir. (Siz uygulamanıza 1000 istek yaptığınızda arkada sistem 10 container’a ihtiyaç duyuyor ise Siz 10000 istek yaptığınızda hemen 90 container daha ayağa kaldırılır ve isteğinize aynı performans ile cevap verir.)
  • Değere Göre Ödeme: Sunucu birimi yerine sürekli performans veya yürütme süresi için ödeyin. (Bazen küçük bir uygulama için bile koca bir sunucu çalıştırırız , buna gerek yoktur) 
  • Otomatik Yüksek Erişilebilirlik: Sunucusuz bilişim yerleşik olarak erişilebilirliğe ve hata toleransına sahiptir. Bu özellikler uygulamayı çalıştıran hizmetler tarafından varsayılan olarak sağlandığından, mimarinizi bunları sağlayacak şekilde tasarlamanız gerekmez. (Uygulamanızın localinizde çalışması ile bir bulut sağlayıcısında çalışması arasında tartışmaya kapalı yüksek erişilebilirlik avantajı bulunmaktadır.)
Güvenlik Sorunları ve Alınabilecek Önlemler

Sunucusuz bilişim çalışma mekanizması, FaaS sağlayıcısı tarafından dizayn edilir; aynı zamanda güvenlik altyapısı da bu sağlayıcı tarafından sunulur. Ancak sağlayıcı tarafından sunulan güvenlik altyapısı veri merkezi, ağ, sunucular ve işletim sistemlerinin güvenliği olarak tasarlandığı için büyük ölçüde donanımsal bir yapıdadır.
Bu nedenle sunucusuz uygulamayı geliştiren yazılımcı kodun güvenli bir şekilde çalışmasını sağlamaktan sorumlu tutulan kişidir. Sunucusuz uygulamaların birbirine bağlı modüler bir yapıya sahip olması; bulut depolama ve API’ler gibi çeşitli kaynaklardan veri çekebilme özellikleri nedeniyle geniş bir atak yüzeyinin oluşmasına neden olmaktadır. Geliştiricinin göz önünde bulundurması gereken gerçekliklerden bir diğeri de verinin fonksiyonlar ve üçüncü parti servisler arasında taşınması yani daha çok dolaşımda olması ve bunun sonucunda ele geçirilmeye daha yatkın olmasıdır.
Aynı zamanda sunucusuz uygulamalar üçüncü parti kütüphaneler ve API-bağlantılı uzak web servisleri ile birlikte çalıştığı için karmaşık bir bağlantı kümesine sahiptir, bu nedenle dağıtımı yapılmadan önce bütün bir güvenlik testinin yapılması ve bağımlılıklarının tespiti zorlaşmaktadır.


Temel olarak uygulanabilecek güvenlik önlemleri arasında girdilerin kontrolü, güvenli bir şekilde devre dışı kalma(fail-safe), en az ayrıcalık kuralı(principle of least privilege) gibi politikalar önem arzetmektedir. Sunucusuz bilişimin karmaşık bir yapısı izleme ve hata ayıklama süreçlerini de karmaşıklaştırmaktadır, buna çözüm olarak sızma girişimlerini ortaya çıkaracak aynı zamanda debug işlemlerini kolaylaştıracak detaylı bir loglama sistemi yapılandırılabilir. Dış kütüphanalerin ve web kaynaklarının zafiyetlere karşı taranması da tavsiye edilen önlemler arasındadır. Öte yandan FaaS sisteminde fonksiyonların çalışmayı tamamladıktan sonra deaktive duruma geçmeleri DDoS gibi uzun süren saldırıların etkisiz kalmasına imkân sağlamaktadır.
Kaynakça

Yorumlar

Bu blogdaki popüler yayınlar

İNSAN SİNİR SİSTEMİNİN TAKLİDİ: YAPAY SİNİR AĞLARI

Yapay sinir ağları; beynin bir işlevi yerine getirme yönteminin matematiksel olarak modellenmesi ile tasarlanan sistemlerdir. Yapay sinir ağları, paralel dağıtılmış ağlar, bağlantılı ağlar, nuromorfik ağlar gibi adlarla da tanımlanmaktadır. Yapay sinir ağlarının ortaya çıkışından kısaca bahsetmem gerekirse; ilk yapay sinir ağı modeli 1943 yılında bir sinir hekimi olan Warren McCulloch ve bir matematikçi olan Walter Pitts tarafından “ Sinir Aktivitesinde Düşüncelere Ait Bir Mantıksal Hesap ( A Logical Calculus of Ideas Immanent in Nervous Activity )” başlıklı makale ile ortaya çıkarılmıştır. Öncelikle insanlarda bulunan sinir hücresinin yapısını ele alalım. Dentrites (Dendritler): Dendritler dışarıdan uyartıları alan ve hücre gövdesine ileten yapılardır. Dendritlerin çok sayıda olması, hücrelerin pek çok nörondan sinyal alma kapasitesini arttırır. Nucleus (Çekirdek): Akson boyunca işaretlerin periyodik olarak yeniden üretilmesini sağlayan yapılardır. Axon (Akson): Ak...

Mobil Uygulama Geliştirme: FLUTTER

Son zamanlarda merak sardığım konulardan biri de mobil uygulama geliştirme oldu. Küçücük bir uygulamanın bile verdiği çıktı ile mutlu olduğumu görünce mobil uygulama geliştirmekten zevk aldığımı hissettim. Araştırıp öğrenmeye başladım ve kısa sürede uygulama geliştirip ve bu uygulamayı kullanmak gerçekten güzel bir duyguydu. Şimdi sizlere geliştirdiğim basit bir Todo uygulamasından bahsedeyim. Flutter SDK ve Dart programlama dilini kullanarak çapraz platform çalışan yapılacaklar listesi uygulamasıdır. Bu uygulamada, verileri devamlılığını sağlamak için SQLite3 kullandım. Uygulama hem iOS hem de Android işletim sisteminde çalışmaktadır. Neden Flutter’ı Seçtim? ·  Flutter ile uygulamanızda yaptığınız bir değişikliği hot reload özelliği ile hızlı bir şekilde görebilirsiniz. Yani compile etmek(derlemek) için artık uzun süreler beklemeye gerek yok. Örnek vermek gerekirse Flutter ile varsayılan olarak gelen increment uygulamasını android sdk ile çalıştırmak ortalama 3 dak...

Davranışların İnterneti : IoB (Internet of Behaviors)

Bu yazımda yeni teknoloji trendleri içinde gördüğüm ve hayatımızda örnekleri olan fakat önümüzdeki zamanlarda daha çok hayatımızda olacak bir teknoloji konusu olan Davranışların İnterneti’ni ele alacağım.   Davranış İnterneti, çok çeşitli yeni veri kaynaklarıyla sonuçlanan cihazların birbirine bağlanması olan Nesnelerin İnterneti'nden (IoT) uzanır. Bu, geri bildirim döngüleri aracılığıyla eylemleri ve davranışları etkilemek için hem dijital hem de fiziksel dünyalardan gelen verileri bir araya getirir. IoB'nin yaptığı, bu verileri anlamlandırmak ve çevrimiçi satın alma veya belirli bir markayı takip etme gibi belirli insan davranışlarına eklemektir. Davranışın İnterneti, doğrudan bireylere odaklanan mevcut teknolojileri birleştirir. Yüz tanımadan konum izlemeye kadar, elde edilen verileri nakit satın alma veya cihaz kullanımı gibi ilişkili davranışsal olaylara bağlar. Kullanıcıların çevrimiçi etkinliklerinden toplanan verileri davranışsal psikoloji perspektifinden anlamak, tam o...