Serverless Framework
Sunucusuz mimari uygulamalarınızı daha hızlı yapılandırıp dağıtımını sağlayabilirsiniz.
Serverless Framework, AZURE, AWS, Google, Knative, Kubernetes vb. gibi birden fazla bulut sağlayıcısı ve platformunda sunucusuz uygulamalar oluşturmak, paketlemek ve dağıtmak için kullanılan açık kaynaklı bir araçtır.
Anlatmaya başlamadan önce sunucusuz mimari hakkında bilgi tazeleyelim.
Sunucusuz Mimari
Uygulamayı çalıştırmak için gereken altyapının talep üzerine üçüncü taraf bir sağlayıcı tarafından başlatıldığı ve yönetildiği bir tasarım modelidir. Hesaplama kaynakları yalnızca uygulama mantığı yürütmesine ihtiyaç duyulduğunda kullanılır, bu nedenle de işlem gücü ve maliyeti tasarrufu sağlar.
Daha fazla detay için önceki yazımı inceleyebilirsiniz.
Peki gerçekten sunucusuz mu ?
Bu mimari adını yeni duyanların aklına gelen ilk sorunun cevabı, aslında herkesin bildiği gibi herhangi bir uygulama barındırmak ve çalıştırmak için bir sunucunun gerekli olduğudur.
Sunucusuz olarak adlandırılma nedeni uygulama çalışma anında değil uygulama boştayken sunucusuzdur. Bir talep geldiğinde uygulama bir sunucuda ayağa kaldırılır ve gerekli talep karşılanır. Sunucusuz bir uygulamayı, başlangıç durumunda veya minimum yapılandırmada sıfır işlem kaynağı kullanacak şekilde ayarlanan otomatik ölçeklendirme uygulaması olarak düşünülebilir.
Bir framework’e neden ihtiyaç vardır ?
Bugün mevcut olan birden çok bulut sağlayıcısında sunucusuz uygulamalar için gereken tüm kaynakları sağlama ve yönetme ayrıntılarında boğulmak istemediğimiz için aslında bir framework’e ihtiyacımız var. Eforlarımızı iş mantığını geliştirmeye verip diğer altyapıyla ilgili konuların başka bir yardımcı araç ile ele alınmasına izin verebiliriz. Bu bizi ekstra zaman, efor ve karmaşıklıklardan kurtaracaktır.
Serverless framework, geliştiricilerin farklı bulut sağlayıcılarında yapılandırmalar ve kaynak sağlama konusunda çok fazla endişe duymadan yüksek kaliteli uygulamaları kolay ve hızlı bir şekilde oluşturup sunmalarını sağlamak için tam olarak ihtiyacımız olan şeydir.AZURE, AWS, Google, Kubernetes vb. gibi tüm büyük bulut sağlayıcılarını ve platformlarını destekler.
Basit bir örnek uygulama yapalım
Aşağıdaki örnekte, çağrıldığında sonunda eklenen bir dizeyle birlikte Hello mesajı içeren bir json yanıtı döndüren bir Node.js hello-world sunucusuz uygulaması oluşturacağız. Bu örnekte Azure sağlayıcısını kullanacağım.
Başlamadan önce yapmamız gereken adımlar;
1- Serverless CLI yüklüyoruz, detaylı bilgiye buradan ulaşabilirsiniz.
npm install -g serverless
2- Azure functions sağlayıcı eklentisinin yüklenmesi. Buraya ek olarak uygulamanın dağıtımı için daha önceki yazıda olduğu gibi Azure CLI yüklenmesi ve gerekli ayarların yapılmış olması gerekmekte, yine detaylı bilgiye buradan ulaşabilirsiniz.
npm i --save serverless-azure-functions
Yukarıdaki yüklemeleri yaptıysak Serverless CLI’ı kullanarak bir uygulama oluşturuyoruz.
sls create --template azure-nodejs --path hello-world
Uygulama oluşturulduğunda src/handlers altında hello.js isimli function’ın oluştuğunu göreceksiniz.
Uygulama dizinde de serverless.yml isimli yapılandırma dosyası oluşacaktır.
Serverless.yml dosyasına aşağıdaki gibi oluşmalıdır, bazı tanımlamalarda yorumlarımı görebilirsiniz.
Artık paketlemeye ve dağıtıma hazır yapılandırma dosyası ve uygulaya sahibiz.
Uygulama dizininde aşağıdaki komutu çalıştırarak paketleme işlemini başlatıyoruz.
serverless package
Sağlayıcıyı Azure olacak şekilde yapılandırdığımız uygulamamızın .serverless klasöründe tüm gerekli Azure hizmetlerini yönetmek için sunucusuz oluşturulan paketimizi görebilirsiniz.
Paket hazırlandığına, uygulamamızı dağıtmak ve test etmek için aşağıdaki komutu çalıştıralım. Dağıtımı biraz vakit alabilir.
serverless deploy
Yukarıdaki komutun başarıyla tamamlanmasının ardından, Azure portalda üzerinde functions uygulamanızın oluşturuğunu görebilirsiniz
Aşağıdaki komutla uygulamayı test etmeye hazırız.
serverless invoke -f hello -d {"name": "Mertcan"}{
"statusCode": 200,
"body”: "{\n \"message\": \"Hello Mertcan\"\n}”
}
Yukarıda bahsettiğimiz gibi aslında Serverless framework Azure yapılandırmasından dağıtımına fazla zaman harcamandan sadece yazdığımız koda odaklanarak geliştirme yapmayı sağlamaktadır.
Örnek olarak basit bir uygulama seçtim ancak daha karmaşık projelerinizi de başarıyla işlediğini görebilirsiniz.
Sonuç
Sunucusuz mimari yapıları çok hızlı gelişiyor ve geliştiriciler tarafından da benimsenmesi katlanarak artıyor. Şu anda yazılım geliştirme dünyasının en güncel alanlarından biridir. Bu teknolojinin geliştirilmesini, yapılandırması ve dağıtımı kolaylaştırmak için piyasada halihazırda mevcut olan birçok araç bulunmaktadır.