Node.js Nedir?

Günümüzde yaygın olarak kullanılan backend dilleri arasında Node.js ilk sıralarda yer almaktadır. Son yıllarda popülerliği her geçen gün biraz daha artan AliExpress gibi e-ticaret platformalarında bu programlama dili kullanılır. Ayrıca Netflix, LinkedIn, Uber ve NASA gibi platformlarda da Node.js kullanıldığına şahit olabilirsiniz.

2018 yılı istatistiklerine göre Node.js üzerinde 23 milyondan fazla geliştirici vardı. Bu kullanıcı listesi de her geçen gün biraz daha artıyordu. Google’ın V8 motoru için özellikle geliştirilen Node.js, açık kaynağa sahip bir Javascript runtime environment’tır. Bu sayede web uygulamaları hızlı bir şekilde ölçeklendirilebilir hale getirilebilir. Ayrıca gerçek zamanlı uygulamaların verimli ve kolay bir şekilde çalışmasını sağlar.

Node.js Nasıl Çalışır?

Node.js, non blocking I/O ve güdümlü sunucu motorunu kullanır. Bu sayede kodun çalışması daha hızlı olacağı için JavaScript adaptasyonu daha kolay ve hızlı şekilde gerçekleşir. Node.js ve JavaScript sayesinde sistem üzerinde kullanılan kodların çalışması kolaylaşır. Bu da web sitesinin performansının artması demektir.

Node.js, Google V8 JavaScript motoru üzerinde çalışır. Burada yer alan web uygulamaları, olay güdümlü, yani event-based şeklindedir. Node.js platformunda “single threaded event loop” sistemi kullanılır. “Multi threaded request-response” mimarisinin çok yavaş bir event loop olduğu göze çarpmaktadır. Bu da aynı anda çoklu thread işlenmesini zorlaştırır. Platformdaki isteklere cevap vermek adına daha basit bir model olan single thread event loop kullanılması daha uygundur. Bunun için de Node.js, kullanıcılara Libuv kütüphanesini sunmuştur.

Bu yazılım dili kullanılırken her bir isteğin RAM üzerinde ayrı bir thread oluşturan web-serving tekniği yerine Node.js tek bir thread kullanır. Bu da aynı anda yüzlerce bağlantının yönetilmesini sağlar. Node.js sisteminde npm ile kullanıcıya paket yönetim desteği de sunulmaktadır. Popüler bir paket kütüphanesi diyebileceğimiz npm, Node.js kullanıcılarına sunulan en büyük kolaylıklardan biridir.

Node.js için geliştirilmiş, spesifik tek bir ihtiyaca yönelik, indirilebilir milyonlarca kütüphane bulunmaktadır. Kütüphanelerin kullanıcıya sunduğu en büyük özellikler arasında tamamen ücretsiz olmasını da sayabiliriz. Söz konusu kütüphanelerin hemen hepsi büyük bir hızla büyümekte ve kendini geliştirmektedir. Bu da Node.js topluluğunu daha güçlü hale getirmektedir. Dünyanın her bir noktasındaki Node.js geliştiricileri paketleri ödünç almak ya da paylaşmak için npm kullanırlar.

Node.js, 11.0 güncellemesi ile birlikte Node.js native Node kullanılarak daha da stabil hale getirilmiştir. En yaygın şekilde kullanılan npm modülleri arasında Meteor.js, Express.js, Sails.js, Nest.js, Koa.js, Hapi.js, Mongo.js, Total.js, Socket.js ve Loopbask.js modüllerini sayabiliriz. Bu npm modülleri ile performansı artırmak, zamandan tasarruf sağlamak ve büyük bir test ortamı oluşturmak mümkün hale gelmiştir. 

Neden Node.js?

Neden Node.js, sorusunun cevabı, verilecek bir örnekle daha iyi anlaşılabilir. Bir restorana gittiğinizi ve menüden seçim yaparak sipariş verdiğinizi düşünün. Restoranda, siz garsona siparişinizi verirsiniz. Garson da aşçıya siparişi bildirerek sipariş hazırlanmaya başlanır. Tabi siparişinizi verdikten sonra restoranda oturan tek kişinin siz olamadığınızı da düşünmeniz gerekir. Eğer garson, sizin siparişiniz hazırlanana kadar diğer müşterilerin siparişlerini almazsa, söz konusu müşteriler doğal olarak çok fazla zaman kaybeder. Bu nedenle sizin siparişiniz aşçıya bildirildikten sonra garson diğer müşterilerden sipariş almaya ve aşçıya eş zamanlı şekilde siparişleri bildirmeye devam eder. Bu sayede bir kişinin isteği, diğerlerinin işini engellememiş olur.  

Node.js çalışma mantığını yukarıdaki restoran örneğine benzetebilirsiniz. Sisteme bir talep iletildiğinde Node.js bu talebi derhal işleme koyar. Sisteme bu arada onlarca talep gelmektedir. Node.js, ilk talebin sonucunu beklemeden sonraki talepleri almaya ve onları da işleme koymaya devam eder. Bu sayede hiçbir istek, diğerini engellemez. Hangi talep önce tamamlanırsa onun cevabı sisteme düşer. Sistemin bu döngüsü asenkron çalışma mantığı olarak adlandırılır. Bir işlem diğer bir işlemi engellemediği için non-blocking olmaktadır.

Senkron işlemlerde bir talep sonuçlanmadan diğer talebe cevap verilmez. Bu da zaman kaybı demektir. İşte Node.js, bu zaman kaybının önüne geçilmesini sağladığı için yaygın olarak tercih edilen bir sistemdir. Node.js, birden çok talebe hızlı şekilde cevap verdiği için ölçeklenebilirlik sorununa da çözüm bulmuştur. Bu da sistemin popüler olmasında en etkili nedenlerden biridir. Aynı anda binlerce insanın kullanacağı bir sistem geliştirmeyi düşünüyorsanız, Node.js bu anlamda oldukça doğru bir tercih olarak kabul görür.

Peki, Asp.Net, Python, Php, Java ya da Ruby gibi teknolojiler ölçeklenebilirlik sorununa çare bulamıyor mu? Evet söz konusu teknolojiler de bu soruna çare bulur; fakat sistemin maliyeti çok daha fazladır. Yapılan maliyet analizleri nedeniyle özellikle Netflix, LinkedIn gibi büyük şirketler Node.js kullanmayı tercih ederler.

Node.js’nin en büyük avantajları arasında modüler yapısı gösterilmektedir. Bunun yanında söz konusu yapıyı destekleyen paket yönetim sistemleri olan npm de geliştiricilere büyük avantaj sağlamaktadır. Npm’yi Node.js projelerinin deposu olarak düşünebilirsiniz. Yukarıda sayılan nedenlerden dolayı Node.js günümüzde en popüler sistemler arasındadır. 

Node.js ile Neler Yapılabilir?

Node.js, geliştiricilere sınırsız bir ortam sunması ile bu denli yaygın hale gelmiştir. Günümüz dünyasında Node.js’nin başarılı şekilde kullanıldığı çok fazla platform mevcuttur. Bunlar arasında tek sayfa uygulamaları, sosyal medya ağları, data streaming, chat uygulamaları ve IoT uygulamaları yer alır. Kısaca bu platformlar üzerinde Node.js kullanılarak neler yapılabildiğine bir göz atalım:

Tek Sayfa Uygulamaları

Node.js kullanılarak tek sayfa uygulama geliştirmek son derece hızlı ve pratik şekilde gerçekleştirilir. Sistemin sağladığı avantajlar arasında web sitelerinin dinamik hale getirilmesi ve mail çözümlerinin sağlanması ilk sıralarda yer almaktadır. Asenkron veri akışı sağlayan sistem sayesinde tek sayfa uygulaması geliştirmek mümkün olmuştur.

Sosyal Medya Uygulamaları

Medium ya da LinkedIn gibi birçok sosyal medya platformu, Node.js ile yeniden geliştirilmiştir. V8 motoru sayesinde Node.js, geliştiricilere çok hızlı routing imkanı tanımaktadır. Ayrıca Node.js’nin sosyal medya uygulamalarında yaygın şekilde kullanılmasının en önemli nedeni ölçeklendirilebilir bir yapıya sahip olmasıdır.

Data Streaming

Netflix, günümüzde en yaygın kullanılan, 190 ülkede aktif olan, gelişmiş bir platformdur. Söz konusu platform, Node.js sayesinde 100 milyon saatten fazla uzunluğa sahip video içerikleri 120 milyondan fazla kullanıcıya ulaştırmaktadır. Node.js’nin dosyaları hızlı bir şekilde işlemesi, encode’a izin vermesi gibi özellikleri sayesinde bu platformda yaygın olarak tercih edilmektedir. Çok sayıda video içeriği bünyesinde barındıran e-ticaret platformlarında da bu özellik göz önünde bulundurularak Node.js kullanılır.

Chat Uygulamaları

Node.js, chatbotlar ve gerçek zamanlı chat uygulamaları için de önemli avantajlar sağlamaktadır. Yoğun veriler, yüksek site trafiği, çok kullanıcılı uygulamalar gibi özellikler için chatbot kullanımı vazgeçilmez bir sistemdir. Push bildirimlerin kolay çalıştırılması ve sunucudan taraftaki event loop’lar sayesinde gerçek zamanlı chat uygulamaları tercih edilir.

IoT Uygulamaları

Özellikle geçtiğimiz 10 yılda IoT cihazlarında inanılmaz bir gelişim olduğunu gözlemleyebilirsiniz. Bu gelişim, herkesin hayatında bu cihazların yer almasına neden olmuştur. Node.js, IoT çözümlerinde en çok kullanılan programlama dillerinden biri halini almıştır. Bu sistem sayesinde IoT ağlarındaki event driven mimarisi ve I/O operasyonlarının asenkron işlemleri pratik hale gelmiştir. Bunun yanında Node.js, okunabilir ve yazılabilir kanalların ve yayınların yönetilmesini sağladığı için IoT uygulama geliştirme birimlerinde yaygın olarak tercih edilir.

0 Shares:
Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer İçerikler