Monday, October 16, 2017

Baca Ini Sebelum Memutuskan untuk Menggunakan Node.js!


Node.js adalah command-line tool yang bisa dijalankan sebagai web server dengan menggunakan JavaScript.

Dengan V8 Engine-nya yang terkenal, platform ini cocok untuk melakukan beberapa hal dalam waktu yang sama.

Namun, apakah sebaiknya Anda segere berpindah ke Node.js?

Simak pembahasan berikut ini.

Node.js cocok untuk aplikasi yang membutuhkan koneksi yang persisten antara browser dengan server.

Dengan teknik long-pooling, kita bisa membuat aplikasi yang mengirim update ke user secara real time.

Melakukan long pooling pada platform seperti Ruby on Rails atau Django akan berakibat server sangat terbebani, karena setiap client yang aktif membutuhkan satu proses server.

Situasi ini menyebabkan tarpit attack.

Ketika kita menggunakan Node.js, server tidak membutuhkan thread yang berbeda untuk setiap koneksi yang terbuka.

Ini berarti, kita bisa membuat aplikasi chat berbasis browser dengan Node.js yang hampir tidak memakan system resources untuk melayani banyak client.

Dengan kata lain, Node.js memang cocok untuk long-pooling.

Perlu diketahui juga bahwa Ruby dan Python keduanya memiliki tools untuk melakukan hal semacam ini (misal: eventmachine dan twisted), tapi tetap masih lebih baik Node.js.

Selain itu, Javascript memang cocok juga untuk model concurrency berbasis callback.

Apalagi, Bisa melakukan serialisasi dan deserialisasi dengan JSON pada server dan client juga sangat menguntungkan.


Dengan kata lain, alasan untuk menggunakan Node.js adalah:
  • Node.js berjalan dengan menggunakan Javascript, jadi kita bisa menggunakan bahasa yang sama pada server dan client, bahkan berbagi kode antar sesamanya
  • Event-driven yang memiliki single thread adalah cepat walaupun ketika menangani banyak request sekaligus. Tapi itu masih bisa dibilang simple dibandingkan dengan sistem multi-threaded tradisional-nya Java dan Ruby on Rails.
  • Memiliki package yang terus menerus bertambah yang dapat diakses melalui NPM, termasuk client dan server side modules, juga command line tools untuk pengembangan web. Kebanyakan modul ini juga bisa didapat di github, sehingga kita bisa melaporkan bugs dan mendapat perbaikannya dalam hitungan jam. 
  • Node.js telah menjadi de-facto standard untuk menjalankan tools yang berhubungan dengan Javascript dan tools lain yang berhubungan dengan web. Termasuk di antaranya task runners, minifiers, beautifiers, linters, preprocessors, bundlers, dan analytics preprocessors.
  • Node.js cocok untuk prototyping, agile development, dan rapid product iteration.


Adapun alasan untuk tidak menggunakan Node.js adalah:
  • Node.js berjalan dengan Javascript, yang artinya tidak ada compile-time type checking. Untuk sistem yang besar dan kompleks yang disertai kolaborasi antara organisasi yang berbeda, sebuah bahasa yang menganjurkan interface dan mendukung static type checking mungkin dapat mengurangi waktu debugging.
  • Sebagai tambahan, banyak package di NPM yang agak "mentah" dan masih dalam rapid development. Beberapa library untuk framework yang lebih awal sudah mengalami testing dan bugfixing dalam waktu yang lama dan sangat stabil saat ini. Sayangnya, Npmjs.org tidak memiliki mekanisme untuk menilai sebuah package. Akibatnya, package yang berbeda dengan fungsi sama semakin memenuhi npmjs.org walaupun kebanyakan dari mereka sudah tidak di-maintain.
  • Nested Callback Hell, walaupun ada 20 solusi untuk ini.
  • Bekerja dengan file dalam penggunaan Node.js agak sedikit merepotkan. Hal yang biasa pada bahasa yang lain, seperti membaca sebaris teks dari sebuah file akan menjadi sedikit "aneh" dengan Node.js.
Itulah beberapa hal yang perlu dipertimbangkan sebelum melakukan migrasi ke Node.js.

Sumber: https://stackoverflow.com/questions/5062614/how-to-decide-when-to-use-node-js