Serverless computing yani sunucusuz bilgi işlem, hibrit bulut ve çoklu bulut stratejileri ile birlikte yazılım geliştirmede en hızlı büyüyen alanlardan biridir.
MarketWatch’a göre, 2020’de 4,2 milyar dolardan 10,29 milyar dolara ulaşacak olan küresel sunucusuz mimari (serverless architecture market) pazarının, 2021’de 2026’ya kadar %16,2’lik bir CAGR’de büyümesi bekleniyor.
Serverless Teknolojisi Nedir?
Serverless, geliştiricilerin sunucu sorunlarını yönetmek yerine yalnızca iş sorunlarını çözmek için kod yazmaya odaklanmalarını sağlayan bulut tabanlı bir geliştirme yaklaşımıdır.
“Serverless Computing” yani “Sunucusuz Bilgi İşlem“, sunucuları düşünmeden uygulama ve hizmetler oluşturmanıza ve çalıştırmanıza olanak tanır. Sunucusuz uygulamalar oluşturduğunuzda, herhangi bir sunucu tedarik etmenize ve yönetmenize gerek kalmaz, böylece altyapı endişelerini kafanızdan atabilirsiniz.
“Serverless – Sunucusuz” terimi, sunucuların artık dahil olmadığı anlamına gelmez. Bu basitçe, geliştiricilerin artık onlar hakkında çok fazla düşünmeleri gerekmediği anlamına gelir. Serverless, geliştiricilerin odaklarını sunucu düzeyinden görev düzeyine kaydırmalarına olanak tanır.
Serverless (Sunucusuz) Yaklaşım: Serverless Computing (Sunucusuz Bilgi İşlem) Nasıl Çalışır?
Fiziksel sunucular hala sunucusuz bilgi işlemde yer alır. Ancak geliştiriciler altyapı sorunlarını ele almaz.
Peki bu teknolojiler neden serverless olarak adlandırılır?
Serverless bir yaklaşımda, bir bulut hizmeti veya satıcı, tüm arka uç hizmetlerini yönetir. Bu hizmetler, DevOps’un uygulamalarını çalışır durumda, güncel ve göreve uygun hale getirmek için ihtiyaç duyduğu her şeydir ve aşağıdakileri içerir:
- Donanım ayırma
- Sanal makine yönetimi
- Kapasite sağlama
- Sunucu çalışma süresi bakımı
- Konteyner yönetimi
- Bir ana bilgisayara yama ekleme
- Sunucular üzerinde test ortamları oluşturma
Bulut hizmeti sağlayıcınız tüm bunlarla ilgilenir. Bu model, geliştiricilerinizin uygulama ölçeklendirme ve ana bilgisayar yönetimi görevlerini de üstlenmesi gereken Hizmet olarak Altyapı (IaaS) modeliyle çelişir.
Geliştiriciler, kodlarını destekleyen altyapı hakkında hiçbir şey bilmek zorunda değildir. Müşterilerin sorunlarını hızlı, uygun maliyetli bir şekilde çözen kod yazmaya ve esnek altyapıya odaklanmaları yeterlidir.
Serverless Teknolojinin Avantajları Nelerdir?
2019 O’Reilley serverless anketi, katılımcıların %60’ından fazlasının sunucusuz bilgi işlemin benimsendiği bir yerde çalıştığını gösterdi.
2020’deki bir başka araştırma ise, AWS kullanıcılarının %80’inin şaşırtıcı bir şekilde sunucusuz AWS hizmeti olan Lambda’yı benimsediğini gösterdi.
Yapılan çalışmalardan da anlayabileceğiniz gibi, serverless teknolojinin geliştiricilere birçok faydası var. Peki bu avantajlar neler?
1. Uygun maliyet
Serverless, maliyet öncelikli bir yaklaşım benimser. Bu, fiziksel veya bulut tabanlı sunucu altyapısını yönetmek için uzman personel için harcama yapmanıza gerek olmadığı anlamına gelir. Kodunuzun temel altyapısını yükseltmek için para ve zaman harcamanız gerekmez. Bunun yerine, temel ürününüzü geliştirmek için platformu kullanmaya odaklanabilirsiniz.
Ayrıca, kullanım başına ödeme faturalandırma yöntemi, geliştiricilerin yalnızca kullandıkları hizmetler için ödeme yapmalarına olanak tanır.
2. Ölçeklendirme
Geleneksel sunucu ve bulut bilişim yaklaşımları, sabit kaynaklar ayırmanızı ve her şeyin plana uygun gitmesini gerektirir.
Ancak, sunucu isteklerinizi artıran viral bir promosyondan kaynaklanan kullanımdaki ani artış, uygulamanızın performansında bir düşüşe neden olabilir. Serverless, performansı etkilemeden mümkün olduğunca çok istek almanıza izin verir.
Sunucunun içinde otomatik olarak gerçekleşen işlevleri artırmanız yeterlidir.
3. Hızlı ve gerçek zamanlı güncellemeler
Sunucusuz bir mimari, uygulamayı her seferinde güncellemenize yardımcı olur. Tüm uygulamada değişiklikler yapabilir, kapsamlı özellikler ekleyebilir ve isterseniz birden çok güvenlik sorununu yamalayabilirsiniz.
4. İşlem üretkenliği
Sunucu yönetimi görevleri geliştiricileri birincil kodlama projelerinden uzaklaştırmadığı için mevcut sorunlara çok daha hızlı çözümler üretebilir. Böylece hızla değişen yazılım trendlerine ve kullanıcı deneyimi taleplerine ayak uydurabilmek için önemli olan DevOps ölçümlerini geliştirmeye odaklanabilirler. Bu aynı zamanda işletmelerin tamamen ölçeklenebilir uygulamalar oluşturmak için daha az insan ve süreç ayırabileceği anlamına gelir.
Serverless Teknolojiler Ne İçin Kullanılır?
Serverless yaklaşım, buluta geçişlerini kolaylaştırmak veya bulut tabanlı uygulamalarını verimli hale getirmek isteyen işletmeler için uygundur.
Serverless teknolojiler, uç bilgi işlem sayesinde multimedya ve büyük veri süreçleri gibi yüksek gecikmeli arka uç görevleri için idealdir.
Bant genişliğinden tasarruf etmeye yardımcı olur, yanıt sürelerini artırır, veri aktarımlarını düzenler ve gerçek zamanlı yanıt vermeyi destekler.
Genel olarak, uç bilgi işlem yönü, uygulamaları daha hızlı ve daha uygun maliyetli hale getirmeye yardımcı olur. Sunucusuz bilgi işlem, hızlı büyümeyi desteklemek için hızlı, ölçeklenebilir ve verimli altyapıya ihtiyaç duyan uygulamalar için de idealdir.
Ayrıca, bir uygulamanın ne kadar sunucu yükü alabileceğini tahmin edemiyorsanız, sunucusuz mimari hızlı değişikliklere uyum sağlamanın en dinamik yolu olabilir.
Serverless Kullanım Örnekleri
Günümüz dünyasında serverless teknolojilerin çeşitli kullanım durumları vardır. Örneğin, Facebook’un CTO’su olduğunuzu hayal edin. Facebook’un en önemli özelliklerinden biri, kullanıcıların fotoğraflarını ve videolarını yüklemelerine ve arkadaşlarıyla paylaşmalarına izin vermesidir. Facebook devasa bir platformdur, bu yüzden platformu çalıştırmak ve 2 milyardan fazla kullanıcı için ölçeklendirmek çok büyük bir altyapı (birçok sunucu dahil) gerektirecektir. Ancak, bu özel işlevsellik, Facebook uygulamasının tüm karmaşıklığını göz ardı ederek serverless model kullanılarak sorunsuz bir şekilde uygulanabilir.
Burada dikkat edilmesi gereken en önemli nokta, bu özel işlevin her dakika milyonlarca fotoğraf ve video yükleyen 2 milyardan fazla kullanıcı için ölçeklenmesi gerekliliğidir. Sunucusuz teknolojiler mevcut değilse, bu özel yeteneğin uygulanması çok büyük bir ön maliyet ve zaman alırken, sunucusuz teknolojiler kullanıyorsanız, sıfıra yakın ön maliyetle birkaç haftalık bir çaba ile çözüme ulaşabilirsiniz.
Serverless Teknolojinin Zorluklar Nelerdir?
Sunucusuz teknolojiler de mükemmel değildir ve bazı zorlukları vardır.
Peki, bu zorlukları nelerdir?
1. Gecikme
Uygulamanız bir süre için herhangi bir işlevi tetiklemezse, bir bulut sağlayıcısının sistemi, kaynakları koruyabilmek için onu uyku moduna geçirir. Bu, sunucusuz ve sürekli çalışan sunucular arasında öne çıkan bir farktır. Sunucusuz bilgi işlem ile ilgili sorun, uygulamanızın işlevi bir sonraki çağırışında, uyanmasının biraz zaman almasından kaynaklanır.
Gecikme süresi yalnızca milisaniyeler kadar sürer, fakat ağır uygulamalarda bu süre, müşteri isteklerinin gecikmesi anlamına gelebilir. Örneğin, bir e-ticaret uygulamasının müşterilerini hayal kırıklığına uğratmaması ve alışveriş sepetini terk etmemesi için hızlı hareket etmesi gerekir.
En iyi bulut sağlayıcıları, JavaScript kodunu en fazla beş milisaniyede başlatabilen ve çalıştırabilen bir Chrome V8 motoru kullanmak gibi taktikler kullanır.
2. Sunucusuz mimari bazı uygulamalar için ideal olmayabilir
Sunucusuz bulut sağlayıcılar (serverless cloud providers), dinamik kaynakları tahsis etmekten sorumludur. Bazı satıcılar, genel kaynaklarının ne kadarını kullanabileceğinizi sınırlayabilir. Ayrıca, hizmetleri müşterilerin platformlarıyla etkileşim kurmak için belirli protokolleri kullanmasını gerektirebilir. Bu, bazı özelleştirme seçeneklerinden vazgeçmeniz ve bulut sağlayıcıların sunduklarına teslim olmanız gerekebileceği anlamına gelir. Bu nedenle, ihtiyaçlarınızı anlayan ve sizi zorlamayacak bir satıcıyla çalışmanız gerekir.
3. Teknik aksaklıkları bulmak ve hataları ayıklamak zor olabilir
Sunucusuz bilgi işlem, monolitik yığınları daha küçük ve bağımsız işlevlere böler. Bu yüzden belirli sorun alanını bulmak zor olabilir.
İkincisi, DevOps’unuz kodlarının sunucu tarafında nasıl çalıştığını görmez, bu da test ve hata ayıklamayı daha da zorlaştırır.
4. Güvenlik endişe kaynağı olabilir
Kodunuzun altyapısının kontrolünü bir üçüncü taraf sağlayıcıya bıraktığınızda, hizmetin kusursuz olması konusunda onlara güvenirsiniz. Fakat sunucusuz bilgi işlem, aynı sunucudaki birkaç müşterinin kodunu aynı anda işler. Bu senaryo, birkaç müşterinin sunucu kaynaklarını paylaştığı durumlarda ortaya çıkar.
Bulut sağlayıcınıza bağlı olarak, herhangi bir karışıklık veri sızıntılarına neden olabilir. Sağlık, finans veya diğer kişisel veriler gibi hassas verileri ele alıyorsanız, bu büyük bir sorundur. Bunu engellemenin yolu, her sunucusuz işlevi korumalı alanında barındıran bir satıcıyla çalışmaktır.
5. Sunucusuz sağlayıcılar arasında geçiş yapmak zor olabilir
Sunucusuz bir yaklaşımı başarıyla kullanmak, satıcınızın altyapıyı özel ihtiyaçlarınıza göre özelleştirmesini gerektirir.
Temel uygulamanızın işlevleri belirli bir satıcıyla bu kadar iç içe olduğunda, ayrılmak, uygulamanızın mimarisinde taşınmadan önce ve sonra bazı büyük değişiklikler yapmak anlamına gelir, bu da maliyetli ve zaman alıcı bir iş haline gelebilir.
Bazı satıcılar, service workers API’si yerine JavaScript gibi taşınması daha kolay bir dilde kod yazarak bunu çözmeye çalışır.