Arka Uç Altyapısı Nedir?
Arka ucunuzu tasarlarken uygun arka uç altyapısını seçmek çok önemlidir. Arka ucunuzun performansını, esnekliğini ve sürdürülebilirliğini etkileyebilir.
Bu makalede, arka uç altyapısının ne olduğunu açıklayacak, farklı arka uç altyapı türlerini inceleyecek ve kararınızı verirken hatırlamanız gereken temel faktörleri tartışacağız.
Ek olarak, Back4app kullanarak bir arka uç altyapısının nasıl oluşturulacağına bakacağız.
Contents
Hedefler
Bu makalenin sonunda şunları yapabileceksiniz:
- Arka uç altyapısının ne olduğunu açıklayın
- Farklı arka uç altyapı türlerini (IaaS, PaaS ve BaaS dahil) tartışma
- Projeniz için uygun arka uç altyapısını seçin
- Back4app kullanarak kendi arka ucunuzu oluşturun
Arka uç altyapısı nedir?
Arka uç altyapısı, bir arka uç sistemini destekleyen yazılım ve donanım bileşenlerinin birleşimidir. Buna sunucular, konteynerler, ağ bileşenleri, güvenlik duvarı ve diğer kaynaklar dahildir.
Arka uç altyapısı yüksek kullanılabilirlik, ölçeklendirme, yük dengeleme, güvenlik, yönlendirme ve benzerlerinden sorumludur. Arka uç altyapısının sorunsuz bir kullanıcı deneyimi sunacak şekilde tasarlanması gerekir.
Arka uç altyapısı seçerken nelere dikkat edilmeli?
Bir arka uç altyapısı seçerken göz önünde bulundurulması gereken temel faktörleri tartışalım.
Hız
Hız, arka uç altyapısının kritik özelliklerinden biridir. Kullanıcılarınız uygulamanın mümkün olduğunca sorunsuz çalışmasını ister. Bu nedenle, istemci tarafı ile arka uç iletişimini optimize etmeniz gerekir.
İletişim gecikmeleri algısını azaltmak için bazı akıllıca hileler kullanabilirsiniz. Örneğin, kullanıcı arayüzünde iskelet ekranları, yükleme çubukları ve ekran ipuçları ve püf noktaları uygulayabilirsiniz.
Hız da SEO’daki en kritik faktörlerden biridir.
Esneklik
Esneklik, arka uç altyapınızın hangi programlama dillerini, çerçeveleri ve diğer teknolojileri (ör. veritabanları) desteklediğini ifade eder. Bir arka uç altyapısı seçerken, çeşitli teknolojileri destekleyen bir altyapı seçtiğinizden emin olun.
Ölçeklenebilirlik
Uygulamanızı oluşturmaya başladığınız andan itibaren ölçeklenebilirliği göz önünde bulundurmalısınız. Uygulamanızın nasıl kullanılacağını düşünün. Sabit sayıda kullanıcınız mı olacak yoksa kullanıcılar bazen artacak mı?
Arka uç altyapınızın aşırı iş yüklerini karşılayacak şekilde inşa edilmesi gerekir. Sunucu giderlerini en aza indirmek için uygulama örnekleriniz anında oluşturulmalı ve yok edilmelidir.
Sürdürülebilirlik
Uygulamanızı geliştirmek ve yayınlamak işin yalnızca %80’ini oluşturur. Bundan sonra, uygulamanızın bakımı için çok zaman harcamanız gerekecektir. Sunucu yazılımınızı güncellemek ve güvenlik yamalarını dağıtmak mümkün olduğunca kolay olmalıdır.
Yerleşik bir CI/CD sistemine sahip bir arka uç altyapısını tercih edin veya kendi altyapınızı kurun.
DevOps Gereksinimleri
Bazı arka uç altyapı türlerinin kullanımı daha zordur. Yönetmek için zamanınız ve kaynaklarınız olan arka uç altyapısını seçin. IaaS gibi daha düşük seviyeli bir arka uç altyapısı kullanmaya karar verirseniz, bunu yönetmek için uzman bir DevOps ekibine ihtiyacınız olacaktır.
Güvenlik
Kullanıcılarınızın verilerini güvende tutmaktan tamamen siz sorumlusunuz. Siber saldırıların sayısının artmasıyla birlikte, arka uç altyapınızın en son güvenlik standartlarına uygun olduğundan emin olmalısınız.
Otomatik olarak oluşturulan güçlü parolalar kullanın, güvenlik duvarı kurun, sunucularınızda güvenilmeyen yazılımlar çalıştırmayın, düzenli güvenlik kontrolleri yapın, vb.
Arka uç altyapı türleri
Arka ucunuzu dağıtmak için sunucularınızı (geleneksel altyapı olarak adlandırılır) kullanabilir veya bulut altyapısından yararlanabilirsiniz.
Son on yılda birçok şirket, zamandan ve paradan tasarruf etmelerini sağladığı için bulut modellerine yöneldi.
En popüler olanlardan bazılarını analiz edelim.
Hizmet Olarak Altyapı veya IaaS
Hizmet Olarak Altyapı (IaaS) en az soyutlanmış bulut bilişim modelidir. Bu modelde bulut satıcısı sunucular, depolama, işletim sistemleri ve ağ bileşenleri gibi sanallaştırılmış bir ortamda bilgi işlem kaynakları sağlar.
IaaS 2010’dan beri var ve hala en popüler bulut bilişim modeli. Artıları arasında mükemmel ölçeklenebilirlik, üst düzey kontrol ve fiyat verimliliği yer almaktadır. Buna karşılık, eksileri karmaşık yönetim ve diğer bulut modellerine göre daha yüksek bakım maliyetleridir.
Popüler IaaS satıcılarından bazıları şunlardır:
Hizmet Olarak Platform veya PaaS
Hizmet Olarak Platform (PaaS), kullanıcı dostu bir uygulama geliştirme, yönetim ve dağıtım ortamı sunan bir bulut bilişim modelidir. Çeşitli yerleşik uygulama geliştirme araçları içerir ve uygulamanızı hazırlayıp çalıştırmanızı kolaylaştırır.
PaaS altyapı yönetimini kolaylaştırır, pazara daha hızlı giriş, gelişmiş güvenlik, maliyet tasarrufu, ölçeklenebilirlik, yüksek kullanılabilirlik ve daha az kodlama sağlar. Öte yandan, sizi satıcının yeteneklerine bağlayabilir, satıcıya kilitlenme riskleri oluşturabilir ve esnekliği ve kontrolü sınırlayabilir.
PaaS çözümlerine örnek olarak şunlar verilebilir:
Hizmet Olarak Arka Uç veya BaaS
Backend as a Service (BaaS), sunucu tarafı geliştirmeyi ve bulut altyapısı yönetimini otomatikleştirir. Gerçek zamanlı veritabanları, kullanıcı yönetimi, kimlik doğrulama, bildirimler, sosyal medya entegrasyonları vb. sunar.
BaaS, geliştiricileri arka uç endişelerinden kurtararak ön uç ve temel işlere odaklanmalarını sağlar. BaaS, IaaS ve PaaS avantajlarını arka uç soyutlamasıyla birleştirerek daha hızlı pazara sunma süresi ve maliyet tasarrufu sağlar. Dezavantajları ise kontrol eksikliği, satıcıya kilitlenme riski ve nispeten maliyetli olmasıdır.
Benim kişisel favori BaaS platformlarım:
Hizmet Olarak Konteynerler veya CaaS
Hizmet Olarak Konteynerler (CaaS) konteynerlerin yüklenmesi, oluşturulması, ölçeklendirilmesi ve yönetilmesi için kullanılan bir bulut bilişim modelidir. CaaS genellikle bir konteyner çalışma zamanı, konteyner kayıt defteri, otomatik ölçeklendirme işlevi, yerleşik CI/CD sistemi, yük dengeleme ve daha fazlasını içerir!
CaaS, konteyner kullanımını basitleştirerek altta yatan altyapıya ilişkin endişeleri ortadan kaldırır. Çevik geliştirmeyi teşvik eder, mikro hizmet mimarisini kolaylaştırır ve yüksek oranda ölçeklenebilir uygulamaların oluşturulmasını hızlandırır.
CaaS platformları şunları içerir:
Arka uç altyapısı nasıl oluşturulur?
Makalenin bu bölümünde Back4app kullanarak bir arka uç altyapısı oluşturacağız.
Back4app nedir?
Back4app olağanüstü bir Hizmet Olarak Arka Uç (BaaS) platformudur. Web ve mobil uygulamalar için hızlı bir şekilde arka uçlar oluşturmanızı sağlar.
Platform açık kaynak teknolojileri kullanılarak oluşturulmuştur ve birçok özelliğe sahiptir. Özellikleri arasında elektronik tablo benzeri veritabanları, dosya depolama, kullanıcı yönetimi, kimlik doğrulama, otomatik oluşturulan API’ler, bildirimler ve daha fazlası bulunur!
Back4app, pazara çıkış sürenizi önemli ölçüde hızlandırmanıza yardımcı olabilir. Back4app’ten yararlanarak, arka uç veya altta yatan altyapı hakkında endişelenmek yerine işinizin özüne odaklanabilirsiniz.
Uzman DevOps mühendislerine ihtiyaç duymayacaksınız ve bakım maliyetleriniz daha düşük olacak.
Back4app ile ilgili en iyi şey, ücretsiz bir katmanla birlikte gelmesidir. Ücretsiz katman, platformu test etmek veya evcil hayvan projelerini barındırmak için mükemmeldir. Uygulamanız başarılı olursa, premium katmanlara yükseltebilirsiniz.
Back4app hakkında daha fazla bilgi edinmek için Back4app nedir?
Projeye Genel Bakış
Bir arka ucun nasıl oluşturulacağını göstermek için basit bir e-ticaret arka uç hizmeti oluşturacağız. Arka uç, ürünleri, kategorileri ve siparişleri yönetmemize olanak tanıyacak.
Projemizin ER diyagramı şu şekilde görünecektir:
Arka ucu minimum miktarda kodla oluşturacağız ve istemci tarafında nasıl kullanılabileceğini göstereceğiz ( SDK‘lar, REST API ve GraphQL API aracılığıyla).
Uygulama Oluştur
Takip etmek için bir Back4app hesabı gereklidir. İhtiyacınız var mı? Bugün kaydolun!
Back4app hesabınıza giriş yaptıktan sonra, uygulamalarınızın listesini göreceksiniz. Uygulama oluşturma sürecini başlatmak için “Uygulama oluştur” düğmesine tıklayın.
Ardından, bir arka uç kuracağımız için “BaaS” seçeneğini belirleyin.
Bir uygulama adı seçin, “NoSQL “i seçin ve uygulamayı oluşturun.
Back4app’in her şeyi ayarlaması biraz zaman alacak. Uygulama katmanını, veritabanını, yedeklemeleri, ölçeklendirmeyi ve daha fazlasını halledecektir.
Uygulama oluşturulduktan sonra, uygulamanızın gerçek zamanlı veritabanına yönlendirileceksiniz.
Veritabanını Kurma
Uygulamamızı oluşturduğumuza göre şimdi de veritabanı ile ilgilenelim.
Öncelikle veritabanında veri depolamak için bir sınıf oluşturmamız gerekir. Sınıflara tablo (SQL terminolojisi) ya da model (ORM terminolojisi) olarak bakabilirsiniz. Her sınıf varsayılan olarak aşağıdaki dört alana sahiptir:
+-------------+-------------+------------------------------------------+
| Type | Name | Description |
+-------------+-------------+------------------------------------------+
| String | objectId | Object's unique identifier |
+-------------+-------------+------------------------------------------+
| Date | updatedAt | Date time of the last update |
+-------------+-------------+------------------------------------------+
| Date | createdAt | Date time of creation |
+-------------+-------------+------------------------------------------+
| ACL | ACL | Access Control List |
+-------------+-------------+------------------------------------------+
Projeye genel bakışta belirtildiği gibi, projemizde üç sınıf olacaktır. Kenar çubuğundaki “Sınıf oluştur” düğmesine tıklayarak ilkini oluşturun. Adını ProductCategory
koyun:
Aşağıdaki alanları ekleyin:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
Product
sınıfı için de aynı adımları uygulayın:
+-----------------------------+-------------+---------------+----------+
| Type | Name | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String | name | <leave blank> | yes |
+-----------------------------+-------------+---------------+----------+
| String | description | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories | <leave blank> | no |
+-----------------------------+-------------+---------------+----------+
| Number | price | 0 | yes |
+-----------------------------+-------------+---------------+----------+
Çoktan çoğa ilişkiyi işlemek için
Relation
veri türünü kullandık.
Son olarak, Order
sınıfını oluşturun:
+-----------------------------+------------+---------------+----------+
| Data type | Name | Default value | Required |
+-----------------------------+------------+---------------+----------+
| Pointer -> Product | product | <leave blank> | yes |
+-----------------------------+------------+---------------+----------+
| String | cFirstName | <leave blank> | yes |
+-----------------------------+------------+---------------+----------+
| String | cLastName | <leave blank> | yes |
+-----------------------------+------------+---------------+----------+
| String | cAddress | <leave blank> | yes |
+-----------------------------+------------+---------------+----------+
| Number | delivered | false | yes |
+-----------------------------+------------+---------------+----------+
Birden çoğa ilişkiyi işlemek için
Pointer
veri türünü kullandık.
İşiniz bittiğinde, kenar çubuğunda sınıfları görmelisiniz.
Veritabanını doldurun
Devam edelim, veritabanını dolduralım.
Birkaç ürün kategorisi, ürün ve sipariş oluşturarak başlayın (bu sırayla). Fikirleriniz tükenirse, bu fikstürü içe aktarmaktan çekinmeyin.
Bir JSON dosyasını içe aktarmak için “Diğer seçenek > İçe aktar > Sınıf verileri > Dosya seç” seçeneğini kullanın. JSON dosyalarını aşağıdaki sırayla içe aktardığınızdan emin olun:
- ProductCategory.json
- Ürün.json
- _Join꞉categories꞉Product.json
- Sipariş.json
İşiniz bittikten sonra, veritabanınızda birkaç ürün, kategori ve sipariş olmalıdır. Bu adım gereklidir çünkü daha sonraki aşamada arka ucu test etmek için bazı verilere ihtiyacımız olacak.
Veritabanının Güvenliğini Sağlayın
Varsayılan olarak, veritabanı sınıfları “Korumalı modda” oluşturulur. Korumalı moddayken, nesnelerle etkileşime geçmenin ve onları yönetmenin tek yolu ana anahtarı kullanmaktır. Bu optimal değildir çünkü istemci tarafından nesneleri getiremez veya yönetemeyiz.
Bunu yapabilmek için bazı kısıtlamaları gevşetmemiz gerekiyor. Back4app/Parse iki kısıtlama mekanizması ile birlikte gelir:
- Sınıf düzeyinde izinler (CLP’ler)
- Erişim düzeyi izinleri (ACL’ler)
CLP’ler sınıf seviyesinde kısıtlamalar uygulamamıza izin verirken, ACL’ler nesne seviyesinde kısıtlamalar uygulamamıza izin verir. Her iki mekanizma da bir sınıfı veya nesneyi belirli bir Rol
veya Kullanıcı
ile kısıtlayabilir.
Kenar çubuğunda Ürün
sınıfını seçin ve ekranın üst kısmındaki “Korumalı” metnine tıklayın. Ardından CLP’leri değiştirin:
ProductCategory
modeli için de aynı adımları uygulayın.
Ardından Order
sınıfı için CLP’leri güncelleyin:
Resme dikkat edin. Burada,
Oluşturma
iznini de etkinleştiriyoruz.
Yeni CLP’ler, kimliği doğrulanmamış kullanıcıların Ürünleri
ve ProductCategory
‘leri getirmesine, sorgulamasına ve saymasına izin verecek, ancak bunları değiştiremeyecektir. Aynı durum Order
sınıfı için de geçerlidir, ancak burada kullanıcılar yeni siparişler de oluşturabilir.
Daha fazla bilgi edinmek için Parse Server Güvenliği makalemize göz atın.
Yönetici Uygulaması
Şu anda, veritabanınızdaki nesneleri yönetmenin tek yolu veritabanı görünümünü kullanmaktır. Bu, geliştiriciler için işe yarasa da, teknoloji kullanmayan kullanıcılar için sezgisel değildir. Bunun da ötesinde, kullanıcılara çok fazla kontrol sağlar ve insan hatalarına eğilimlidir.
Neyse ki Back4app, “Yönetici Uygulaması” işlevini kolayca etkinleştirmenizi sağlar. Yönetici uygulaması, veritabanı sınıflarınıza göre uyarlanmış, kullanımı kolay bir yönetim panelidir.
Önce kenar çubuğundaki “Diğer > Yönetici Uygulaması” bölümüne giderek etkinleştirin. Ardından “Etkinleştir “e tıklayın:
Back4app sizden bir kullanıcı adı, şifre ve alt alan adı seçmenizi isteyecektir. Ben aşağıdakileri seçmeye karar verdim:
user: root
pass: complexpassword123
subdomain: https://binfra.admin.back4app.com/
Harika, tek yapman gereken bu.
Yönetim paneline “Yönetici Uygulaması URL’sine” tıklayarak erişebilirsiniz. Üzerine tıkladığınızda yeni bir tarayıcı penceresi açılacak ve sizden yönetici kimlik bilgilerinizi girmeniz istenecektir. Giriş yaptıktan sonra nesneleri oluşturabilir, güncelleyebilir ve silebilirsiniz.
Alışmak için gösterge paneli ile oynamayı deneyin.
Bulut Kodu
Back4app, Cloud Code adı verilen özel JavaScript kodunu çalıştırmanıza olanak tanır. Cloud Code ile Parse, HTTP istekleri tarafından tetiklenebilen veya periyodik olarak çalıştırılabilen fonksiyonlar tanımlayabilirsiniz. Ayrıca Cloud Code, Express kullanarak web uygulamaları oluşturmak için kullanılabilir.
Bulut Kodu İşlevi
Mevcut satışları hesaplayan bir Bulut Kodu işlevi istediğimizi varsayalım.
İlk olarak, kenar çubuğunda “Cloud Code > Function & Web Hosting” bölümüne gidin. Bulut Kodu görünümünün iki kısma ayrıldığını fark edeceksiniz. Sol tarafta dizin yapısını ve sağ tarafta kodu görebilirsiniz.
Ardından, cloud/main.js dosyasını açın ve aşağıdaki kodu yapıştırın:
// cloud/main.js
Parse.Cloud.define("calculateSales", async (request) => {
const orderClass = Parse.Object.extend("Order");
const orderQuery = new Parse.Query(orderClass);
let sales = 0;
try {
const orders = await orderQuery.find();
for (var i = 0; i < orders.length; i++) {
let order = orders[i];
let productId = order.get("product")["id"];
const productClass = Parse.Object.extend("Product");
const productQuery = new Parse.Query(productClass);
const product = await productQuery.get(productId);
sales += product.get("price");
}
return {
sales: sales,
};
} catch (error) {
console.error("Error calculating the sales: " + error.message);
return {
sales: 0,
}
}
});
Parse.Cloud.job("printSales", async (request, status) => {
try {
const result = await Parse.Cloud.run("calculateSales");
console.log("Sales: " + result.sales + "$");
} catch (error) {
console.error("Error calculating the sales: " + error.message);
}
});
calculateSales()
adında bir Cloud Code işlevi tanımladık. Fonksiyon tüm siparişler arasında döngü yapar, ilgili ürünleri getirir ve fiyatlarını toplar.printSales()
adında bir Bulut Kodu İşi tanımlayarak işlevi Parse kontrol panelinden çalıştırmamızı ve periyodik olarak zamanlamamızı sağladık.
Son olarak, Bulut Kodunu dağıtmak için “Dağıt” düğmesine tıklayın.
Kenar çubuğunda “Bulut Kodu > İşler” bölümüne giderek ve printSales()
işini çalıştırarak işin çalıştığından emin olun. Her şey yolunda giderse, günlükleri kontrol ederken örneğin Sales: 1440$
şeklinde bir mesaj görmeniz gerekir.
Bulut Kod Çizelgeleme
İşi planlamak için kenar çubuğundaki “Uygulama Ayarları > Sunucu Ayarları” bölümüne gitmelisiniz. “Arka plan işleri “ne gidin, “Bir iş planla “ya tıklayın ve formu doldurun.
Çalıştığından emin olmak için günlükleri bir kez daha kontrol edin.
Müşteri Tarafı
Back4app tabanlı arka ucunuzla etkileşim kurmanın birden fazla yolu vardır:
- Parse SDK
- RESTful API (otomatik oluşturulmuş)
- GraphQL API (otomatik oluşturulur)
Genel bir kural olarak, platformunuz için mevcutsa her zaman Parse SDK’yı kullanmalısınız. Değilse, RESTful API veya GraphQL API ile devam edin. API’ler arasındaki seçim verilerinize bağlıdır.
Dokümanlara göz atarak Parse SDK’yı çeşitli çerçevelerle nasıl kullanacağınızı öğrenin.
Yine de, yerleşik REST Konsolunu kullanarak arka ucumuzu test edelim.
Kenar çubuğundaki “API > REST” bölümüne gidin ve formu doldurarak tüm ürünleri sorgulamayı deneyin:
Benzer bir yanıt almalısınız:
{
"results": [
{
"objectId": "4ZyHH3X0RQ",
"name": "Fitness Tracker Watch",
"description": "...",
"price": 80,
"createdAt": "2023-10-17T20:03:55.424Z",
"updatedAt": "2023-10-17T20:24:12.322Z",
"categories": {
"__type": "Relation",
"className": "ProductCategory"
}
},
{
"objectId": "cDqlGJzT5U",
"name": "Organic Fruit Basket",
"description": "...",
"price": 40,
"createdAt": "2023-10-17T20:04:10.063Z",
"updatedAt": "2023-10-17T20:24:00.382Z",
"categories": {
"__type": "Relation",
"className": "ProductCategory"
}
},
// ...
}
Aşağıdaki sorguları gerçekleştirmeyi deneyin:
- 50’den daha pahalı olan tüm ürünleri getirin
- Henüz teslim edilmemiş tüm siparişleri getirin
- Yeni bir ürün oluşturun ve ona bir kategori ekleyin
- Sipariş silme
Sonuç
Sonuç olarak, artık arka uç altyapısının ne olduğunu biliyorsunuz, çeşitli arka uç altyapı türlerine aşinasınız ve projeniz için uygun altyapıyı nasıl seçeceğinizi biliyorsunuz.
Bunun da ötesinde, Back4app üzerinde bir arka uç altyapısının nasıl oluşturulacağını öğrendiniz. Veritabanı, veritabanı güvenliği, özel kod, iş zamanlama ve API testi ile ilgilendiniz.
Back4app tabanlı bir arka uç için istemci tarafı oluşturma konusunda rehberlik için diğer makalelerimizi inceleyin:
- Ön uç ve arka uç nasıl barındırılır?
- Bir sosyal medya uygulaması nasıl geliştirilir?
- React kullanarak bir chatbot nasıl oluşturulur?
Ek makale kaynakları bir GitHub reposunda açık kaynaklıdır.