Close

Node.js Nedir ve Neden Kullanmalıyız ?

Node.js ile son zamanlarda hem sunucu hem de tarayıcı tarafında sıkça kullanım söz konusudur. JavaScript dilinin kullanımının artmasıyla bu tür kütüphanelerde büyük avantajlarıyla vazgeçilmez hale geliyor. Sizlerle bu yazımızda Node.js ‘yi konuşup inceleyeceğiz. Yazılımcıların çoğu bu kütüphaneyi övsede, bazıları kullanışsız ve okunulabirliğinin olmadığını söylüyor. Bu yazımızda iyi ve kötü yanlarından söz edeceğiz karar sizin. Bana soracak olursanız kessinlikle övülecek bir kütüphanedir. Bir çok konuda yazılımcıların işini kolaylaştırmıştır. Yıllarca kullandığımız request/response modelinden sonra gerçek zamanlı 2 yönlü iletişim gibi bir modele geçmek gerçekten bir çok yazılımcıyı heycanlandırıp mutlu etmiştir. Server ve client için isteklerini kolayca yönetmenizi sağlayan bir modeldir. Node.js sayesinde JavaScript en çok kullanılan 10 dil arasına girmiştir. Ciddi anlamda bir yükselişe sebep oldu. Node.js full-stack, back-end ve front-end geliştiriceler içindir.

Node.js Nedir ?

Kısaca özetlemek gerekirse Node.js bir Javascript kütüphanesidir. Daha detaylı göz atacağız. JavaScript dili ile uygulama geliştirme, yazılım alt yapısı oluşturmak için kullanılan kütüphanedir. JavaScript V8 motorunu kullanır. En önemli ve patlamaya sebep olan asıl özelliği sunucu tarafında kullanılabiliyor olması. Şu başlıklarla toparlayalım.

  • JavaScript kütüphanesidir.
  • Açık kaynak ve ücretsizdir.
  • Tüm işletim sistemleriyle uyumlu çalışır (Mac, Windows, Linux)
  • Sunucu tarafında JavaScript dili ile geliştirme yapmamızı sağlıyor.

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

Bir görev olarak istek sisteme iletilir. Bu durumda sistem her zaman cevap vermeye hazır olarak bekler. Ardından gelen görevi gerçekleştirip, hiç cevap verme sırası beklemeden yanıtı gelen yere iletir. Yukarıda da dediğimiz gibi, en can alıcı nokta burasıdır. Yani istekler ve cevaplar sıra beklemez direk çalışır. Dinamik içerikler oluşturabiliriz. Sunucu tarafında dosya işlemlerini gerçekleştirebiliriz. Veritabanı işlemlerini rahatlıkla yapabiliriz.

Neden Node.js Kullanmalıyız ?

Her konuda dolduğu gibi asıl sorulan soru ‘Neden Kullanmalıyım ?’ sorusudur. Buna en geçerli sebep işlem sırasının olmamasıdır diyebiliriz. Ancak yazılımcılar bu konuda da ikiye ayrılmış durumdalar. Bir kısım, çok sayıda CPU döngüsüne sahip uygulamaların çökeceğini savunuyor. Bir kısım ise bunlar küçük işlemler gerçekleştirdiği için sorun oluşmayacağını savunuyor. Bir diğer geçerli sebep ise single-threaded olay döngüsü yani event loop olayı. Tek süreçte tüm işleri karşılar diyebiliriz. Olay tabanlı bir programlama yapabiliriz. Bir çok büyük projeniz için ölçeklendirilebilir sistemler yazabilirisiniz. Bunu kullanan çok sayıda büyük şirkette mevcuttur. Sunucu yükünü azaltır. Maddeler halinde toparlayacak olursak.

  • Yeni başlayanlar için öğrenmesi kolaydır.
  • Google ‘ın teknolojisi ve event loop sayesinde hızldır.
  • Verileri JSON formatıyla veritabanında işler.
  • Çoklu modülleri destekler (NPM, Grunt vb…)
  • Gerçek zamanlı olduğu için oyun ve chat uygulamaları için uygun kütüphane Node.js ‘dir diyebiliriz.
  • Streaming için kullanılabilir. Bu durumda video ve ses uygulamaları için kullanılabilir.
  • Linux Vakfı başta olmak üzere PayPal, Microsoft gibi şirketlerde desteklemektedir.
  • Barındırma imkanları çok fazladır.
  • JavaScript dili kullanıldığı için bir çok yazılımcıya tanıdık gelecektir.

Kimler Kullanır ?

Node.js büyük bir hızla kullanım artışı göstermekte. Web uygulamaları için evrensel bir kütüphane olmuştur. Bir çok büyük şirket Node.js ‘yi projelerinde kullanıyor. Buna NASA ‘da dahil. Mikro servisler, gerçek zamanlı uygulamalar, nesnelerin interneti (IoT) alanlarında vazgeçilmez hale gelmiştir. NASA, astronotların gerçek zamanlı verilerini işlemek için kullanmıştır. Üüretim alanında BMW, General Motors, SIEMENS. Finans alanında Goldmen Sachs, PayPal, Wells Fargo, ADP. E-Ticaret alanında Amazon, Best Buy, ebay. Medya alanında Sony, Beats Music, The New York Times. Teknoloji alanında Apple, Intel, Yahoo gibi şirketler başta olmak üzere kullanan isimlerdir. Gördüğünüz gibi kullanım alanı liste baya kabarık ve ciddi bir liste oluşturuyor. Ayrıca biir çok büyük şirketin geliştirici ekiplerinin Node.js için yapılmış konferanslarıda mevcuttur. Örneğin Groupon markasının yazılım ekibi, sayfa yükleme hızlarının %50 azaldığını söylemektedir.

Node.js Başarı Hikayeleri

Groupon kendi web sitesini Node.js ve Ruby on Rails ile tekrardan inşa ettiler. Ruby’nin iyi olmasına rağmen giderek gelen güncellemeler ile yapıyı kontrol etmek zorlaşmaya başaldığını söylüyorlar. Bir çok nedenden dolayı Node.js yi tercih etmişler. Projeyi ölçeklendirip daha iyi performans aldıklarını söylüyorlar. Zamanla büyük kısımları Node.js ‘ye geçirmişler. Back-end serviserini, api servislerini ve 70 ‘e yakın kendi diğer uygulamalarını Node.js ile inşa ettiklerini dile getiriyor Groupon yazılım ekibi.

Hangi Alanlar İçin Node.js Kullanmalıyız ?

Node.js ‘nin en güzel yanlarından biri sunucuda JavaScript kullanabiliyor olmamız. JavaScript ‘i tarayıcı tabanlı yazmak zorunda olmadığımız anlamına geliyor. Chat uygulamalarını oluşturmak için en önemli madde gerçek zamanlı olmasıdır. Bunu gayet başarılı bir şekilde gerçekleştiriyor. Bir kaç maddeyle kullanım alanlarını listeleyelim.

  • Veri Akışı (Streaming) : Gerçek zamanlı dosya akışı, yükleme sırasında dosya kodlama, veri katmanları arası proxy oluşturma.
  • Tek Sayfa Uygulamalar (SPA – Single Page Apps) : Tek sayfa modern web uygulamaları son zamanlarda baya popüler. Kullanıcı ile en hızlı ve en verimli iletişim yolu oldu diyebiliriz.
  • Web Uygulamaları : SEO dostu web uygulamaları geliştirilebilir.
  • Chat : Mesajlaşma ve sohbet uygulamaları. Bir çok cihaz ile iletişimde olan gerçek zamanlı mesajlaşma ve sohvet uygulamaları için ciddi bir altyapı imkanı sunuyor.
  • API (Application Programming Interface) : Program arayüzleri, veritabanları ve web servisleri arasında iletişim kurmak için api imkanı sunar.
  • Proxy : Veriyi içeri ve ya dışarı dağıtmak için Node.js ‘yi proxy olarakta kullanabiliriz.
  • Gösterge Tabloları (Dashboards) : Uygulama verilerini gerçek zamanlı izlemek için tabloların ve grafiklerin oluşturulması için altyapı imkanı sağlıyor.

Node.js ile İlgili Az Bilinenler

Node.js web uygulamaları inşa etmek için kullanılıyor diye biliniyor ancak web dışında bir çok alanda da sağlam uygulamalar geliştirilmiş durumda. Bunlardan bazılarını maddelere halinde verelim.

  • NodeOS : Linux tabanlı, NPM paket yönetici kurulmuş bir işletim sistemi.
  • Node-Webkit : Node.js ile geliştirme yapmak isteyenler için hazır bir el çantası diyebiliriz.
  • Log.io : Uygulamanızda yapılan tüm işlemler için loglama sistemi.
  • Nodecast : Chromecast ‘ten ilham alınarak hazırlanmış bir uygulama. Cep telefonunuzdan PC ‘ye video ve resim gönderme işi için kullanılabilir.
  • Nexe : Yardımcı programdır. Mac ve Linux ortamında çalışan tek dosyalık komutlar çalıştırmak içindir.

Kurumlar İçin Node.js

Bir çok büyk şirket mikro servisleri için Node.js ‘yi tercih ediyor. Kendi ana sistemlerine engel olmayacak şekilde bir çok uygulama geliştiriyorlar. Tercih etme sebebleri ayrı ayrı birbirinden bağımsız modüler uygulamalar yapmak için Node.js ‘nin yukarıda saydığımız imkanlarının olmasıdır.

Bunun yanı sıra Express, Mongo, jQuery ve Angular JS gibi teknolojilerle de stabil bir şekilde beraber çalışıyor. Medya, ödeme sistemleri, e-ticaret, sosyal medya, kurumsal web uygulamaları, back-end ve api gibi alanlarda da başarılı bir şekilde performans gösteriyor. Özetle Node.js kullanan kişiler ve ya kurumlar daha az geliştirici, daha stabil sunucu işlemleri, daha hızlı sayfalar ve uygulamalar inşa eder.

Node.js ile Neler Yapmamalıyız ?

Öncelikle yapay zeka ve ya video işleme gibi işlemler için Node.js tavsiye edilmez. Node.js ‘nin 1.5GB bellek alanı mevcut. Bu tarz işlemleri mikro işlemlere bölmek daha verimli sonuçlar almanızı sağlar. Kullanacağınız portlara dikkat edin. Mesela 80 portunu apache ve ya nginx kullanır. Çakışmaması için ayrı bir port vermenizde fayda var. Eski sürümlerinden uzak durun, güncel versiyonlarını kullanıp ek olarak SSL aktif edin güvenlik konusu için.

Related Posts

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir