Node.js Nedir? Nerelerde Kullanılır?
Node.js, Javascript kodlarının web sayfası dışında çalışmasına olanak sağlayan, açık kaynak olan bir platformdur. Javascript’in son 10 yıl içerisindeki popülerliği ve de kullanım sahasının genişlemesiyle 2009 yılında “Javascript everywhere” yaklaşımıyla sunulmuştur. Node.js Javascript kullanarak sunucu tarafında çalışabilen script’ler yazabilmelerine imkan tanımıştır. Yıllar içerisinde yerini sağlamlaştıran ve birçok servisin, web sitelerinin altyapısı haline gelen Node.js’in tercih edilmesinde belli başlı nedenler var. Bunların en başında Node.js’in hızlı olmasını söyleyebiliriz. Bunun iki temel nedeni V8 Engine ve de non-blocking yapıya sahip olmasıdır.
V8 Engine nedir?
Chrome ve Node.js içerisinde kullanılan açık kaynak olan bir Javascript motorudur. Yazılmış javascript kodunu alıp makine diline çevirme prensibiyle çalışır ve onu diğer motorlardan ayıran en temel özellik budur. Hızlı olmasını buna borçludur. Node.js, V8 Engine altyapısıyla birlikte çalışmaktadır.
Non-Blocking Modeli Nedir?
Node.js’in çalışma mantığı non-blocking model üzerine dayalıdır. Bunu öğrenmeden önce blocking model nedir, ilk başta ona göz atalım.
Dosyayı yükle.
Dosyayı göster.
Başka bir fonksiyonu çalıştır.
Blocking model’de yukarıdaki adımlara sahip bir kod adım adım gerçekleştirilir. Baştan aşağıya satır satır okumak denilebilir blocking model için. Aynı kodu non-blocking modele sahip bir altyapıyla gerçekleştirdiğimizde bir sırayı takip etme çabasına girmez. İlk adım olan dosyayı yüklemekle başlar, dosyayı yüklerken ona bağlı olmayan diğer kodların çalışmasını sağlar. Dosya yüklenir yüklenmez dosyayı gösterir. Kısaca blocking model senkronize bir şekilde çalışırken non-blocking model asenkron bir yapıya sahiptir. Node.js kendi içerisinde senkronize kod yazmaya da izin vermektedir. Başında ‘async’ gördüğünüz kodlar senkronize bir yapıya sahiptir.
Non-blocking model tek bir threadi ortak kullandığı için blocking modele göre daha kısa sürede ve masrafı düşük bir şekilde programı tamamlayacaktır. Thread dediğimiz programda birden fazla işin aynı anda yapılmasını sağlayan parçalarıdır. Bunu bir örnekle açıklarsak bir web-sitesine gelen her istek bir iş olarak görülebilir. Blocking modelde bu işler için ayrı ayrı thread’ler atanmaktadır. Toplamda on thread’ı olan bir yerde onbirinci iş geldiğinde işlerde aksamaya neden olur. Günümüzde teknolojinin hızını düşünürsek böyle bir aksama web-sitesi için bir kayba dönüşecektir. Non-blocking model ise tek thread içerisinde döngü mantığıyla çalışır böylece bir işin aksaması söz konusu olmaz.
Özetlemek gerekirse Node.js’in ne olduğunu, neden tercih edildiği hakkında başlıklara değindik. Hızlı çalışıyor olması, non-blocking modele sahip olmasıyla günümüzde birçok şirket Node.js kullanmayı tercih etmiştir. Netflix, Linkedin, Uber, Yahoo gibi firmalar tercihlerini Node.js olarak değiştirdiklerinde performans açısından iyi sonuçlar aldıklarını çoğu kez paylaşmışlardır. Eğer gerçek zamanlı bir uygulama geliştiriyorsanız, veri akışının olduğu bir web sitesi yapmayı düşünüyorsanız Node.js iyi bir tercih olabilir. Javascript bilerek hem backend hem de frontend tarafında tek dil seçeneği ile hızlı uygulamalar geliştirebilirsiniz.