Serverless Yapılara Giriş

Berk Emre Çabuk
Devops Türkiye☁️ 🐧 🐳 ☸️
4 min readMay 16, 2020
http://turnoff.us/geek/serverless-economic-impact/

Son zamanlarda mevcut durumdan dolayı evden çıkarmıyoruz bari bu durumu avantaja çevireyim dedim. Çoğumuzun aklında olan “abi şöyle bir fikir var da işte fırsat bulamıyoruz” cümlesindeki fırsatı oluşturdum kendime. Kafamdaki projelere ufaktan başlangıç yaparken yeni bir dünyaya giriş yapayım dedim ve Serverless yapıları(Çoğunlukla incelediğim CaaS ve FaaS) araştırmaya başladım. Madem bir şeyler öğreniyorum bunları da paylaşmadan geçmeyeyim dedim.

Öncelikle Cloud nedir sorusunun cevabına kısaca değinip ardından asıl konumuz Cloud platformunun bir parçası olan serverless yapılara geçip avantajları ve dezavantajlarından bahsedeceğim.

Cloud’un işlevini bence en sade biçimde anlatan cümle Ahmet Alp Balkan’ın deyimi ile “Elinizdeki bir problemi, başkasının problemi yapmaktır.” diyebiliriz. Yani sizin alt yapı ihtiyacınızı karşılıyor veya fazladan efor harcayacağınız hizmetleri sunuyor. Örnek vermek gerekirse fiziksel makinaya ihtiyacınız var ama bunu daha düşük bir maliyet ile size VM olarak sunuyor. Veritabanına ihtiyacınız var bunu size Sql/NoSql olarak daha ölçeklenebilir bir şekilde sunuyor. Yada IoT ile uğraşıyorsunuz bunun için bir altyapıya ihtiyacınız var veya bir big data ile uğraşıyorsunuz. Kısacası uygulamanızın geliştirimi dışında efor harcamanız gereken çoğu problemin karşılığı cloud üzerinde size alt yapı veya hizmet olarak sunulmaktadır.

Serverless, Cloud hizmetlerinin bir alt kırılımıdır. Serverless, aslında sizi fiziksel yada sanal makinalardan soyutluyor. Yani uygulamanızın çalıştırılacağı ortam tamamen isteklerinize/ihtiyaçlarınıza göre hazırlanıyor ve bütün konfigürasyonları, güncellemeleri, sürdürülebilirliği sizden bağımsız olarak üstlenici firma tarafından yapılıyor.

Mesela stateles bir uygulamanız/methodunuz var hızlı bir şekilde geliştirip productionda kullanmak istiyorsunuz ve herhangi bir sistem mühendisliği hakkında bilginiz yok. Cloud sağlayıcıları üzerinden bu uygulamanızı veya methodunuzu yayınlayabilirsiniz. Ücret olarak ise sadece kullandığınız kadar ödeyeceksiniz. Ayrıca trafiğiniz anlık arttığında hizmet kalitesi olarak herhangi bir sorun yaşamayacaksınız çünkü cloud sağlayıcınız tarafından uygulamanız otomatik olarak ölçeklenecektir.

Tabi serverless aşamasına geçişte bir çok farklı kademe bulunmaktadır. Zaten bu yazımda teorik olarak onlara değineceğim. Soldan sağa doğru giderek bize sağlanılan avantajlar ve dezavantajların ne olduklarını incelemeye başlayalım.

Infrastructure as a Service (IaaS)

Hizmet sağlayıcısı tarafından size belirttiğiniz özelliklere göre(ram,os,cpu vb.) sanal makina vermektedir ve bu VM’in ayakta kalması garanti eder. Bunun dışında gerçekleştirilecek bütün işlemler(firewall, networking, configuration vs.) size aittir.

Avantajları:

  • Fiziksel sunucuların bakım maliyeti yoktur.
  • Cloud Computing hizmetleri arasında fiyat açısından en uygunudur.
  • İhtiyaca göre ölçeklendirilebilir(ram,cpu,ssd gibi hardware ihtiyaçlarını arttırabilirsiniz).

Dezavantajları:

  • VM üzerindeki bir çok sistem konfigürasyonları bizim tarafımızdan yapılmalıdır.
  • Makinanın sürekli çalışır(Bunun dezavantajı aktif olarak kullanılmadığı zamanlarda bile fiyatlandırılıyor olması).

VM üzerindeki tüm kontrollerin sizde olmasını ve esnekliğe sahip olmak istiyorsanız tercih edilebilir.

Container as a Service (CaaS)

Cloud hizmet sağlayıcısı vereceğiniz container imajının çalışacağı ortamı hazırlar ve siz ortamdan tamamen bağımsız olursunuz. CaaS yapıdaki uygulamalar request geldiği zaman ayağa kalkıp çalışmaktadır, bu özelliğinden dolayı 7/24 uygulamanızın çalışmasına gerek kalmaz ve ücretlendirmesi de genellikle kullanılan cpu/ram üzerinden yapılmaktadır. IaaS avantajlarına ek olarak;

Avantajları:

  • Çalıştığı kadar ödüyorsun.
  • Otomatik Ölçeklenmektedir.(Oluşturulan containerlar belirlenen max instance seviyesine kadar arttırılabilir.)
  • Makinalardan tamamen bağımsız oluyorsunuz ve sistem konfigürasyonları ile uğraşmanıza gerek kalmıyor.

Dezavantajları:

  • Container’ların yönetimi sizin tarafından yapılacağından dolayı Docker/Kubernetes bilmeniz gerekmektedir.

Container içerisindeki projelerinizin bir bağlılığı yoksa, 7/24 ayakta olması gerekmiyorsa ve anlık gelen trafiğin değişikliği çok fazla ise tercih edebilirsiniz.

Platform as a Service (PaaS)

Cloud hizmet sağlayacısına çalıştırmak istediğiniz uygulamanızın runtime dosyalarını veriyorsunuz ve uygulamanızın çalışacağı ortamı size hazırlıyor. Uygulamanın ihtiyaçlarına/bağlılıklarına yönelik containerını kendi hazırlıyor. CaaS platformunun avantajlarına ek olarak;

Avantajları:

  • Doğrudan uygulamanı deploy edebilirsin.
  • Otomatik ölçeklenmektedir.(Belirli bir instance sayısı belirtmenize gerek yok.)

Dezavantajları:

  • Sınırlı sayıda dilleri/frameworkleri desteklemektedir.
  • Sadece web server uygulamaları desteklemektedir.

devops bilgisine ihtiyaç olmadan sadece uygulama özelinde efor harcanmak isteniyor ise tercih edilebilir.

Function as a Service (Faas)

Cloud hizmet sağlayıcısına sadece oluşturduğunuz fonksiyonunuzu gönderiyorsunuz. Bu 2 satırlık bir kod bile olabilir. Cloud sağlayıcısı bunu bir uygulama haline bir endpoint olarak size veriyor. CaaS ve PaaS platformlarının avantajlarına ek olarak;

Avantajı:

  • Sadece bir kod bloğu yazmanız yeterli oluyor.

Dezavantajları:

  • Diğerlerine göre işleyeceği trafiği eşit baz alırsak pahalı olması.
  • Sınırlı sayıda dili desteklemektedir.

Software as a Service (SaaS)

Bu işler bana göre değil ben direkt cloud üzerinden bir yazılım hizmeti alacağım diyorsanız ise SaaS uygulamalarını inceleyebilirsiniz.

Tabi yukarıdaki çizelgeye göre bir genelleme yapmak istersek soldan sağa doğru gittikçe;

  • Sistem üzerindeki esnekliğiniz/kontrolünüz azalır ama bununla birlikte sorumluluğunuz da azalır.
  • Alacağınız hizmet gittikçe daha pahalı bir hale gelir.
  • Harcayacağınız efor azalır.
  • Ortamdan daha fazla soyutlanmış olursunuz.

Bir sonraki yazımda CaaS ve PaaS üzerine pratik yapıyor olacağız.

Referanslar:

https://cloud.google.com/docs

https://medium.com/@ahmetb

--

--