Arka Uç Altyapısı Nedir?

Back4app Arka Uç Altyapı Kapağı

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.

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:

Back4app E-ticaret ER Diyagramı

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.

Back4app Uygulama Oluştur

Ardından, bir arka uç kuracağımız için “BaaS” seçeneğini belirleyin.

Back4app Hizmet Olarak Arka Uç

Bir uygulama adı seçin, “NoSQL “i seçin ve uygulamayı oluşturun.

Back4app BaaS Yapılandırması

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.

Back4app Veritabanı Görünümü

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:

Back4app Veritabanı Oluşturma Sınıfı

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:

  1. ProductCategory.json
  2. Ürün.json
  3. _Join꞉categories꞉Product.json
  4. Sipariş.json
Back4app Sınıf Verilerini İçe Aktar

İş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:

  1. Sınıf düzeyinde izinler (CLP’ler)
  2. 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:

Back4app Ürün Kategorisi ve Ürün CLP'leri

ProductCategory modeli için de aynı adımları uygulayın.

Ardından Order sınıfı için CLP’leri güncelleyin:

Back4app Sipariş CLP'leri

Resme dikkat edin. Burada, Oluşturma iznini de etkinleştiriyoruz.

Yeni CLP’ler, kimliği doğrulanmamış kullanıcıların Ürünlerive 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 Yönetici Uygulamasını Etkinleştir

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.

Back4app Yönetici Uygulaması Kontrol Paneli

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.

Back4app Bulut Kodu

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);
  }
});
  1. 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.
  2. 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.

Back4app Zamanlama İşi

Ç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:

  1. Parse SDK
  2. RESTful API (otomatik oluşturulmuş)
  3. 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:

Back4app REST Konsolu

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:

  1. 50’den daha pahalı olan tüm ürünleri getirin
  2. Henüz teslim edilmemiş tüm siparişleri getirin
  3. Yeni bir ürün oluşturun ve ona bir kategori ekleyin
  4. 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:

  1. Ön uç ve arka uç nasıl barındırılır?
  2. Bir sosyal medya uygulaması nasıl geliştirilir?
  3. React kullanarak bir chatbot nasıl oluşturulur?

Ek makale kaynakları bir GitHub reposunda açık kaynaklıdır.


Leave a reply

Your email address will not be published.