Node.js Nedir? Sunucu Tarafında JavaScript
Node.js'in olay tabanlı yapısını, hangi işlerde güçlü olduğunu ve Express.js ile kurulan tipik backend kullanımlarını örneklerle anlatıyoruz.

Node.js, JavaScript kodunu tarayıcı dışında, sunucuda ve bilgisayarda çalıştıran açık kaynaklı bir çalışma ortamıdır. Google'ın V8 motoru üzerine kuruludur ve olay tabanlı, engellemeyen giriş-çıkış modeliyle aynı anda çok sayıda bağlantıyı verimli yönetir. API'ler, gerçek zamanlı uygulamalar, entegrasyon servisleri ve komut satırı araçları için yaygın biçimde kullanılır.
Node.js Nedir?
Node.js nedir sorusunu yanıtlamak için önce bir yanlış anlamayı düzeltmek gerekir: Node.js bir programlama dili ya da çatı değildir. Dil yine JavaScript'tir; Node.js ise bu dili tarayıcının dışında çalıştırabilen ortamdır.
Uzun yıllar JavaScript yalnız tarayıcıda yaşadı. 2009'da ortaya çıkan Node.js, Chrome'un JavaScript motoru V8'i sunucuya taşıdı ve dile dosya okuma, ağ bağlantısı kurma, veritabanına erişme gibi yetenekler kazandırdı. Böylece aynı dil hem ön yüzde hem arka yüzde kullanılabilir hâle geldi.
Node.js ile birlikte gelen npm, dünyanın en büyük açık kaynak paket kayıtlarından birine erişim sağlar. Bir proje başlatmak, bağımlılık eklemek ve betik çalıştırmak için kullanılan bu araç, Node.js'i yalnız sunucu yazanlar için değil, ön yüz geliştiricileri için de vazgeçilmez kılar.
JavaScript'in temel kavramlarını henüz bilmiyorsanız önce JavaScript nedir yazısına göz atmanızı öneririz; Node.js'te yazdığınız kod da aynı söz dizimini kullanır.
Olay Tabanlı Yapı Nasıl Çalışır?
Node.js'in en ayırt edici özelliği olay döngüsü (event loop) modelidir. Geleneksel bazı sunucu yapılarında her istek için ayrı bir iş parçacığı açılır ve bu iş parçacığı veritabanından yanıt gelene kadar bekler. Node.js ise beklemez: isteği başlatır, yanıt gelince haber verilmesini ister ve o arada başka isteklerle ilgilenir.
Bunu bir restoran garsonuna benzetebilirsiniz. Garson siparişi mutfağa iletir, yemek pişene kadar masanın başında durmaz; diğer masalara bakar, yemek hazır olunca servis eder. Tek garson, beklemenin çok olduğu bir ortamda çok sayıda masaya yetişebilir.
Bu modele engellemeyen giriş-çıkış (non-blocking I/O) denir. Veritabanı sorgusu, dosya okuma ya da başka bir servise istek gibi bekleme gerektiren işlerin yoğun olduğu uygulamalarda Node.js'i verimli kılan şey budur.
import { readFile } from "node:fs/promises";
console.log("1. Okuma başladı");
const icerik = readFile("notlar.txt", "utf8")
.then(metin => console.log("3. Dosya okundu:", metin.length, "karakter"));
console.log("2. Bu satır dosyayı beklemeden çalışır");Node.js Ne İşe Yarar?
Node.js ne işe yarar sorusunun yanıtı geniştir; ama en güçlü olduğu alanlar ortak bir özelliği paylaşır: çok sayıda eş zamanlı bağlantı ve bol miktarda bekleme. Tipik kullanımlar şunlardır:
- REST ve GraphQL API'leri: mobil uygulama ve web ön yüzüne veri sunan arka yüz servisleri
- Gerçek zamanlı uygulamalar: canlı sohbet, bildirim, sipariş takibi, ortak çalışma ekranları
- Entegrasyon servisleri: pazaryeri, kargo, ödeme ve muhasebe sistemleri arasında veri taşıyan ara katmanlar
- Webhook alıcıları: dış sistemlerden gelen olayları karşılayıp işleyen uç noktalar
- Komut satırı araçları ve derleme süreçleri: npm, Vite gibi geliştirici araçları da Node.js üzerinde çalışır
- Sunucu taraflı render: Next.js gibi çatılarla sayfaların sunucuda üretilmesi
Gerçek Hayattan Bir Senaryo
Bir otel yazılımı düşünün: resepsiyon ekranı, online rezervasyon formu ve satış kanalları aynı oda müsaitliğini görmek zorundadır. Bir rezervasyon düştüğünde diğer ekranların saniyeler içinde güncellenmesi gerekir. Bu tür anlık bildirimler, çok sayıda açık bağlantıyı az kaynakla tutabilen olay tabanlı sunucuların doğal kullanım alanıdır.
Node.js Backend ve Express.js
Node.js backend geliştirmede en çok bilinen yardımcı araç Express.js'tir. Express, adresleri (route), istek ve yanıtları, ara katmanları (middleware) yönetmeyi kolaylaştıran küçük ve esnek bir web çatısıdır. Fastify, NestJS ve Koa da aynı amaçla kullanılan diğer seçeneklerdir.
Aşağıdaki örnek, ürün listesi döndüren basit bir API uç noktası kurar. Gerçek bir projede bu verinin veritabanından gelmesi, kimlik doğrulama ve hata yönetimi eklenmesi gerekir. API kavramını ayrıntılı merak ediyorsanız API nedir yazımız REST mantığını adım adım anlatır.
mkdir urun-api && cd urun-api
npm init -y
npm install expressconst express = require("express");
const app = express();
app.use(express.json());
const urunler = [
{ id: 1, ad: "Zeytinyağı" },
{ id: 2, ad: "Kekik balı" }
];
app.get("/api/urunler", (req, res) => {
res.json(urunler);
});
app.listen(3000, () => {
console.log("API http://localhost:3000 adresinde çalışıyor");
});Güçlü ve Zayıf Yanları
Her teknoloji gibi Node.js de belirli işlerde parlar, bazı işlerde ise doğru seçim değildir. Kararı sloganlara göre değil, uygulamanın iş yüküne göre vermek gerekir.
| Güçlü olduğu alanlar | Dikkat gerektiren alanlar |
|---|---|
| Çok sayıda eş zamanlı bağlantı | Yoğun işlemci gerektiren hesaplamalar |
| Gerçek zamanlı iletişim (WebSocket) | Uzun süren görüntü / video işleme |
| Ön yüz ve arka yüzde tek dil | Bağımlılık sayısının hızla büyümesi |
| npm ile çok geniş paket ekosistemi | Paket güvenliğinin düzenli takibi |
| Hızlı prototipleme | Büyük projede mimari disiplin ihtiyacı |
Ağır Hesaplama İçin Çözümler
İşlemciyi uzun süre meşgul eden işler, Node.js içinde worker thread'lere, ayrı bir iş kuyruğuna ya da bu iş için daha uygun bir dille yazılmış servise devredilebilir. Böylece ana uygulama kullanıcı isteklerine yanıt vermeye devam eder.
Paket Güvenliği
npm ekosistemi büyük bir avantajdır ama her bağımlılık bir risk de taşır. Bakımı süren, yaygın kullanılan paketleri seçmek, npm audit ile bilinen açıkları düzenli kontrol etmek ve kilit dosyasını (package-lock.json) sürüm kontrolünde tutmak temel önlemlerdir.
Entegrasyonlarda Node.js
Bir işletmenin yazılımları nadiren tek başına çalışır. Web sitesi siparişi alır, kargo firmasına gönderi bilgisi gider, muhasebe programına fatura düşer, pazaryerindeki stok güncellenir. Bu sistemler arasında veri taşıyan ara katmanlar, Node.js'in bekleme yoğun yapısına çok uygundur.
Örneğin dış bir servisten gelen sipariş bildirimi bir uç noktada karşılanır, doğrulanır, veritabanına yazılır ve ilgili sistemlere iletilir. Bu tür akışları güvenilir kurmak, yeniden deneme, kayıt tutma ve hata bildirimi gibi detayları da gerektirir; entegrasyon çalışmasının zor tarafı kod değil, bu detaylardır.
Pazaryeri ve kargo bağlantıları özelinde pazaryeri entegrasyonu ve kargo entegrasyonu sayfalarımızda, siparişten teslimata kadar verinin nasıl aktığını anlattık. Hangi teknolojiyle yazılırsa yazılsın, iyi bir entegrasyonun ölçüsü elle veri girişini ortadan kaldırmasıdır.
Node.js Öğrenmeye Başlamak
Başlamak için nodejs.org adresinden işletim sisteminize uygun güncel LTS sürümünü kurmanız yeterlidir. LTS, uzun süreli destek alan ve canlı projeler için önerilen sürüm hattıdır. Kurulumdan sonra terminalde aşağıdaki komutlarla sürümü doğrulayabilirsiniz.
- Modül sistemi, dosya ve yol işlemleri gibi çekirdek konularla başlayın.
- Promise ve async/await ile asenkron kodu rahatça okuyabilecek seviyeye gelin.
- Express ile küçük bir API yazın, ardından bir veritabanı bağlayın.
- Ortam değişkenleri, hata yönetimi ve kayıt tutmayı öğrenin.
- Kodunuzu sürüm kontrolünde tutun ve küçük adımlarla commit atın.
node -v
npm -vSürüm Kontrolünü İhmal Etmeyin
İlk günden itibaren projeyi Git ile takip etmek, hatalı bir değişikliği geri almayı ve ekip çalışmasını kolaylaştırır. Temeller için Git nedir yazımıza bakabilirsiniz.
Sık Sorulan Sorular
01Node.js bir programlama dili mi?
Hayır. Node.js, JavaScript'i tarayıcı dışında çalıştıran bir ortamdır. Dil yine JavaScript'tir; Node.js ona dosya sistemi, ağ ve süreç yönetimi gibi sunucu yetenekleri ekler.
02Node.js mi PHP mi, hangisi daha iyi?
Mutlak bir kazanan yoktur. Node.js gerçek zamanlı ve bekleme yoğun işlerde, PHP ise geleneksel paylaşımlı barındırmada ve olgun içerik projelerinde rahattır. Ekibin uzmanlığı ve projenin bakım planı çoğu zaman belirleyici olur.
03Node.js için özel bir sunucu gerekir mi?
Node.js uygulamaları sürekli çalışan bir süreç olarak çalıştığı için bunu destekleyen bir sunucu, VPS ya da bulut platformu gerekir. Yalnız statik dosya barındıran klasik paylaşımlı paketler çoğu zaman yeterli olmaz.
04Express dışında hangi Node.js çatıları var?
Fastify performans odaklı, NestJS ise büyük ekipler için katmanlı ve TypeScript odaklı bir yapı sunar. Koa daha minimal bir yaklaşım benimser. Seçim, projenin büyüklüğüne ve ekibin alışkanlıklarına göre yapılmalıdır.
Node.js, JavaScript'i sunucuya taşıyarak API, gerçek zamanlı uygulama ve entegrasyon katmanlarını tek dille kurmayı mümkün kılar; ağır hesaplama işlerinde ise doğru mimariyle desteklenmelidir. İşletmenize özel bir arka yüz ya da sistemler arası veri akışı planlıyorsanız özel yazılım çözümlerimizi inceleyebilir, mağaza ve pazaryeri bağlantıları için entegrasyon hizmetimize göz atabilirsiniz.


