Node.js: Pengertian, Arsitektur, Cara Kerja, Kelebihan, Kekurangan, Contoh Penggunaan, dan Perbedaannya dengan Javascript

Table of Contents
Pengertian Node.js
Node.js

Pengertian Node.js

Node.js adalah perangkat lunak yang dirancang oleh Ryan Dahl untuk mengembangkan aplikasi berbasis web dan ditulis dalam sintaks bahasa pemrograman JavaScript. Node.js merupakan runtime untuk lingkungan JavaScript di luar peramban web yang dibangun di atas mesin JavaScript V8.

Jika JavaScript sebagai bahasa pemrograman yang berjalan di sisi client atau browser saja, maka Node.js ada untuk melengkapi peran JavaScript sehingga bisa juga berlaku sebagai bahasa pemrograman yang berjalan di sisi server, seperti halnya PHP, Ruby, Perl, dan sebagainya.

Node.js memiliki pustaka server HTTP sendiri sehingga memungkinkan untuk menjalankan server web tanpa menggunakan program server web seperti Apache atau Nginx. Node.js dapat dijalankan pada Windows, Mac OS X, dan Linux.

Baca Juga: Pengertian HTTP dan HTTPS, Fungsi, Cara Kerja, Perbedaan, dan Kelemahan HTTP

Arsitektur Node.js

Node.js memiliki dua komponen utama, yaitu engine JavaScript V8 Google dan Libuv Library. Selain itu, platform tersebut menggunakan dua design pattern: object pool dan facade.
1. Engine V8
Engine V8 milik Google adalah sebuah compiler JavaScript yang dibuat menggunakan bahasa pemrograman C++. Dengan komponen ini, input berupa kode JavaScript dapat di-compile menjadi kode dalam tingkat assembly. V8 sendiri terdiri dari tiga komponen di antaranya,
a. Compiler. Mengubah JavaScript menjadi bahasa pemrograman lain
b. Optimizer. Menciptakan sebuah abstract syntax tree yang akan diubah menjadi static single assignment dan dioptimasi
c. Garbage collector. V8 membagi penyimpanan yang ada menjadi dua, yaitu penyimpanan lama dan baru. Keduanya  menyimpan objek JavaScript, tetapi penyimpanan baru juga merupakan tempat menaruh output dari compiler. Ketika penyimpanan baru sudah penuh, garbage collector memindahkan objek-objek lama ke penyimpanan lama agar kinerja Node.js tetap ringan

2. Libuv library
Library C++ ini bertugas mengelola operasi asynchronous I/O (input/output) di Node.js dan main event loop. Di dalamnya juga terdapat thread pool reserve yang menangani thread setiap operasi I/O.

3. Design pattern
Ada dua jenis design pattern yang digunakan oleh Node.js, yaitu object pool dan facade.
a. Object pool. Design pattern berisi kumpulan objek yang dapat digunakan untuk task tertentu
b. Facade. Design pattern yang memberikan tampilan antarmuka untuk body kode

Cara Kerja Node.js

Aplikasi web yang dibangun menggunakan Node.js biasanya memiliki workflow yang mirip. Cara kerja Node.js di antaranya,
1. Client mengirim request ke webserver untuk berinteraksi dengan aplikasi web. Request dapat berupa blocking atau non-blocking, misalnya: meminta, menghapus, dan memperbarui data.
2. Node.js mengambil request yang masuk, kemudian menambahkannya ke Event Queue.
3. Permintaan kemudian diteruskan satu per satu melalui Event Loop dan diperiksa apakah requestnya cukup sederhana sehingga tidak memerlukan resource eksternal apapun.
4. Event Loop memproses permintaan sederhana (operasi non-blocking), seperti Polling I/O, dan mengembalikan respons ke client terkait.
5. Satu thread dari Thread Pool ditugaskan ke satu request yang kompleks. Thread ini bertanggung jawab untuk menyelesaikan permintaan blocking tertentu dengan mengakses eksternal resource, seperti komputasi, database, sistem file, dan sebagainya.
6. Setelah task selesai dilakukan, respons dikirim ke Event Loop yang pada gilirannya untuk mengirimkan respons itu kembali ke client.

Kelebihan Node.js

1. Mampu mengeksekusi kode dengan cepat
Keunggulan yang pertama, Node.js dibuat dengan menggunakan Engine V8 milik Google yang dapat memproses kode secara cepat dan optimal. Bagi yang belum mengetahui apa itu Engine V8 adalah sebuah compiler dari JavaScript yang menggunakan bahasa pemrograman C++, serta memiliki tiga komponen utama yaitu compiler, optimizer, dan garbage collector.

2. Mendukung proses single-thread
Konsep single-thread merupakan suatu metode dimana program hanya mengalokasikan kebutuhan thread pada proses yang sedang berjalan. Sehingga, kinerja dari program menjadi lebih ringan pada kondisi normalnya.

3. Memiliki sifat non-blocking
Berikutnya, konsep non-blocking dapat berarti, proses yang tidak membutuhkan output atau keluaran pada proses sebelumnya. Akan tetapi dapat berjalan secara bersamaan untuk meningkatkan efisiensi dalam proses development.

4. Mempunyai dukungan komunitas yang luas
Kelebihan yang keempat, Node.js juga mempunyai komunitas atau forum yang cukup luas. Grup pengembang secara aktif mampu untuk berkontribusi melalui peningkatan jumlah pengguna Node.js melalui berbagai situs seperti, Github, StackOverflow, dan lain sebagainya.

5. Mudah untuk dipelajari
Menurut hasil survei, JavaScript termasuk ke dalam bahasa pemrograman front-end terpopuler, sehingga para developer dapat beralih juga untuk penggunaan Node.js pada sisi backend. Untuk programmer JavaScript tingkat junior, mungkin membutuhkan beberapa waktu untuk beradaptasi dengan penerapan struktur data dengan paradigma yang berbeda.
 

Kekurangan Node.JS

1. API Kurang Stabil
Salah satu kelemahan terbesar Node.js adalah kurangnya konsistensi. API Node.js sering berubah, dan perubahannya seringkali tidak sesuai. Bila ini terjadi, programmer dipaksa untuk membuat perubahan pada basis kode yang ada agar kompatibel dengan versi terbaru API Node.js.

2. Banyak Pengembangan
Fakta bahwa Node.js tidak terbagi juga dapat dilihat sebagai kelemahan oleh beberapa pengembang. Sebagai perbandingan, Ruby on Rails memberi Anda banyak petunjuk dari pemasangan yang baru dan membimbing Anda ke dalam cara mereka melakukan sesuatu, namun dengan Node.js, pada dasarnya Anda perlu menulis semuanya dari nol. Ini bisa mengakibatkan penurunan produktivitas, memperlambat pekerjaan Anda.

3. Kurang Cocok untuk Complicated Pemrograman
Node.js belum mendukung pemrograman multi-threaded. Hal ini mampu melayani aplikasi yang lebih rumit daripada Ruby, tapi tidak sesuai untuk melakukan perhitungan lama. Perhitungan berat memblokir permintaan masuk dan ini dapat menyebabkan penurunan kinerja. Sementara Node.js sangat cocok untuk aplikasi yang kompleks, dalam kasus perangkat lunak yang memerlukan beberapa komputasi berat, kinerjanya kurang efektif.

4. Ada Beberapa Tools Kurang Lengkap
Meskipun Node.js inti stabil, banyak paket di registri npm (manajer paket node pra-instal yang mengatur pemasangan dan pengelolaan program Node.js pihak ketiga) masih berkualitas buruk atau belum terdokumentasi dengan benar.

Contoh Penggunaan Node.js

Terdapat lebih dari 500 perusahaan telah menggunakan Node.js dalam membangun layanannya. Berikut beberapa contoh di antaranya,
1. LinkedIn
Platform untuk membangun koneksi di dunia profesional ini menggunakan Node.js setelah beralih dari Ruby. Alasan di balik ini adalah karena LinkedIn melakukan optimasi untuk mobile app mereka. berhasil mengurangi jumlah server dan kini aplikasinya berjalan 20x lebih cepat dari sebelumnya.

2. Netflix
Netflix adalah layanan streaming film berbasis Node.js yang melayani jutaan pengguna di seluruh dunia. Menurut tim Netflix, modularitas framework mendorong mereka memilih Node.js. Antarmuka pengguna (UI) Netflix dibangun menggunakan Node.js dan hampir dua kali lebih cepat dibanding sebelumnya.

3. Uber
Uber menyediakan layanan transportasi online dengan harga terjangkau. Uber merupakan salah satu perusahaan yang memanfaatkan framework secara sepenuhnya untuk membangun sebagian besar platformnya di Node.js.

Alasan memilih Node.js yaitu kemudahan pemeriksaan eror, kecepatan pemrosesan, dan pengembangan yang berkelanjutan berkat sifatnya yang open-source.

4. Trello
Trello adalah platform berbasis Node.js yang digunakan bisnis untuk mengatur proyek secara online. Server-side Trello menggunakan Node.js. Bagi Trello, ketersediaan library Node.js dan fungsionalitasnya untuk single-page app sangat penting. Trello membutuhkan update yang cepat dan Node.js memiliki kapasitas untuk melakukan itu.

5. PayPal
PayPal menggunakan Node.js untuk membuat user-facing contents. Tim PayPal menggunakan Node.js karena memfasilitasi developer untuk membangun server-side dan juga client-side dengan JavaScript.

Perbedaan Node.JS dan Javascript

Tidak ada perbedaan antara web JavaScript dan Node.js dalam hal bahasa yang digunakan. JavaScript digunakan di browser dan di Node.js hampir persis sama. Yang membuat Node.js istimewa adalah kumpulan API yang berbeda. Di browser, Anda memiliki berbagai API DOM / Web yang terbuka yang membantu Anda berinteraksi dengan UI dan memungkinkan Anda mengakses hardware sampai batas tertentu.

Untuk membandingkan, Node.js dilengkapi dengan banyak API yang sesuai untuk pengembangan backend, mis. dukungan untuk sistem file, permintaan http, arus, proses anak, dll. Browser menawarkan beberapa dukungan dasar untuk sistem file atau permintaan http, namun biasanya dibatasi karena masalah keamanan.

Dari berbagai sumber

Download

Aletheia Rabbani
Aletheia Rabbani “Barang siapa yang tidak mampu menahan lelahnya belajar, maka ia harus mampu menahan perihnya kebodohan” _ Imam As-Syafi’i

Post a Comment