Rehber
Node.js ile Sunucu ve API Geliştirme: Mobil Uygulamanın Arkasında Ne Çalışır?
Mobil uygulamanın ve panelin konuştuğu sunucu Node.js ile yazılabilir. Anlık bildirimde ve yoğun küçük isteklerde güçlü, ağır hesapta zayıf yanlarını ve barındırma ihtiyacını özetledik.
· 4 dk okuma · Mood Reklam
Telefonunuzdaki sipariş uygulaması “Siparişiniz yola çıktı” bildirimini nereden biliyor? Uygulama bu bilgiyi kendi içinde tutmaz; internet üzerinden bir sunucuya sorar. Mobil uygulama ya da web paneli yaptıracak her işletme bir noktada bu görünmeyen tarafla karşılaşır ve “Sunucuyu Node.js ile yazalım” önerisini duyabilir. Bu yazı, o önerinin ne anlama geldiğini ve ne zaman yerinde olduğunu anlatıyor.
Önce kavram: API ne demek?
API, iki yazılımın birbirine soru sorup cevap almasını sağlayan kapıdır. Telefondaki uygulama “Bu müşterinin açık siparişleri neler?” diye sorar, sunucudaki API veritabanına bakıp listeyi döner. Web paneli, mobil uygulama, hatta kargo ya da e-fatura sağlayıcısı aynı API ile konuşabilir. Dış sistemlere bağlanmayı API entegrasyonu yazısında ayrıca ele aldık; burada API’nin kendisini yazacak ortama bakıyoruz.
Node.js nedir, sunucuda JavaScript’in ne işi var?
Node.js, tarayıcının dili olan JavaScript’i sunucuda çalıştıran bir ortamdır. Kendisi ayrı bir dil değildir; JavaScript’in tarayıcı dışına taşınmış hâlidir. En büyük pratik faydası şudur: Panelin arayüzü zaten JavaScript ya da TypeScript ile yazılıyorsa sunucu tarafı da aynı dille yazılabilir. Aynı ekip iki tarafı birden okuyabilir, veri yapıları iki tarafta ortak tanımlanabilir. Tarayıcı tarafını JavaScript ve TypeScript yazısında anlattık.
Node.js’in iyi olduğu iş türü
Node.js, bir isteğin cevabını beklerken boş durmaz; o sırada başka isteklerle ilgilenir. Teknik adıyla “bloklamayan” bu çalışma biçimi, çok sayıda küçük ve kısa isteğin aynı anda geldiği işlerde avantaj sağlar:
- Mobil uygulamanın sürekli veri istediği API’ler
- Canlı sohbet, anlık bildirim ve “şu an kim çevrimiçi” gibi gerçek zamanlı özellikler
- Saha ekibinin ya da sevkiyat araçlarının konumunu düzenli gönderdiği takip ekranları
- Başka servislerden veri toplayıp tek cevapta birleştiren ara katmanlar
İskenderun’dan Hatay’ın ilçelerine dağıtım yapan bir firmanın şoförleri teslimat fotoğrafını ve konumunu uygulamadan gönderiyorsa, bu verileri karşılayan sunucu için Node.js doğal adaylardan biridir.
Sınırları: ağır hesap ve paket yükü
Aynı çalışma biçimi bir zayıflık da getirir. Node.js işlerin çoğunu tek bir ana iş parçacığında sırayla yürütür. Uzun süren bir hesap, örneğin büyük bir raporun işlenmesi, o sırada gelen öbür istekleri bekletebilir. Bu yükü ayrı çalışanlara (worker) bölmek mümkündür ama ek tasarım ister. Ağır hesap, büyük veri işleme ya da yapay zekâ modeli çalıştırma işlerinde Python, Go ya da Java daha rahat eder.
İkinci konu paket ekosistemidir. Node.js dünyasında hemen her ihtiyaç için hazır paket bulunur; bu, geliştirmeyi hızlandırır. Ama her paket, birinin bakmayı bırakabileceği bir bağımlılık demektir. Güvenlik güncellemeleri düzenli yapılmayan bir Node.js projesi zamanla kırılgan hâle gelir. Bu yüzden bakımın kimde olacağı konuşulmadan teslim alınmamalıdır.
API’nin kapısını kim tutuyor?
Hangi dille yazılırsa yazılsın, internete açık bir API işletmenizin verisine açılan bir kapıdır. Node.js’te bu kapıyı korumak için hazır araçlar boldur, ama onları kurmak yazılımcının işidir. Teslim almadan önce şunları sorun:
- Her istek, giriş yapmış ve o veriyi görmeye yetkili bir kullanıcıdan mı geliyor? Bayi yalnızca kendi siparişini görebiliyor mu?
- Gelen veriler kaydedilmeden önce denetleniyor mu; boş, hatalı ya da kötü niyetli içerik reddediliyor mu?
- Aynı adresten art arda gelen aşırı istekler sınırlanıyor mu?
- Bağlantı şifreli (HTTPS) mi ve hatalar kayıt altına alınıyor mu?
Barındırma: Node.js uygulaması nerede yaşar?
Klasik bir PHP sitesi istek geldiğinde çalışır ve işini bitirince durur. Node.js uygulaması ise sürekli açık kalan bir süreçtir; çökerse yeniden başlatılması, sunucu açıldığında kendiliğinden ayağa kalkması gerekir. Bu nedenle genellikle sanal sunucu (VPS), bulut sunucu ya da Node.js destekleyen bir barındırma platformu ister. Bazı cPanel hostingleri Node.js uygulamasına izin verir, ancak kaynaklar ve ayarlar kısıtlıdır; küçük işler için yetebilir, yoğun kullanılan bir mobil uygulama için çoğu zaman yetmez. Kendi sunucusunda çalışan bir Node.js uygulaması için ayrıca bir süreç yöneticisi kurulur; uygulamayı izler, çökerse yeniden başlatır ve kayıtlarını tutar. Teklifte sunucunun kimin adına açılacağı ve erişim bilgilerinin size verilip verilmeyeceği yazmalıdır.
Node.js’i şu durumda seçin, şu durumda seçmeyin
| Seçin | Başka dile bakın |
|---|---|
| Arayüz zaten JavaScript ya da TypeScript ile yazılıyor | İş, ağır hesap ve büyük rapor üretimi üzerine kurulu |
| Mobil uygulama ve panel aynı API’yi paylaşacak | Elinizde yalnızca klasik paylaşımlı hosting var ve değiştirmek istemiyorsunuz |
| Canlı bildirim ve anlık güncelleme önemli | Yazılımın uzun süre hiç güncellenmeden kalması bekleniyor |
Telefon uygulaması ve arkasındaki panel için mobil uygulama sayfasına, yalnızca web tabanlı bir sistem yeterliyse özel yazılım sayfasına bakın. İskenderun’daki ilk görüşmede dil değil iş konuşulur; kapsam yazıya geçtikten sonra sunucu tarafının hangi dille yazılacağına birlikte karar verilir.