Bu yazıda, Serverless ve FaaS(Function as a service)’ı karşılaştıracağız . İki seçenek arasındaki farklardan bazılarının yanı sıra bazı benzerlikleri de tartışacağız.
2000’lerin başında, bir web uygulaması veya hizmeti oluştururken, yazılımı geliştirmek, dağıtmak, yapılandırmak ve bakımını yapmak için tam bir ekibe ihtiyacı vardı. Birçok şirket bu işlerin hepsini evde yaptı. Sıkça karşılaştıkları kararlar şunları içeriyordu:
- Kullanılacak geliştirme dilini belirlemek
- Yazılımın platformunda karar vermek
- Dağıtımda yer alan zaman çizelgesini belirleme
- Yazılımın ölçeklenebilirliğini yapılandırma
- Sunucu türünü belirleme
- Sunucunun yapılandırmalarını seçme
- Sunucuyu dağıtma ve çakışmaları düzeltme
Bunlar, uygulamanın nasıl uygulanacağı ile ilgili faktörlerden sadece birkaçıydı. Zaman geçtikçe, yeni şirketler bu kaygıların çoğunu hafifletmek için büyüdü. Yine de, istikrarlı ve sağlam bir uygulama sağlamak için diğer ihtiyaçlar karşılanmadı ve ele alınması gerekiyordu.
Çeşitli Servis Platformları
Son on yılda, Cloud Computing gelişerek, uygulamaların sürdürülmesinde görülen önceki sorunların çoğunun hafifletilmesine yardımcı olmak için ortaya çıkmıştır. Bulut Sunucular sanallaştırıldıkları için daha verimli bir şekilde oluşturulur ve yönetilir. Bu aynı zamanda fiziksel donanımın konuşlandırılması için bekleme ihtiyacını da ortadan kaldırır. Geleneksel bir fiziksel sunucu, bir bulut sunucusu veya bir AWS EC2 örneği gibi bir servisle değiştirilse bile, aynı sunucu yönetimi ve konfigürasyonu görevleri de geçerlidir.
Tam bu esnada Serverless(Sunucusuz) devreye girdi. Serverless, Cloud Computing’den bir sonraki adımdır. Sunucuların yalnızca resimden gizlendiği anlamına gelir. Sunucusuz hesaplamalarda, sunucu ve uygulamanın bu ayrımı bir platform kullanılarak yönetilir. Platformun veya sunucusuz sağlayıcının sorumluluğu, uygulamanızın tüm gereksinimlerini ve yapılandırmalarını yönetmektir. Bu platformlar, sunucunuzun yapılandırmasını perde arkasından yönetir. Sunucusuz hesaplamada, sadece uygulamaya veya kodun oluşturulmasına ya da kurulmasına odaklanabilirsiniz.
Sunucu.com.tr’ın WordPress Hosting platformunu düşünün. Bir WordPress uygulaması dağıtıldığında, bir sunucuyu açmak, WordPress’i indirmek veya bir veritabanı oluşturmak yerine, tek yapmanız gereken siteniz için bir ad seçmek, uygulamanın kullanıcı adı ve şifresi gibi birkaç başka ayrıntıyı doldurmak ve oluştur düğmesine basmak. Arka planda WordPress’i çalıştırmak için gerekli olan tüm servisler platform tarafından otomatik olarak kurulur. Artık kullanıma hazır çalışan bir WordPress kurulumuna sahip olduğunuza göre, uygulama içinde çalışmaya başlamaktan başka bir şey yapmanıza gerek yoktur.
Mikro hizmetler, sunucusuz bilgi işlem kullanarak karmaşık bir uygulamanın oluşturulması ve kullanılması için modern bir mimaridir. Sunucusuz bilgi işlem uygulayan çoğu bulut platformu, geliştirici ve geliştirme ekiplerine daha fazla odaklanır.
Web sitemizin tamamını sunucusuz bir platformda çalıştırabildiğimiz için, çekirdek uygulamaya, veritabanına ve uygulamamıza eklenmiş tüm gerekli hizmetlere ek olarak aynı dağıtılmış ortamda çalışabiliriz. FaaS (bir hizmet olarak işlev görür) sunucuların soyutlamasını bir adım daha ileri götürür. FaaS, sunucu platformunun aksine hizmetlerin kendisine yoğunlaştığı için yazılımı daha kolay dağıtmanıza olanak tanır. Sunucusuz bilgi işlemden farklı olarak, FaaS sunucu kurulum ve konfigürasyon endişesini atlamanızı sağlar. FaaS, ayrıca bize uygulama kurulum ve konfigürasyonundan da vazgeçme kabiliyeti de veriyor!
Bir uygulama oluşturmaya başlarsak, yine de bir tür programlama dilinin yanı sıra bu dille uyumlu bir çerçeve kullanmak zorundayız. Örneğin, tüm bileşenleri geliştirmek için FaaS olarak JavaScript ve Angular JS veya Vue JS kullanarak bir frontend uygulama inşa ediyorsak, buradaki kavram inşa etmek zorunda kalmadan kod yazabilmektir. Bir uygulamanın parçası olacak bir çerçeve kullanarak temeli atmaktır. Bir başlangıç veya çalışma noktasına sahip bir uygulama olmadığından, herhangi bir FaaS fonksiyonunun bir tetikleyicisi olmalıdır. Bu tetikleyici, bir dosyayı kaydetmekten, her gün çalışan bir işe kadar herhangi bir şey olabilir.
FaaS ile, dış istemde tetiklenecek daha büyük bir uygulamayı çalıştıracak tek bir işlev veya kod parçasına odaklanırsınız. Bu işlevlerin küçük olması ve daha önce bahsedilen mikro hizmetler gibi bir şey yapması gerekir. Bir mikro hizmet metodolojisinde, her servis tek bir şey yapmaktan sorumlu veya sorumludur. Aynısı FaaS için de geçerlidir; Her fonksiyon tek bir görevden sorumludur.
FaaS hizmetinin güzel bir örneği Amazon’un Lambda’sıdır. FaaS işlevi için basit bir kullanım AWS S3 Bucket üzerinde bir resmi yeniden boyutlandırmak olabilir. Gereken tek şey birkaç izin ayarlamak, bir tetikleyici tanımlamak ve görüntüyü yeniden boyutlandıran kodu yazmaktır.
Şimdi teknolojiyi biraz konuştuktan sonra, her birinin bazı avantajlarına ve dezavantajlarına bakalım. Serverless Computing (Sunucusuz bilgi işlem) ile başlayalım.
Avantajları
- Bir uygulamayı dağıtırken gerekli hiçbir sunucu yapılandırması yoktur.
- Sunucusuz bilgi işlem hizmetlerinin veya sistemlerinin çoğu kolayca ölçeklenebilir. Bu nedenle, bir uygulamanın genişlemesi veya daralması gerekiyorsa daha fazla esneklik sunabilirler.
- Serverless geleneksel bir sunucu tabanlı barındırma metodu kullanmaktan daha az maliyetlidir. Bu, platform yönetiminin perde arkasındaki esnekliğinden kaynaklanmaktadır.
Dezavantajları
- Sunucusuz bilgi işlem kullanmanın bir dezavantajı, sunucu kontrolünün kaybıdır. Bu seçeneği kullanırken, bazı sağlayıcılar sunucuya erişime izin vermeyecek veya sunucu özelliklerinin değiştirilmesine izin vermeyecektir.
- Bazı durumlarda, sunucusuz yapılan arama türüne ve sayısına bağlı olarak daha pahalı olabilir. API ağ geçidi yoğun olarak kullanılıyorsa, API fiyatlandırması çok daha yüksek olabilir.
Şimdi FaaS için bazı avantaj ve dezavantajlara bakalım.
Avantajları
- Verimlilik: Küçük bir görevi başarmak istiyorsanız tüm bir uygulamayı yazmaya gerek yoktur.
- Düşük Maliyet: Bir FaaS sisteminde, küçük kod parçası yalnızca tetiklendiğinde çalışır, bu nedenle yalnızca kullandığınız şey için ödeme yaparsınız.
- Hız: Talep arttıkça, tüm bir uygulamayı kopyalamak yerine, tek bir işlevi oluşturmak ve çoğaltmak daha kolaydır.
- Ölçeklenebilirlik: Talep arttıkça, tüm uygulamanın aksine tek bir işlevi ölçeklendirmek daha kolaydır.
Dezavantajları
- İşlevlerin küçük olması ve yalnızca bir görevi tamamlaması gerekir.
- Çok sayıda işlevi yönetmek zor olabilir.
Özet
Serverless computing FaaS yerine kullanmak için iyi bir seçim olduğunda, bazı senaryoları gözden geçirelim.
Kapsamlı bir e-ticaret uygulaması kullanmanız gerekiyorsa. Ürün yerleştirme, alışveriş sepetini yönetme ve ödeme sistemini yapılandırma işlerinin tamamını yapan tek bir uygulama oluşturmak ve uygulamak daha kolay olacaktır. Bir sistemi bu kadar hareketli parçaya sahip olduğu kadar karmaşık bir sisteme yerleştirdiğinizde, tüm mantığı tek bir konuşlandırılabilir uygulama içinde tutmak çok daha kolay yönetilebilir hale gelir.
E-Ticaret mağazanız büyürse bile, sunucusuz bilgi işlem servisi, ihtiyacınızı karşılamak için uygulamanızı ölçeklendirir. Ek olarak, uygulamanız her zaman çalışıyor ve yeni siparişler almaya hazır olur. Diğer örnekler, büyük bir blog veya kritik bir veritabanı çalıştırmanız gerektiğinde olabilir. Dolayısıyla, karmaşık ve büyük olan herhangi bir uygulama bu seçeneği seçmek için en iyisidir.
Peki, FaaS’ı kullanmak ne zaman iyi bir seçim olacaktır?
FaaS, veri işleme ve gerçek zamanlı işlemler için iyidir. Envanteri yönetmeye yardımcı olmak için günlük satış verilerine ihtiyaç olduğunu varsayalım. Bir müşteri ne zaman bir ürün satın alırsa, bir veritabanı tablosuna eklenir. Bir FaaS işlevi, bu veritabanı tablosundaki bir işlevi tetiklemek, satın alınanın verilerini işlemek ve bir yöneticiye görüntülemek veya hatta daha fazla ürün sipariş etmek için başka bir işlevi tetiklemek için iyi bir aday olabilir. FaaS, tek bir kod işlevinde paketlenebilen gerçek zamanlı işlem gerektiren herhangi bir şey için iyi bir seçimdir.
Hem sunucusuz hem de FaaS, verilen bir göreve veya ürüne duyulan ihtiyacı yerine getirmek için birlikte veya ayrı ayrı kullanılabilecek mükemmel bulut bilgi işlem araçlarıdır.