Node.js ile backend geliştirme

NestJS ile kalıcı API’ler, AWS Lambda ile sunucusuz fonksiyonlar: yayındaki ürünlerimizin sunucu tarafı TypeScript ile yazıldı.

NestJS, Express ve AWS Lambda ile Node.js arka uçları geliştiriyoruz. Hippotenus API’si, Rigel ve LydiaVault sunucuları bu teknolojiyle çalışıyor.

Son güncelleme:

Bu teknolojiyle geliştirdiklerimiz

Hepsi yayında; mağaza sayfalarına ve ayrıntılara Ürünler sayfasından ulaşabilirsiniz.

Hippotenus

Eğitim kurumları platformu

NestJS ve Prisma ile PostgreSQL; mesajlaşma ve bildirimler Socket.IO ile, haftalık raporlar ve takvim eşitleme Redis kuyruklarında, ödemeler iyzico ile.

Ürünü incele

Rigel

Yapay zekâ video uygulaması

AWS Lambda üzerinde TypeScript fonksiyonlar ve MongoDB; bildirim ve e-posta gönderimi, hata kuyruğu olan SQS kuyruklarıyla.

Ürünü incele

LydiaVault

Yapay zekâ bütçe koçu

AWS Lambda üzerinde TypeScript fonksiyonlar ve MongoDB; banka hesabı bağlantısı ve OpenAI ile çalışan bütçe asistanı bu sunucuda.

Ürünü incele

SoruVerse

Kampüs soru-cevap ve topluluk uygulaması

Firebase Cloud Functions üzerinde Express; dosyalar Cloudflare R2’ye süreli imzalı bağlantılarla gidiyor.

Ürünü incele

Node.js hangi işlerde öne çıkar

Node.js, JavaScript ve TypeScript’i sunucuda çalıştırır. Gücü, aynı anda çok sayıda bağlantıyı bekletmeden yönetmesinden gelir: veritabanı sorgusu, ödeme sağlayıcısı ya da e-posta servisi yanıt verirken diğer istekleri işlemeye devam eder. Bu yüzden API’ler, anlık mesajlaşma ve başka sistemlerle konuşan entegrasyon servisleri için doğal bir seçimdir. Web ve mobil tarafı da TypeScript ile yazdığımız için sunucu, istemcilerle aynı dili konuşur.

Node.js’in iyi oturduğu durumlar

  • Web paneli ve mobil uygulamanın konuştuğu bir REST API’ye ihtiyacınız var
  • Mesajlaşma, canlı bildirim ya da anlık güncellenen ekranlar olacak
  • Ödeme, SMS, takvim, e-posta gibi birçok dış servisle entegrasyon gerekiyor
  • Ön yüzü ve arka ucu aynı ekibin aynı dille yürütmesini istiyorsunuz

Başka bir dili önereceğimiz durumlar

  • İşin merkezinde ağır veri işleme, belge ayrıştırma ya da bilimsel hesaplama var (burada Python’u öneriyoruz)
  • Şirketinizin altyapısı ve ekibi .NET üzerine kurulu
  • Uzun süren, işlemciyi yoran hesapları isteğin içinde yapmak gerekiyor

NestJS mi, sunucusuz fonksiyonlar mı

Node.js’i iki biçimde kullanıyoruz. Hippotenus gibi çok modüllü, sürekli çalışan ve gerçek zamanlı bağlantı tutan bir platformda NestJS ile tek bir API yazıyoruz. Rigel ve LydiaVault’ta ise her uç nokta AWS Lambda üzerinde ayrı bir fonksiyon; altyapı AWS SAM şablonuyla kod olarak tanımlı. SoruVerse’te mobil uygulamanın ihtiyaç duyduğu birkaç sunucu işi Firebase Cloud Functions üzerinde küçük bir Express uygulaması olarak duruyor.

NestJS APIAWS Lambda (SAM)Firebase Cloud Functions
Çalışma biçimiSürekli çalışan tek sunucuİstek gelince çalışan fonksiyonlarFirebase olaylarına ve isteklere bağlı fonksiyonlar
Gerçek zamanlı bağlantıSocket.IO ile doğrudanKuyruk ve zamanlayıcıylaFirestore tetikleyicileriyle
Uygun olduğu yerÇok modüllü platformlar, panel ve mobil için ortak APIMobil uygulama arka uçları, dalgalı trafikFirebase kullanan uygulamalara eklenen sunucu işleri
Bizim örneğimizHippotenusRigel, LydiaVaultSoruVerse

Hippotenus API’sinde neler var

Hippotenus’un sunucusu öğrenci takibinden ödemelere kadar birçok işi yürüten bir NestJS uygulaması. Bir eğitim platformunda işin çoğu isteğin dışında olur; bu yüzden arka plan işlerine ve canlı bağlantılara ayrı özen gösterdik:

  • Mesajlaşma Socket.IO üzerinde ayrı bir kanalda çalışıyor: mesaj gönderme, “yazıyor” göstergesi ve görüldü bilgisi anlık iletiliyor; bağlantı, HTTP tarafıyla aynı JWT anahtarıyla doğrulanıyor.
  • Haftalık rapor e-postaları, Google Takvim eşitlemesi ve mobil bildirimler Redis üzerindeki Bull kuyruklarında işleniyor; kullanıcı isteği bunları beklemiyor.
  • Zamanlanmış görevler haftalık raporları hazırlıyor, çalışma programlarını güncelliyor ve hesabını silen kullanıcıların kişisel verilerini bekleme süresinden sonra anonimleştiriyor.
  • Prisma sorgularına kurum kimliğini ekleyen bir ara katman, her kurumun verisini diğerlerinden ayrı tutmak için yazıldı.
  • Ödemeler ve abonelikler iyzico ile alınıyor; ödeme sağlayıcısı bir arayüzün arkasında durduğu için iş kuralları sağlayıcıya bağlı değil.
  • API’nin yanıt biçimi ve kimlik tipleri ortak TypeScript paketlerinde duruyor; geliştirmekte olduğumuz mobil uygulama bu paketleri kullanıyor.

Bir müşteri projesinde de benzer bir yapı kurduk: NestJS ve MongoDB ile yazılan bir öğrenim yönetim sisteminde canlı quiz’ler ve proje panoları tek bir Socket.IO sunucusunun ayrı kanallarında çalışıyor, bildirimler tarayıcıya web push ile gidiyor.

Node.js’in yanında kullandığımız araçlar

NestJS

Modül, bağımlılık enjeksiyonu, yetki kontrolü ve doğrulama hazır gelir. Hippotenus API’sini ve bir müşteri projesinin sunucusunu NestJS ile yazdık.

Prisma

Tip güvenli veritabanı erişimi ve şema değişiklikleri için migration. Hippotenus’ta PostgreSQL ile kullanıyoruz.

Socket.IO

Anlık mesajlaşma, canlı bildirim ve ortak ekranlar için. Hippotenus’ta ve bir müşteri projesinde kullanıyoruz.

Redis ve Bull

E-posta, takvim eşitleme ve bildirim gibi işleri kuyrukta, isteğin dışında çalıştırmak için. Hippotenus’ta kullanıyoruz.

AWS Lambda ve SAM

Sunucusuz fonksiyonlar, SQS kuyrukları ve zamanlanmış görevler, hepsi bir şablonda tanımlı. Rigel ve LydiaVault’ta kullanıyoruz.

Swagger / OpenAPI

API’nin her uç noktası belgelenir ve tarayıcıdan denenebilir. Hippotenus API’sinde kullanıyoruz.

Bir Node.js projesi nasıl ilerliyor

  1. 01

    Ücretsiz keşif görüşmesi

    30 dk

    Sunucunun hangi uygulamalara hizmet edeceğini, hangi sistemlerle konuşacağını ve aklınızdaki bütçeyi konuşuyoruz.

  2. 02

    Yazılı kapsam ve teklif

    Veri modelini, uç noktaları, entegrasyonları ve NestJS ile sunucusuz yapı arasındaki tercihi yazıya döküyoruz.

  3. 03

    Haftalık sürümler

    Her hafta çalışan bir sürüm teslim ediyoruz; uç noktaları API belgesi üzerinden kendiniz deneyebiliyorsunuz.

  4. 04

    Test ve yayın

    Senior QA sürümü yayından önce test ediyor; ardından sunucuyu canlı ortama alıyoruz.

  5. 05

    Yayından sonraki 30 gün

    30 gün

    Bu sürede ortaya çıkan hataları ücretsiz gideriyoruz; sonrasında aylık bakımla devam edebilirsiniz.

Süre ve bütçe aralıkları web uygulaması geliştirme ve fiyatlar sayfalarımızda yayında; bu sayfa da aynı rakamlara dayanıyor.

Node.js hakkında sık sorulanlar

NestJS neden? Express yetmez mi?

NestJS zaten Express’in üzerinde çalışır; üstüne modül yapısı, yetki kontrolü, girdi doğrulama ve API belgesi ekler. Çok modüllü bir platformda bu düzen kodu okunur tutar. Birkaç uç noktadan oluşan küçük bir servis için, SoruVerse’teki gibi yalın Express yeterli.

Node.js ağır iş yükünü kaldırır mı?

Bekleme ağırlıklı işlerde, yani veritabanı ve dış servis çağrılarında çok verimlidir. Uzun süren ya da kullanıcıyı bekletecek işleri isteğin içinde yapmıyoruz: Hippotenus’ta bunlar Redis kuyruğuna, Rigel’de bildirim ve e-posta gönderimi SQS’e gidiyor. Belge ve veri işleme ağırlıklı projelerde Python’u tercih ediyoruz.

API belgesi veriyor musunuz?

Evet. Hippotenus API’sinde olduğu gibi her uç nokta OpenAPI ile belgelenir ve tarayıcıdan denenebilir; başka bir ekibin ya da sistemin bağlanması için bu belge yeterlidir.

Proje bitince elimde ne kalır?

Yazılım için süresiz kullanım lisansı ve dokümantasyon. Kaynak kodun size devrini isterseniz, ek ücreti teklifte ayrıca belirtilir.

İlgili hizmetler

Web uygulamasıÖzel yazılımERP, CRM & entegrasyonMVP
İletişim

Node.js backend’inizi konuşalım

30 dakikalık ücretsiz keşif görüşmesinde sunucunun kapsamını ve NestJS ile sunucusuz yapı arasındaki tercihi birlikte netleştirelim.