Sunucusuz İşlevler nedir?
Bu makalede, sunucusuz bilgi işlem, çeşitli yazılım mimarileri, sunucusuz işlevler, bunların faydaları ve kullanım durumları hakkında konuşacağız. Makalenin ikinci bölümünde, Cloud Code işlevlerini kullanarak Back4app üzerinde sunucusuz bir arka uç oluşturmayı öğreneceğiz.
Contents
- 1 Sunucusuz işlev nedir?
- 2 Sunucusuz işlevler nasıl çalışır?
- 3 Farklı yazılım mimarileri nelerdir?
- 4 Sunucusuz işlevlerin faydaları nelerdir?
- 5 Sunucusuz işlevlerin kullanım alanlarından bazıları nelerdir?
- 6 Sunucusuz ortamlara örnekler nelerdir?
- 7 Back4app üzerinde Sunucusuz Arka Uç Oluşturma
- 8 Sonuç
- 9 Sunucusuz (serverless) fonksiyonlar nedir?
- 10 Neden sunucusuz mimari kullanılmalı?
- 11 Farklı yazılım mimarileri nelerdir?
- 12 Sunucusuz fonksiyonların faydaları nelerdir?
- 13 Sunucusuz fonksiyonlar nasıl dağıtılır?
Sunucusuz işlev nedir?
Sunucusuz işlev, tek bir amaca hizmet eden olay güdümlü bir kod parçasıdır. HTTP istekleri, veritabanı değişiklikleri veya diğer mesajlar gibi belirli olaylar tarafından tetiklenebilir. Bu işlevler bir yazılım geliştirici tarafından yazılır ve daha sonra buluta dağıtılır. Bulut sağlayıcısı daha sonra altyapıyı ve güvenliği yönetir, kodun çalıştırılmasıyla ilgilenir ve kaynakları talebe göre otomatik olarak ölçeklendirir.
Sunucusuz işlevler genellikle sunucusuz bilişim ile karıştırılır. Terimler birbiriyle ilişkili olsa da birbirlerinin yerine kullanılamazlar. Sunucusuz bilişim, bulut sağlayıcılarının uygulamaları çalıştırmak için gereken altyapıyı yönettiği bir bulut bilişim modeliyken, sunucusuz işlevler, geliştiricilerin küçük kod parçalarını bulutta kolayca çalıştırmasına ve dağıtmasına olanak tanıyan bir sunucusuz bilişim türüdür.
Sunucusuz işlevler nasıl çalışır?
Çoğu modern uygulama iki bölüme ayrılır: ön uç ve arka uç. Ön uç kullanıcının gördüğü ve etkileşime girebildiği şeyken, arka uç kullanıcının göremediği her şeydir. Buna iş mantığı, veri depolama, veritabanları, API’ler ve benzerleri dahildir.
Sunucusuz işlevler, yazılım uygulamalarının arka uç bileşenini basitleştirerek arka ucu birden fazla yeniden kullanılabilir tek amaçlı işleve böler. Bu işlevler daha sonra karmaşık görevleri gerçekleştirmek için bağlanabilir.
Sunucusuz işlevleri anlamanın en kolay yolu gerçek dünyadan bir örneğe bakmaktır. Bir kullanıcının ürünleri görüntüleyebildiği, sepete ürün ekleyebildiği, sepetten ürün çıkarabildiği ve ödeme yapabildiği bir e-ticaret mağazamız olduğunu varsayalım.
Sunucusuz arka ucumuz büyük olasılıkla aşağıdaki işlevleri içerecektir:
getProductList() -> retrieves the products from the database
getProduct(productId) -> retrieves a specific product from the database
getCart(user) -> returns the products in the user's cart
addToCart(user, productId) -> adds a product to the user's cart
removeFromCart(user, productId) -> removes the product from the user's cart
clearCart(user) -> clears user's cart
Ayrıca diğer sunucusuz işlevleri kullanan daha karmaşık işlevlerimiz de olacaktır:
checkout()
cart = getCart(user)
finalizeCheckout(user, cart) -> deducts money from user's account
clearCart(user)
sendConfirmationEmail(user, cart) -> sends a confirmation email to the user
Peki, sunucusuz işlevler kaputun altında nasıl çalışır?
Kaputun altında, sunucusuz işlevler, kodu talep üzerine kolayca dağıtılabilen ve ölçeklendirilebilen hafif, yalıtılmış kapsayıcılara paketlemeyi içeren kapsayıcı teknolojisinden yararlanarak çalışır. Sunucusuz bir işlev tetiklendiğinde, bulut sağlayıcısı kapsayıcının yeni bir örneğini oluşturur, içindeki kodu çalıştırır ve kodun yürütülmesi bittiğinde kapsayıcıyı kapatır.
Bulut sağlayıcısı genellikle ölçeklendirme, yük dengeleme ve kaynak tahsisi de dahil olmak üzere temel altyapıyı yönetmenin tüm yönlerini ele alır, böylece geliştiricilerin sunucuları yapılandırma veya yönetme konusunda endişelenmeleri gerekmez. Bunun yerine, geliştiriciler sadece kod yazar, bulut sağlayıcısına yükler ve kodun ne zaman çalışması gerektiğine ilişkin tetikleyici koşulları tanımlar.
Farklı yazılım mimarileri nelerdir?
Sunucusuz işlevlere ek olarak, monolitik mimari ve mikro hizmetler mimarimiz de var. Bunlara bir göz atalım.
Monolitik Mimari
Monolitik bir mimaride uygulama, tüm bileşenlerin sıkıca entegre edildiği tek bir birim olarak inşa edilir. Tüm işlevler tek bir kod tabanında birleştirilir ve uygulama tek bir paket olarak dağıtılır. Monolitik mimarinin oluşturulması ve bakımı kolaydır, ancak uygulama büyüdükçe karmaşıklaşabilir ve ölçeklendirilmesi zorlaşabilir.
Mikro Hizmetler Mimarisi
Mikro hizmetler mimarisi, API’ler aracılığıyla birbirleriyle iletişim kuran küçük, bağımsız hizmetlerin bir koleksiyonu olarak yazılım uygulamaları oluşturmaya yönelik bir yaklaşımdır. Her bir mikro hizmet, uygulamanın belirli bir işlevinden sorumludur ve bağımsız olarak geliştirilebilir, dağıtılabilir ve ölçeklendirilebilir. Bu yaklaşım daha fazla esneklik, ölçeklenebilirlik ve esneklik sağlar, ancak hizmet iletişimi ve yönetimi açısından karmaşıklığı da beraberinde getirebilir.
Sonuç olarak, monolitik uygulamalar çok fazla ölçeklendirme gerektirmeyen daha basit projeler için en uygunudur. Öte yandan mikro hizmetler ve sunucusuz uygulamalar genellikle yüksek oranda ölçeklenebilir ve esnek olması gereken daha karmaşık projeler için daha uygundur. Mikro hizmetlerin tüm avantajlarına ek olarak, sunucusuz mimari altyapı yönetimini de soyutlar. Böylece zamandan ve paradan tasarruf etmenizi sağlar.
Sunucusuz işlevlerin faydaları nelerdir?
Hizmet Olarak İşlevler (FaaS) birçok faydayı beraberinde getirir.
Daha hızlı geliştirme
Sunucusuz işlevler, altyapıyı yönetmeye, sunucuları yapılandırmaya, ölçeklendirmeyi ayarlamaya veya sunucuları yönetmeye gerek olmadığından daha hızlı geliştirme ve dağıtıma olanak tanır. Sunucusuz işlevler tek bir amaca hizmet eden küçük kod parçaları olduğundan kolayca test edilebilir ve hata ayıklanabilir. Hepsinden iyisi, sunucusuz işlevler diğer bulut hizmetleri veya 3. taraf API’leri ile kolayca entegre edilebilir ve birçok yaygın sorunu ortadan kaldırır.
Yüksek ölçeklenebilirlik ve kullanılabilirlik
Sunucusuz işlevler çok sayıda isteği işleyebilir ve talebe göre otomatik olarak ölçeklenebilir. Bu, uygulamanın her türlü trafik seviyesini karşılayabilmesini sağlar. Üstelik hizmetinizi kimse kullanmıyorsa ortam sıfıra ölçeklenebilir ve bu da size çok para kazandırır.
Hizmet Olarak İşlevlerinizi (FaaS) birden fazla bölgeye dağıtmanız da mümkündür. Bu, işlevlerinizi dünya geneline dağıtarak uygulamanızın kullanılabilirliğini artırmanıza yardımcı olabilir.
Daha fazla esneklik
Sunucusuz işlevler, geliştiricilerin ihtiyaçlarına en uygun programlama dilini ve araçlarını seçmelerine olanak tanır. Çoğu sunucusuz sağlayıcı JavaScript, Java, Python, Go ve .NET gibi birden fazla dili desteklemektedir. Bu, uygulamaların geliştirilmesi ve dağıtılmasında daha fazla esneklik sağlar.
Maliyet etkinliği
Sunucusuz mimari en uygun maliyetli mimaridir çünkü yalnızca tükettiğiniz kadar ödersiniz. Bu, işlevlerinizin çalışma zamanı ve işlevlerinizin kullandığı diğer yönetilen hizmetlerdir. Ayrıca, atıl kaynaklar için ödeme yapmanız gerekmez.
Sunucusuz işlevlerin kullanım alanlarından bazıları nelerdir?
Sunucusuz fonksiyonlar hemen hemen her projede kullanılabilir. Sunucusuz işlevleri, projeyi sıfırdan oluşturmak için veya yalnızca belirli görevler için kullanabilirsiniz. Ana kullanım durumları şunları içerir:
- Web uygulamaları
- RESTful API’ler Oluşturma
- Tetikleyici tabanlı görevler
- Zamanlanmış görev otomasyonu
- Eşzamansız işleme
- Nesnelerin İnterneti (IoT)
- CI/CD
Çoğu geliştirici ekibi sunucusuz sisteme aşamalı olarak geçiş yapar. Geleneksel sunuculara ihtiyaç kalmayana kadar görev görev geçiş yaparlar.
Sunucusuz ortamlara örnekler nelerdir?
Hizmet Olarak Platform (PaaS)
Hizmet Olarak Platform (PaaS), kullanıcılara bulut tabanlı bir ortamda uygulama oluşturma, yönetme ve dağıtma olanağı sunan avantajlı bir bulut bilişim çözümüdür.
Uygulama geliştirme, özelleştirme ve test için önceden yapılandırılmış araçlar sağlayarak altyapı yönetimi için harcanan zamanın çoğunu ortadan kaldırır.
PaaS’a dağıtılacak bir uygulama geliştirmek, geleneksel bir uygulama geliştirmekten çok farklı değildir. PaaS sağlayıcıları, sunucusuz işlevleri kutudan çıkar çıkmaz desteklemez.
PaaS hizmetleri şunları içerir: Heroku, AWS Elastic Beanstalk, DigitalOcean App Platform ve Fly.io.
Hizmet Olarak Arka Uç (BaaS)
BaaS, bulut altyapısını yönetmek için bir platform sağlayarak arka uç geliştirmeyi kolaylaştırır ve basitleştirir.
Bir arka uç oluşturmakla ilgili tüm sıkıcı görevleri yerine getirerek geliştiricilerin uygulama oluşturmaya odaklanmasına olanak tanır. BaaS, bu süreçlerin çoğunu otomatikleştirerek geliştiricilerin hızlı ve verimli bir şekilde sağlam uygulamalar oluşturmasına yardımcı olur.
Platform, kullanıcı yönetimi, bildirimler, sosyal medya entegrasyonları ve depolama dahil olmak üzere çok çeşitli özellikler sunar. Bu da onu dijital varlıklarını geliştirmek isteyen işletmeler için ideal bir seçim haline getiriyor. Ek olarak, tüm kullanıcılar için erişilebilir kılan kolaylık ve kullanım kolaylığı sağlar.
Geliştiriciler arka uç altyapısı hakkında endişelenme ihtiyacından kurtulurlar ve bunun yerine çabalarını projelerinin ön ucunu oluşturmaya odaklayabilirler. Bu sayede başka görevlere zaman ve enerji ayırmak zorunda kalmadan asıl işlerine konsantre olabilirler.
Bazı BaaS sağlayıcıları sunucusuz işlevleri dağıtmamıza da izin veriyor:
- Back4app Cloud Code işlevlerine sahiptir
- Firebase, Google Cloud Functions sahiptir
- AWS Amplify, AWS Lambda‘ya sahiptir
Diğer BaaS sağlayıcıları arasında Supabase, Kinvey ve Parse bulunmaktadır.
Hizmet Olarak İşlev (FaaS)
Hizmet Olarak İşlev (FaaS), sunucusuz işlevler için özelleştirilmiş bir bulut bilişim modelidir. FaaS, geliştiricilerin tam bir uygulama yığını oluşturmak ve yönetmek yerine tek tek işlevler yazmaya ve dağıtmaya odaklanmasına olanak tanır. Sunucusuz işlevler genellikle 3. taraf API’ler ve diğer bulut hizmetleri ile entegre olur. Bu bilgi işlem modeli otomatik olarak ölçeklenebilir ve herhangi bir trafiği karşılamak için hızla ölçeklenebilir.
BaaS ve FaaS arasındaki temel farklar şunlardır:
- Uygulama konstrüksiyonu
- Ölçeklenebilirlik
- Fiyatlandırma modeli
Sunucusuz işlevler kapsayıcılarda çalıştırılır, daha ölçeklenebilirdir ve yalnızca işlevlerinizin çalışma süresi için ödeme yaptığınızdan daha uygun maliyetlidir. Öte yandan BaaS, kullanıcı yönetimi, anlık bildirimler, sosyal medya entegrasyonları ve hızlı bir şekilde arka uçlar oluşturmanıza olanak tanıyan diğer kullanıma hazır araçlar gibi birçok yerleşik özelliğe sahiptir. Üstelik BaaS’ın kullanımı son derece kolaydır.
Birkaç FaaS örneği şunlardır: AWS Lambda, Google Cloud Functions ve Azure Functions.
Back4app üzerinde Sunucusuz Arka Uç Oluşturma
Eğitimin bu bölümünde, Cloud Code işlevlerinin Back4app‘e nasıl kodlanacağını ve dağıtılacağını göstereceğiz. Ek olarak, bir ön ucu sunucusuz bir arka uca nasıl bağlayacağımızı öğreneceğiz.
Hedefler:
Bu eğitimin sonunda şunları yapabileceksiniz:
- Cloud Code işlevlerinin ne olduğunu ve nasıl çalıştığını açıklayın
- Veritabanını manipüle edebilen Cloud Code işlevlerinizi kodlayın
- Üçüncü taraf API’lerden veri almak için Cloud Code işlevlerini kullanın
- Kendi Bulut İşlerinizi oluşturun ve zamanlayın
- Bir ön uç projesini sunucusuz bir arka uca bağlama
Back4app nedir?
Back4app, geliştiricilere kolayca web ve mobil uygulamalar oluşturmak için ihtiyaç duydukları araçları ve özellikleri sağlayan lider bir BaaS – Backend as a Service platformudur.
Kapsamlı avantajlarıyla, geliştiricilerin arka uç karmaşıklıkları veya altyapı sorunları hakkında endişelenmek yerine işlerinin ana yönlerine odaklanmalarını sağlar. Günümüzde en çok tercih edilen açık kaynaklı BaaS çözümlerinden biridir.
Kapsamlı çözüm, maksimum kolaylık için etkileşimli bir gösterge tablosu ve esnek bir CLI – Komut Satırı Arayüzü ile birlikte gelir. Ayrıca, React Native, Flutter, Node.js, Angular, iOS, Android ve daha fazlasıyla uyumlu SDK’lar sağlayarak mevcut sistemlere entegrasyonu zahmetsiz hale getirir!
Back4app’in temel özellikleri arasında elektronik tablo tarzı bir veritabanı, GraphQL ve REST API’leri, canlı sorgular, sosyal giriş seçenekleriyle kimlik doğrulama, barındırma için ölçeklenebilirlik ve bildirimlerin tümü bu güçlü platformda mevcuttur.
Daha fazla bilgi için lütfen Back4app Özellikleri bölümünü okuyun.
Back4app, küçükten büyüğe her tür uygulama için uygun maliyetli bir model sunuyor. Platformu geliştirmek ve denemek için mükemmel olan ücretsiz bir plan sunarlar.
Proje Tanıtımı
Basit bir meteoroloji istasyonu yönetim uygulaması geliştireceğiz. Önce sanal meteoroloji istasyonları oluşturacağız ve ardından meteoroloji istasyonlarının konumlarındaki gerçek hava durumu bilgilerini almak için WeatherAPI ‘yi kullanacağız. Uygulama mantığımızı tanımlamak için Cloud Code fonksiyonlarını ve Cloud Jobs’u kullanacağız. Son olarak, bir ön uç projesini sunucusuz bir arka uca nasıl kolayca bağlayacağımızı göstereceğiz.
Uygulama Oluştur
Henüz bir Back4app hesabınız yoksa, ücretsiz hizmetlerinden yararlanmak için şimdi kaydolun. Aksi takdirde, mevcut hesabınıza giriş yapın ve aşağıdaki adımlarla devam edin.
Back4app’i kullanmaya başlamak için bir uygulama oluşturmanız gerekir. Uygulama listesini görüntülemek için kontrol panelinize giriş yapın ve uygulamanızı oluşturmaya başlamak için “Yeni uygulama oluştur” seçeneğine tıklayın.
Uygulamamızı oluşturmak için Parse framework kullanacağımız için “Backend as a Service” seçeneğini seçin.
Ardından, özel bir uygulama adı girin, veritabanınız olarak “NoSQL Veritabanı “nı seçin ve son olarak “Oluştur “a tıklayın.
Back4app, veritabanı, uygulama katmanı, ölçeklendirme, yedeklemeler ve güvenlik dahil olmak üzere uygulamanız için gerekli tüm bileşenleri kuracaktır. Bunu yapmak sadece kısa bir zaman alır.
Başvurunuz tamamlandıktan sonra, uygulamanızın kontrol paneline yönlendirileceksiniz.
Veritabanı
Veritabanı modellerimizi tanımlayalım. İki model oluşturacağız:
WeatherStation
, bir konumda bulunan sanal bir meteoroloji istasyonunu temsil eder.WeatherRecord
, belirli birWeatherStation
‘daki hava durumu ölçümünü temsil eder.
“Veritabanınıza” gidin ve “Bir sınıf oluştur” seçeneğine tıklayın. WeatherStation
adını verin, “Genel Okuma ve Yazma” özelliğini etkinleştirdiğinizden emin olun ve aşağıdaki alanları ekleyin:
+---------------------------+-----------------+---------------+----------+
| Data type | Name | Default value | Required |
+---------------------------+-----------------+---------------+----------+
| String | name | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| String | location | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
Ardından, aşağıdaki alanlara sahip WeatherRecord
adında başka bir sınıf oluşturmak için aynı adımları izleyin:
+---------------------------+-----------------+---------------+----------+
| Data type | Name | Default value | Required |
+---------------------------+-----------------+---------------+----------+
| Pointer -> WeatherStation | weatherStation | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| String | weatherText | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| String | weatherIcon | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| Number | weatherCode | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
Son olarak, WeatherStation
modeline gidin ve iki hava istasyonu oluşturun. Örnek:
+---------------------------+---------------+
| name | location |
+---------------------------+---------------+
| Sunnyvale Station | sunnyvale |
+---------------------------+---------------+
| Mountain View Station | mountain view |
+---------------------------+---------------+
Harika, veritabanı için bu kadar.
WeatherAPI
Güncel hava durumu bilgilerini almak için WeatherAPI adlı ücretsiz bir API kullanacağız.
Aşağıdaki adımlar bir WeatherAPI hesabınızın olmasını gerektirecektir. Henüz bir hesabınız yoksa devam edin ve kaydolun, aksi takdirde kontrol panelinize giriş yapın.
Giriş yaptıktan sonra API anahtarınızı not edin:
Ardından, terminalinizi açın ve API anahtarınızı kullanarak “Sunnyvale” için güncel hava durumu bilgilerini almaya çalışın:
curl "https://api.weatherapi.com/v1/current.json?key=<your_api_key>&q=<location>&aqi=no"
# Example:
# curl "https://api.weatherapi.com/v1/current.json?key=354fc376a4c&q=Sunnyvale&aqi=no"
Buna benzer bir yanıt almanız gerekir:
{
"location": {
"name": "Sunnyvale",
"region": "California",
"country": "United States of America",
"lat": 37.37,
"lon": -122.04,
},
"current": {
"temp_c": 7.0,
"temp_f": 44.6,
"is_day": 1,
"condition": {
"text": "Light rain",
"icon": "//cdn.weatherapi.com/weather/64x64/day/296.png",
"code": 1183
},
...
}
}
Makalenin bir sonraki bölümünde, WeatherAPI’den hava durumu bilgilerini almak ve ardından bunları veritabanında saklamak için Cloud Code işlevlerini kullanacağız.
Bulut Kodu
Cloud Code işlevleri, Parse Server’ın geliştiricilerin özel sunucu tarafı JavaScript kodu yürütmesine olanak tanıyan güçlü bir özelliğidir. Geliştiriciler bu işlevleri iş mantığını uygulamak, verileri doğrulamak, karmaşık verileri işlemek ve genel olarak sunucusuz arka uçlar oluşturmak için kullanabilir.
Back4app uygulama panonuza gidin ve kenar çubuğundaki “Bulut Kodu” altında “İşlevler ve Web Hosting “i seçin.
Back4app Cloud Code kullanıcı arayüzünün kullanımı kolaydır. Ekranın sol tarafında dizin yapısını görebilirsiniz. Varsayılan olarak iki dizin vardır:
- bulut, tüm bulut kodları için bir dizindir
- public, resimler, stil sayfaları ve daha fazlası gibi genel dosyalar için bir dizindir
Ve ekranın sağ tarafında, yerleşik bir kod düzenleyiciniz var.
Cloud Code işlevlerini tanımlama
Aşağıdaki fonksiyonları tanımlayacağız:
weatherLocations
, meteoroloji istasyonu konumlarının listesini döndürür.weatherInfo
belirli bir konum için hava durumu raporunu döndürür.
Ancak bundan önce axios
adlı 3. parti bir paketi yükleyelim. Axios, JavaScript için HTTP istekleri yapmayı büyük ölçüde basitleştiren söz tabanlı bir HTTP istemcisidir.
Bulut klasörü içinde package.json adında yeni bir dosya oluşturun ve içine aşağıdakileri ekleyin:
{
"dependencies": {
"axios": "*"
}
}
Ardından, cloud/main.js dosyasında Cloud Code işlevlerini aşağıdaki gibi tanımlayın:
// cloud/main.js
const axios = require("axios");
// make sure to replace `<api_key>` with your actual WeatherAPI key
const WEATHER_API_BASE = "https://api.weatherapi.com/v1/current.json?key=<api_key>";
Parse.Cloud.define("weatherLocations", async (request) => {
const WeatherStation = Parse.Object.extend("WeatherStation");
const weatherStationQuery = new Parse.Query(WeatherStation);
const weatherStationResults = await weatherStationQuery.find();
return weatherStationResults.map(result => result.get("location"))
});
Parse.Cloud.define("weatherInfo", async (request) => {
let location = request.params.location;
if (!location) {
throw new Parse.Error(400, "Location not provided.");
}
const WeatherStation = Parse.Object.extend("WeatherStation");
const weatherStationQuery = new Parse.Query(WeatherStation);
weatherStationQuery.equalTo("location", location);
const weatherStationResults = await weatherStationQuery.find();
if (weatherStationResults.length == 0) {
throw new Parse.Error(400, "Invalid location.");
}
const WeatherRecord = Parse.Object.extend("WeatherRecord");
const weatherRecordQuery = new Parse.Query(WeatherRecord);
weatherRecordQuery.equalTo("weatherStation", weatherStationResults[0]);
weatherRecordQuery.descending("createdAt");
weatherRecordQuery.limit(5);
const weatherRecordResults = await weatherRecordQuery.find();
return weatherRecordResults;
});
Son olarak, işlevlerinizi Back4app’e dağıtmak için ekranın sağ alt kısmındaki “Dağıt” düğmesine tıklayın.
Bulut İşi
Cloud Jobs, geliştiricilerin anlık bildirim gönderme veya veri işleme gibi arka plan işlerini çalıştırmasına olanak tanır. Bu işler Cloud Code işlevlerine benzer şekilde yazılır ve tek seferlik veya yinelenen olarak çalışacak şekilde zamanlanabilir.
Her 30 dakikada bir tüm meteoroloji istasyonlarımızdaki hava durumunu ölçen bir Bulut İşi oluşturalım.
Bulut İşini Tanımlama
Kenar çubuğunda “Cloud Code “u seçin ve aşağıdaki kodu cloud/main.js dosyasının altına yapıştırın:
// cloud/main.js
// ...
Parse.Cloud.job("weatherCapture", async (request) => {
const {params, headers, log, message} = request;
message("weatherCapture just started...");
const WeatherStation = Parse.Object.extend("WeatherStation");
const weatherStationQuery = new Parse.Query(WeatherStation);
const weatherStationResults = await weatherStationQuery.find();
for (let i = 0; i < weatherStationResults.length; i++) {
let weatherStation = weatherStationResults[i];
try {
const response = await axios.get(
WEATHER_API_BASE + "&q=" + weatherStation.get("location") + "&aqi=no"
);
const currentWeather = response.data.current.condition;
let icon = currentWeather.icon
.replace("//", "https://")
.replace("64x64", "128x128");
const WeatherRecord = Parse.Object.extend("WeatherRecord");
const weatherRecord = new WeatherRecord();
weatherRecord.set("weatherStation", weatherStation);
weatherRecord.set("weatherText", currentWeather.text);
weatherRecord.set("weatherIcon", icon);
weatherRecord.set("weatherCode", currentWeather.code);
weatherRecord.save();
} catch (error) {
throw new Parse.Error(400, error);
}
}
message("weatherCapture just finished!");
});
Bu kod weatherCapture
adında yeni bir bulut işi tanımlar. İş, tüm WeatherStation
‘lar arasında döngü yapar, WeatherAPI’den hava durumu bilgilerini alır ve bunları veritabanında depolar.
Çalışıp çalışmadığını test etmek için kenar çubuğundaki “İşler > Tüm İşler” bölümüne gidin ve işi çalıştırmayı deneyin. Her şey yolunda giderse, daha sonra veritabanında iki yeni WeatherRecord
olmalıdır.
Bulut İşi Planlama
İşi her 30 dakikada bir çalışacak şekilde zamanlayalım.
Kenar çubuğunda “Uygulama Ayarları > Sunucu Ayarları “nı seçin ve “Arka Plan İşleri “ni bulun. Ardından “Ayarlar” düğmesine tıklayın:
Ardından, aşağıdaki ayrıntılarla yeni bir iş planlayın:
- Açıklama: Tüm istasyonlarda hava durumunu ölçer
- Bulut işi: weatherCapture
- Parametreler: Boş bırakın
- Program zamanı: Hemen başlayın
- Tekrarlanmalı mı? Evet
- Frekans: Aralık
- Hangi aralıkta tekrar edecek? 30 dakika
İşte bu kadar. WeatherCapture
işi artık her 30 dakikada bir çalışacak.
Sunucusuz arka ucumuz artık hazır. Bir sonraki bölümde, bir ön ucu sunucusuz arka uca nasıl bağlayacağımıza bakacağız.
Ön Uç
Sıfırdan özel bir ön uç oluşturmak bu eğitimin kapsamı dışındadır. Bununla birlikte, bir JavaScript ön ucunu sunucusuz bir arka uca bağlamanın temel adımlarını açıklayacağım.
- Parse ‘ı npm veya yarn aracılığıyla yükleyin ve içe aktarın.
- Parse’ı App.js veya _app.js dosyanızda şu şekilde başlatın:
import Parse from "parse/dist/parse.min.js";
// to get the keys navigate to your Back4app app > App Settings > Security & Keys
Parse.initialize(
"<your_app_id>", // replace me
"<your_javascript_key>", // replace me
);
Parse.serverURL = "https://parseapi.back4app.com/";
- Daha sonra Cloud Code işlevlerini şu şekilde çağırabilirsiniz:
const fetchWeatherLocations = async () => {
return await Parse.Cloud.run("weatherLocations");
};
Daha fazla bilgi için resmi belgelere bakın.
Ayrıca hava istasyonu arka ucumuz için örnek bir proje hazırladım. Projeye GitHub üzerinden erişilebilir. README.md, projeyi yerel olarak kurmak ve çalıştırmak için ihtiyacınız olan tüm bilgileri içerir. Çatallamaktan ve üzerinde oynamaktan çekinmeyin.
Sonuç
Sunucusuz bilişim, sunucuları yönetme endişesi olmadan uygulama oluşturmak ve dağıtmak isteyen geliştiriciler için giderek daha popüler bir çözüm haline geldi.
Bu makalede, çeşitli yazılım mimarilerini inceledik, sunucusuz işlevlere baktık ve bunların faydalarını ve kullanım durumlarını vurguladık. Son olarak, Cloud Code işlevlerini kullanarak Back4app üzerinde basit bir sunucusuz arka ucun nasıl oluşturulacağını gösterdik.
Nihai kaynak kodu GitHub’daki back4app-serverless reposunda bulunabilir.
Gelecek adımlar
- Arka ucunuzu daha güvenli hale getirmek için Parse Server Security ‘ye bakın.
- Back4app Containers‘a özel bir ön uç oluşturmayı ve dağıtmayı öğrenmek için Docker Uygulamalarını Dağıtmak için Nihai Kılavuz ‘a göz atın.
- Parse Tetikleyicileri hakkında bilgi edinin.
SSS
Sunucusuz (serverless) fonksiyonlar nedir?
Sunucusuz fonksiyonlar, belirli bir amacı olan ve olay tetiklemeli çalışan kod parçacıklarıdır. HTTP istekleri, veritabanı değişiklikleri veya diğer mesajlar gibi belirli olaylarla tetiklenebilirler.
Neden sunucusuz mimari kullanılmalı?
Sunucusuz mimari, geliştiricilerin altyapı veya dağıtım konularını düşünmeden uygulamalarına odaklanmalarına olanak tanır. Ayrıca, sunucusuz uygulamalar ölçeklenebilir ve esnektir.
Farklı yazılım mimarileri nelerdir?
Monolitik mimari, mikro hizmet mimarisi ve sunucusuz mimari. Her birinin kendi avantajları ve dezavantajları vardır; bu nedenle bir projeye başlarken dikkate alınmalıdır.
Sunucusuz fonksiyonların faydaları nelerdir?
– Daha hızlı geliştirme
– Yüksek ölçeklenebilirlik ve erişilebilirlik
– Daha fazla esneklik
– Maliyet etkinliği
Sunucusuz fonksiyonlar nasıl dağıtılır?
1. Back4app üzerinde bir hesap oluşturun.
2. Sunucusuz fonksiyonları kodlamak için Back4app Cloud Code editörünü veya yerel IDE’nizi kullanın.
3. Back4app Cloud Code editörünü kullanın veya fonksiyonlarınızı dağıtmak için b4a deploy
komutunu çalıştırın.
4. Fonksiyonları test edin.