Serverless Nedir?
Son yılların popüler konularından Microservices, beraberinde yeni problemleri ve ihtiyaçları da geliştirme hayatımıza sokuyor. Son zamanların sıcak kavramlarından Serverless da bunların başında geliyor. Dağıtık sistemlerin, günümüz yazılım alt yapılarının vazgeçilmez sistemler olması Serverless kavramını daha ilginç hale getiriyor.
Serverless, artık sunuculara gerek yok veya uygulamalar sunucularda çalışmayacak gibi bir yaklaşım değil. Yazılım geliştirme ve yönetme açısından, sunucu kavramına daha az kafa yormamızı sağlayan bir yaklaşım veya mimari kalıp diyebiliriz. Ölçeklendirme, yük dağıtımı, sunucu konfigürasyonları, hata yönetimi, deployment ve hatta run-time gibi konuları dert etmeyin temeline dayanıyor aslında.
Serverless için bir başka bakış açısı da, başka sağlayıcılardan alınan servisler ile uygulama mantığını oluşturan ya da destekleyen bir mimari kalıp olması. Yetkilendirme için bir sağlayıcı, e-mail için başka farklı bir sağlayıcı, persistence için başka bir sağlayıcı ile bir logic oluşturmak ve uygulamaları bu şekilde tasarlamak için düşünebileceğimiz bir kalıp olarak da düşünebiliriz. Bu bakış açısında sağlayıcıları basit olarak fonksiyonlar; Functions as a Service(FaaS) olarak düşünmek bazı şeyleri daha iyi anlamamızı sağlayabilir.
Bu iki yaklaşımın da öne çıkan ve önemli olan noktası ölçeklendirmenin önemli olması ve serverless çatısı altında otonom bir şekilde yapılması. Ölçeklendirme ve maliyet konuları, dağıtık sistemlerde önemli konular olduğu için bu tarz farklı mimari yaklaşımlar, tasarımlar ve kalıplar gündeme geliyor. Tartışılıyor, geliştirilip uygulanıyor ve zamanla literatürdeki yerini alıyor. Serverless ile ilgili daha kapsamlı ve ayrıntılı olarak Martin Fowler’ın sitesindeki yazıyı başlangıç olarak tavsiye ederim.
Peki neden?
Geliştirme yaparken temel amacımız bir problemi çözecek logic’i ortaya çıkarmaktır. Ancak işin sonunda problem logic’i dışında başka şeyleri de düşünmek durumunda kalıyoruz. Çalışacağı sunucu konfigürasyonu, sunucu yetkilendirmesi, oturum yönetimi, yük dağıtımı gibi konular bunlardan sadece bir kaçı. Bir CRM uygulamasının problem domain’i dışında bu tarz konular ile de ilgilenmek, hızlı ve çevik çözüm üretme konusunda günümüzde bir engel artık.
Cloud Computing, servis odaklı mimariler, PaaS ve FaaS gibi konular aslında bunlara çözüm olarak geliştirilen kavramlar. Peki serverless bu noktada nasıl konumlanıyor? Uygulama geliştiren kişiler için yukarda bahsettiğim tüm konular birer maliyet. Sadece maddi anlamda değil tabi ki.
Efor, zaman, yönetim gibi konular da geliştirilen sistemler büyüdükçe artan maliyetler olarak bizlerin karşısına çıkıyor. Verim ve maliyet oranları gündeme geldiğinde serverless yaklaşımı önemli bir konu haline geliyor. Serverless yaklaşımında maliyet olabilecek konuları başka sağlayıcılardan alıp, kendi ihtiyaçlarınıza göre ölçeklendirmek mümkün. Bu ölçeklendirmenin de otomatik olarak sağlanması, sadece tüketilen kaynakların maliyet olarak karşımıza çıkması da serverless’ın önemli bir avantajı. Uygulamalar açısından, ödeme özelliklerinin kullanılan ya da çalışan fonksiyona kadar indirgenmesi ve bunun maliyet açısından avantaj sağlaması, serverless kavramını daha fazla duymamızın en büyük sebeplerinden biri olacak.
AWS Lambda ve Azure Functions serverless uygulamalar geliştirebileceğiniz iki popüler bulut servisi. İlginizi çekiyorsa bunlara göz atmanızı tavsiye ederim.
1 Comment
Yunus demir
11 Ocak 2017 at 19:42Az kod çok iş. Doğru kurgulandığı zaman ciddi avantajları olan bir yaklaşım. Emeğinize sağlık