Blog Yazısı

Node.js Nedir? Sunucu Tarafında JavaScript ile Neler Yapılabilir?

Node.js Nedir? Sunucu Tarafında JavaScript ile Neler Yapılabilir?

Node.js'i tek cümleyle anlatmak gerekirse: JavaScript kodunun tarayıcı yerine sunucuda çalışmasını sağlayan bir çalışma ortamıdır. Uzun yıllar boyunca JavaScript yalnızca web sayfalarının içinde, kullanıcının tarayıcısında çalışan bir dil olarak biliniyordu. Node.js ile aynı dil; sunucu uygulamaları, komut satırı araçları ve API servisleri için de kullanılabilir hale geldi.

Node.js'in Kısa Tarihçesi

Node.js, 2009 yılında Ryan Dahl tarafından geliştirildi. Çıkış noktası, Google Chrome'un JavaScript'i çalıştırmak için kullandığı V8 motoruydu. V8, C++ ile yazılmıştır ve JavaScript kodunu çalışma anında makine koduna çevirir. Bu sayede kod satır satır yorumlanmak yerine doğrudan işlemcinin anlayacağı biçime dönüştürülür ve performans belirgin biçimde artar. Node.js, V8'in etrafına dosya, ağ ve sistem işlemleri için gereken çekirdek modülleri ekleyerek bu motoru sunucuya taşıdı.

Neden Bu Kadar Popüler?

  • Hız: V8 motoru ve olay tabanlı mimari, yoğun istek altında bile düşük gecikme sağlar.
  • Tek dil: Hem istemci hem sunucu tarafında JavaScript yazılabildiği için ekipler arasındaki bilgi geçişi kolaylaşır.
  • Ek web sunucusu gerektirmemesi: PHP veya ASP.NET uygulamaları isteği Apache, IIS ya da Nginx gibi bir web sunucusu üzerinden alırken, Node.js kendi çekirdek modülleriyle HTTP isteklerini doğrudan karşılayabilir.
  • Zengin paket ekosistemi: NPM üzerinden yüz binlerce hazır modüle tek komutla erişilebilir.

Klasik Sunucu Dillerinden Farkı: Bloklamayan Çalışma

Geleneksel sunucu tarafı yaklaşımlarında bir istek uzun süren bir işlem başlattığında (örneğin yavaş bir veritabanı sorgusu), o işlem bitene kadar sıradaki istekler beklemek zorunda kalabilir. Node.js ise işlemleri bloklamadan yürütür: uzun süren işi arka planda başlatır, sonucu beklemeden diğer isteklere geçer ve iş tamamlandığında geri çağrıyla sonucu teslim eder.

Bunu bir restorana benzetebiliriz. Klasik modelde garson bir siparişi alıp mutfaktan çıkana kadar başında bekler, diğer masalar sıra bekler. Node.js modelinde ise garson siparişi mutfağa iletir, hemen diğer masaya geçer ve yemek hazır olduğunda ilgili masaya servis yapar. Hızlı hazırlanan sipariş, yavaş olanın arkasında beklemez. Bu yapıya non-blocking I/O (bloklamayan giriş/çıkış) denir.

Node.js ile Neler Yapılabilir?

  • Anlık mesajlaşma ve canlı sohbet uygulamaları
  • Oyun sunucuları ve gerçek zamanlı bildirim sistemleri
  • REST ve GraphQL tabanlı API servisleri
  • Komut satırı araçları ve otomasyon betikleri
  • Mikroservis mimarisi içinde küçük, hızlı servisler

Modüler yapısı ve NPM paket yöneticisi sayesinde başka geliştiricilerin hazırladığı modülleri projeye eklemek çok kolaydır. Örneğin MySQL, SQLite, MongoDB veya PostgreSQL gibi veritabanlarına bağlanmak için hazır sürücüler bulunur; sıfırdan bağlantı katmanı yazmanıza gerek kalmaz.

Nerede Tercih Edilmemeli?

Node.js, giriş/çıkış ağırlıklı işlerde parlar. Uzun süre işlemciyi yoğun kullanan hesaplamalar (büyük ölçekli görüntü işleme, ağır bilimsel hesaplamalar gibi) tek iş parçacıklı yapısı nedeniyle olay döngüsünü meşgul edebilir. Bu tür işler için ayrı bir servis, işçi iş parçacıkları (worker threads) ya da farklı bir teknoloji düşünmek daha doğrudur.

Sonuç

Node.js; hızlı, hafif ve JavaScript bilen geliştiriciler için öğrenme eşiği düşük bir platformdur. Gerçek zamanlı ve çok sayıda eşzamanlı bağlantı gerektiren projelerde güçlü bir seçenektir. Kurumsal bir web uygulaması veya API geliştirmeyi düşünüyorsanız, projenin ihtiyaçlarına en uygun teknolojiyi birlikte belirlemek için bizimle iletişime geçebilirsiniz.

← Bloga dön

Son yazılar