Node Js Adalah Solusi Cerdas untuk Pengembangan Apps?

Node Js Adalah Solusi Cerdas untuk Pengembangan Apps?

by
Rian Romadhon
December 8, 2020

Node Js adalah istilah yang makin populer selama beberapa waktu terakhir dalam bidang pengembangan website dan aplikasi. Runtime ini memungkinkan bahasa pemrograman skrip JavaScript tidak lagi terbatas di dalam browser, tetapi juga di luar browser. Dengan begitu, developer pun sekarang dapat melakukan pemrograman berbasis JavaScript untuk sisi frontend maupun backend.

Sepintas Tentang Node Js 

Node Js adalah perangkat lunak yang diciptakan secara khusus untuk membantu pengembangan aplikasi berbasis web. Namun, yang perlu dipahami, Node Js bukanlah sebuah bahasa pemrograman baru, melainkan runtime atau yang juga disebut interpreter JavaScript. Adapun yang dimaksud dengan interpreter adalah perangkat lunak yang memiliki fungsi untuk melakukan proses eksekusi sejumlah instruksi yang sudah ditulis dalam sebuah bahasa pemrograman.

Untuk lebih jelasnya, perhatikan deskripsi berikut.

node js adalah

Dalam melakukan sebuah website development, developer akan membutuhkan beberapa bahasa pemrograman. Hal ini karena keterbatasan masing-masing bahasa pemrograman yang dapat bekerja di sisi frontend maupun backend saja. Seperti contoh, sebagian besar developer menggunakan Javascript dan HTML untuk melakukan proses di sisi frontend dan PHP untuk melakukan proses di sisi backend.

Namun, kini developer dapat hanya menggunakan satu bahasa saja untuk melakukan aktivitas frontend dan backend, yakni JavaScript. Hal ini sangat mempermudah developer dalam urusan environment-nya. Pasalnya jika menggunakan PHP, perlu juga melakukan instalasi apache sebagai web server-nya. Sementara dengan NodeJs, tidak perlu ada perangkat tambahan lain yang diperlukan. 

Penggunaan Node Js pun perlu dilakukan secara selektif sesuai dengan karakter, keuntungan, dan kelebihannya. Setidaknya, beberapa kegiatan pemrograman yang dianjurkan menggunakan Node Js adalah aplikasi single page, aplikasi yang menerapkan Application Program Interface (API) JavaScript Object Notation (JSON), dan aplikasi yang melakukan streaming data. Sebagai gambaran, beberapa situs besar yang memanfaatkan platform ini antara lain Linkedin, Medium, dan Netflix. 

Sejarah Node Js 

Penemuan Node Js tidaklah terlalu lama, yakni pada tahun 2009. Orang yang menciptakan Node Js adalah Ryan Dahl, yakni seorang developer ternama dari Joyent. Joyent sendiri merupakan perusahaan perangkat lunak dan layanan berbasis cloud yang berpusat di San Francisco, California, Amerika Serikat. Kemudian per Juni 2016, Joyent diakuisisi oleh Samsung Electronics.

Ryan Dahl memiliki ketertarikan sangat kuat pada penggunaan bahasa pemrograman single thread terutama di sisi server. JavaScript yang kala itu masih hanya dapat berjalan di browser memunculkan ide di benak Ryan Dahl untuk melakukan sebaliknya—membuat engine yang ada di dalam browser dikeluarkan sehingga mengeksekusi JavaScript dapat dilakukan di luar browser.

Bahasa pemrograman JavaScript dipilih sebagai Node setelah Ryan Dahl sebelumnya mencoba pula Haskell, LUA, dan C. Node Js pun akhirnya diciptakan dan diperkenalkan kali pertama untuk pengguna sistem operasi Linux.

Node Js pun tentu mengalami perkembangan hingga kini.

sejarah node js adalah

Dikutip dari laman resmi Node Js, berikut adalah milestone perkembangan Node Js sejak diciptakan.

2009

  1. Node Js diciptakan dan diperkenalkan untuk kali pertama.
  2. Node Package Manager (NPM) diluncurkan untuk kali pertama. NPM merupakan online repository yang memungkinkan setiap penggunanya (pengembang JavaScript) membagikan tools dan melakukan instalasi dan mengelola berbagai modul.

2010

  1. Express diluncurkan untuk kali pertama. Express adalah framework aplikasi web Node Js yang fleksibel dan minimal yang menyediakan set fitur yang powerful untuk website maupun mobile app development.
  2. Socket.io diluncurkan untuk kali pertama. Socket io adalah library JavaScript untuk aplikasi web yang bersifat realtime.

2011

  1. NPM versi 1.0 dirilis.
  2. Perusahaan besar seperti LinkedIn dan Uber mulai mengadopsi Node Js.
  3. Hapi diluncurkan untuk kali pertama. Hapi adalah framework yang ditulis dalam JavaScript dan digunakan untuk membangun aplikasi serta layanan seperti yang dilakukan oleh Express.

2012

Adopsi Node Js semakin meluas.

2013

  1. Platform untuk blogging bernama Ghost menggunakan Node Js.
  2. Koa diluncurkan untuk kali pertama. Koa adalah framework web baru yang didesain untuk menghasilkan fondasi aplikasi web dan API yang lebih ekspresif, kuat, dan kecil.

2014

io.js mulai digagas dan menjadi fork Node Js yang besar. Fork merupakan istilah untuk proses modifikasi kode pemrograman yang bersifat open source.

2015

  1. Node.js Foundation diresmikan.
  2. io.js kembali bersatu dengan Node Js.
  3. NPM memperkenalkan modul-modul yang lebih privat.
  4. Node Js versi 4 dirilis meski versi 1, 2, dan 3-nya tidak pernah dirilis. 

2016

  1. Muncul isu yang disebut leftpad incident, yakni banyaknya pengguna NPM yang mengalami disrupsi saat package yang menjadi tumpuan project tidak dapat di-publish.
  2. Yarn dirilis untuk kali pertama. Yarn adalah dependency manager untuk JavaScript yang dibuat oleh Facebook, Google, Exponent, dan Tilde.
  3. Node Js versi 6 dirilis. 

2017

  1. Perkembangan NPM fokus pada sisi keamanan.
  2. NPM diunduh sebanyak tiga juta setiap minggunya.
  3. Node Js versi 8 dirilis.
  4. V8 memperkenalkan Node JS dalam tes yang dilakukannya sehingga membuat Node Js menjadi target mesin JavaScript.

2018

Node Js versi 8 dirilis.

2019

  1. Node Js versi 12 dirilis.
  2. Node Js versi 13 dirilis.

2020

Node Js versi 14 dirilis.

Cara Kerja Node Js

Dua konsep utama dalam cara kerja Node Js adalah non-blocking dan single thread. Apa maksudnya?

cara kerja node js adalah

Sebagai ilustrasi, sebut saja Program A dan Program B sebagai contoh.

Program A merupakan program yang bekerja dengan konsep blocking. Dalam melakukan fungsinya, algoritma A terdiri dari beberapa proses. Adanya sifat blocking tersebut menjadikan algoritma Program A tidak akan lanjut ke tahap berikutnya jika masih ada satu saja proses yang belum terselesaikan.

Sementara itu, Program B merupakan program yang bekerja dengan konsep non-blocking. Asumsikan bahwa algoritma pada Program A dan Program B adalah sama. Oleh karena Program B memiliki sifat yang non-blocking, proses pengerjaan instruksi di Program B tetap dapat terjadi meski ada proses sebelumnya yang belum selesai. Dalam kata lain, Program B tidak memerlukan output dari proses sebelumnya untuk melakukan pekerjaannya.

Lantas, bagaimana dengan konsep single thread dan multi thread?

Seperti misal, Program B juga mengadopsi konsep single thread. Artinya Program B hanya mengalokasikan thread pada proses yang aktif. Sebaliknya, Program A yang mengadopsi konsep multi thread justru akan memberikan thread kepada seluruh proses, baik yang aktif maupun tidak. 

Berdasarkan ilustrasi di atas, dapat dilihat bahwa Program B yang memiliki sifat non-blocking dan single thread dapat bekerja lebih efisien tanpa harus menggunakan resource yang besar dibandingkan program A. Adapun yang dimaksud dengan thread adalah sekumpulan instruksi yang dieksekusi secara independen.

Arsitektur Node Js

Dua komponen utama dalam Node Js adalah V8 dan Libuv Library.

arsitektur node js adalah

Adapun design pattern yang digunakannya adalah object pool dan facade.

V8

V8 merupakan istilah yang tidak asing bagi para pengembang JavaScript independen maupun yang berkecimpung dalam software house. V8 adalah sebuah engine milik Google yang berfungsi sebagai compiler dan dibuat menggunakan bahasa pemrograman C++. Dengan demikian, input berupa kode JavaScript dapat dikompilasi menjadi kode dalam tingkat assembly.

Engine V8 terdiri atas tiga komponen yang masing-masingnya memiliki fungsi berbeda seperti berikut.

  • Compiler         : mengubah kode dalam bahasa JavaScript menjadi kode dalam bahasa pemrograman lainnya
  • Optimizer : menciptakan abstract syntax tree yang nantinya akan diubah menjadi static single assignment
  • Garbage collector : memindahkan objek lama ke penyimpanan lama sehingga kinerja Node Js tetap ringan

Libuv Library

Libuv merupakan library C++ multiplatform yang berfungsi untuk mengelola operasi asynchronous I/O di Node Js dan main event loop. Libuv juga memiliki thread pool reserve yang berfungsi untuk menangani thread tiap operasi I/O. Adapun penggunaan Libuv yang dulunya dikembangkan untuk Node, kini juga dapat digunakan untuk Luvit, Julia, pyuv, dan lain-lain.

Design Pattern

Seperti yang disebutkan sebelumnya, design pattern Node Js adalah object pool dan facade. Object pool merupakan design pattern yang berisi kumpulan objek yang dapat dimanfaatkan untuk task tertentu, sedangkan façade merupakan design pattern yang memberi tampilan antarmuka (interface) untuk body dalam kode.

Perbedaan Node Js dengan JavaScript 

Kehadiran Node Js dan JavaScript dalam software development maupun beberapa pengembangan produk digital kini tak lagi terpisahkan.  Keduanya sama-sama diperlukan untuk saling melengkapi sehingga pengerjaan project menjadi lebih praktis.

perbedaan javascript dan node js adalah

Node Js dan JavaScript sesungguhnya bukanlah hal yang dapat dibandingkan antara satu dan lainnya secara apple to apple. Pasalnya, sebagaimana yang telah dijelaskan sebelumnya, Node Js bukanlah bahasa pemrograman, melainkan runtime alias interpreter JavaScript. Dalam kata lain, Node Js adalah pendukung JavaScript agar dapat lebih optimal digunakan terutama untuk keperluan yang lebih dari sekadar pengerjaan frontend.

Sepintas Tentang JavaScript

Ada dua istilah dasar yang harus dipahami: programming dan scripting. Programming adalah aktivitas pengodean (coding) suatu instruksi untuk memerintah komputer sehingga dapat menjalankan fungsi tertentu sesuai dengan algoritma yang telah ditentukan. Sementara itu, scripting adalah ‘penyisipan’ beberapa kode untuk fitur tambahan pada sebuah program yang sudah ada.

Terkait dengan hal ini, JavaScript merupakan bahasa pemrograman yang dipergunakan untuk kebutuhan scripting. Kemunculan JavaScript kali pertama pada tahun 1995 pun dilatarbelakangi oleh adanya kebutuhan untuk membuat sebuah bahasa scripting pada browser yang mirip seperti Java (perlu diingat bahwa Java adalah bahasa pemrograman murni, bukan scripting). 

Node Js Melengkapi JavaScript

JavaScript pun pada awalnya digunakan untuk menuliskan fungsi yang disisipkan ke dalam HTML—baik yang diletakkan secara langsung maupun dibuat dalam berkas terpisah. Pemanfaatan ini akan menghasilkan tampilan web (frontend) yang lebih atraktif dan interaktif sehingga meningkatkan engagement dengan pengguna. 

Penggunaan JavaScript sebagai bahasa pemrograman scripting pun awalnya masih dianggap tidak terlalu penting. Pasalnya, kemampuan JavaScript sendiri masih terbilang cukup terbatas. Developer hanya dapat memanfaatkan browser language ini untuk kepentingan frontend, sedangkan backend memerlukan bahasa pemrograman dan pendukung lainnya.

Namun, sejak kehadiran Node Js, penilaian tersebut berubah. Node Js memungkinkan proses backend juga dapat dilakukan menggunakan JavaScript sehingga mempermudah developer untuk menjalankan tugasnya. Kini tanpa menggunakan program seperti Apache atau NginX, developer dapat menjalankan server web berbekal JavaScript dan Node Js.

Perbandingan Node Js dan PHP

Perbandingan lain yang kerap dilakukan adalah antara Node Js dan PHP. Sama seperti JavaScript, sebenarnya komparasi antara Node Js dan PHP tidak dapat dilakukan apalagi secara apple to apple. Pasalnya, PHP (Hypertext Preprocessor) merupakan bahasa pemrograman untuk scripting yang bekerja di sisi web server alias backend.

node js adalah

Sepintas Tentang PHP

PHP dibuat oleh Rasmus Lerdorf pada tahun 1995. Kala itu, PHP merupakan sekumpulan script yang dipakai untuk melakukan pengolahan data formulir dari web. Rasmus Lerdorf lantas merilis source code tersebut untuk umum (menjadi terbuka) sehingga banyak orang yang kemudian ikut mengembangkan PHP.

Versi 2.0 dirilis pada November 1997. Interpreter versi ini pun telah dibuat menggunakan bahasa C. Perilisan tersebut juga turut menyertakan beberapa modul ekstensi.  Adapun pada tahun yang sama, sebuah perusahaan perangkat lunak bernama Zend menulis ulang interpreter PHP dan berhasil membuatnya jadi lebih baik, cepat, dan bersih. Di tahun berikutnya, Zend kembali merilis sebuah interpreter baru untuk PHP sekaligus merilisnya secara resmi sebagai versi 3.0.

Perkembangan PHP pun terus terjadi. Versi selanjutnya, 4.0, yang dirilis pada 1999 pun banyak dipakai secara meluas. Alasannya tak lain adalah karena PHP versi 4.0 mampu membangun aplikasi web yang kompleks dengan tetap menghasilkan stabilitas dan kecepatan tinggi. Tak kalah, versi 5.0 yang dirilis pada 2004 juga cukup ‘meledak’ lantaran ikut diimplementasikannya pemrograman berbasis objek pada PHP—mengikuti tren bahasa pemrograman serupa.

Hingga kini, PHP masih menjadi salah satu bahasa pemrograman untuk ranah backend yang banyak digunakan. Adapun versi PHP paling baru dan stabil saat ini adalah versi 7.0.16 dan 7.1.2.

Node Js vs PHP

Faktanya hingga kini PHP masih mendominasi ranah backend. Beberapa keunggulannya antara lain adalah basis code yang kuat dan mencakup platform populer untuk membangun situs web, lebih mudah diatur menggunakan tools non-developer, banyaknya aplikasi PHP yang ditawarkan oleh platform basic hosting yang akan terpasang hanya dalam satu klik, dan solusi server side yang sangat bagus karena memang dirancang khusus untuk web.

Di sisi lain, beberapa developer dan konsultan IT juga menilai bahwa Node Js lebih baik dibandingkan PHP karena adanya karakter single thread pada Node Js. Maka dari itu, penilaian ini tidak dapat dijadikan acuan mutlak untuk memutuskan mana yang lebih baik. Developer haruslah memilih mana yang paling sesuai dengan kebutuhannya.

Kelebihan dan Kekurangan Node Js

Popularitas Node Js selama sekitar satu dekade terakhir bukannya tanpa alasan. Inovasi Ryan Dahl tersebut memberi alternatif praktis bagi para pengembang untuk melakukan tugasnya.

kelebihan node js

Kendati begitu, Node Js juga tidaklah sempurna. Ada beberapa kekurangannya yang juga menjadi pertimbangan tersendiri bagi beberapa developer untuk menggunakannya. Selengkapnya, berikut adalah kelebihan dan kekurangan Node Js.

Kelebihan Node Js

  1. Node Js memiliki karakter non-blocking alias tidak memerlukan output dari proses sebelumnya untuk dapat menjalankan proses lainnya. Hal ini akan berdampak pada tingginya tingkat efisiensi.
  2. Node Js juga memiliki karakter single thread alias hanya akan mengalokasikan thread pada proses yang sedang berlangsung. Hal ini akan membuat kinerja proses lebih ringan.
  3. Node Js bersifat open source yang berarti semua orang dapat melihat struktur kode dari program yang dibuat. Selain itu, siapa pun juga dapat memberi kontribusi untuk mengembangkan program tersebut.
  4. Proses eksekusi kode pada Node Js terbilang cepat berkat dukungan engine V8 yang digunakan.
  5. Khususnya developer baru cukup mempelajari JavaScript semaksimal mungkin untuk dapat melakukan pekerjaan frontend dan backend sekaligus.
  6. Penulisan kode di Node Js sangat mudah dan kerap dinilai oleh para pengembang seperti membaca bahasa manusia.
  7. Terdapat banyak framework client-side populer yang ditulis dalam JavaScript karena bahasa pemrograman tersebut merupakan bahasa utama browser modern. Dengan menggunakan Node js pada server-side, developer akan mendapat seluruh manfaat dari satu bahasa scripting di seluruh stack development. 
  8. Adanya library dan paket pihak ketiga yang terus berkembang dan dapat diakses secara mudah melalui NPM dan command lines tools.
  9. Mendapat dukungan secara native di banyak API dan layanan baru seperti AWS Lambda.
  10. Adanya full stack dari HTTP server hingga templating engine.
  11. Node Js memberi ruang bebas bagi developer untuk membangun aplikasi dengan cara sendiri karena benar-benar dibuat dari nol. 

Kekurangan Node Js

  1. API Node Js cenderung mengubah kompatibilitas dari satu update ke update lainnya sehingga diperlukan codebase berkala untuk menyesuaikan dengan versi paling anyar.
  2. Ada banyak cara yang dapat dilakukan untuk membangun server menggunakan paket Node Js dan NPM. Hal ini nyatanya juga cukup membuat developer baru mengalami kesulitan dalam memilih.
  3. Paket NPM dapat membuat overload pengkodean, tidak aman, dan sulit menemukan paket mana yang bagus karena terlalu banyaknya pilihan.
  4. Adanya beberapa kendala terkait performansi seperti menjaga dependensi tetap up to date, sedikitnya library yang dipelihara dan tidak buggy, dan sebagainya.
  5. Tidak cocok untuk server yang bergantung pada CPU consuming code berat.
  6. Node Js tidak memakai seluruh inti sistem sehingga developer perlu menulis logikanya sendiri untuk menggunakan prosesor multi-core.
  7. Waktu pengembangan yang dibutuhkan lebih banyak karena developer menulis semuanya dari nol.
  8. Belum cocok untuk pemrograman yang membutuhkan perhitungan berat karena akan berdampak pada penurunan kinerja meski cocok untuk diimplementasikan pada aplikasi yang kompleks.

Kesimpulan

Node Js adalah solusi cerdas pengembangan apps. Pasalnya, inovasi ini memungkinkan developer hanya perlu menguasai satu bahasa pemrograman saja untuk mengerjakan urusan frontend dan backend.  Pengembangan di kedua sisi pun dapat dikembangkan secara produktif tanpa harus memusingkan perbedaan sintaks di sisi client maupun server.

Node Js bukanlah sebuah bahasa pemrograman, melainkan runtime atau interpreter JavaScript. Karakternya yang single thread dan non-blocking menjadi faktor utama mengapa Node Js semakin banyak digunakan untuk pengembangan di sisi backend. Walau begitu, faktanya, Node Js masih belum terlalu mendominasi area backend (meski mengalami kenaikan jumlah penggunaan) dibandingkan beberapa bahasa pemrograman khusus backend yang sudah ada lebih dulu seperti PHP.

Namun, terlepas dari hal tersebut, Node Js sebagai pemain baru tentu menawarkan berbagai keunggulan. Beberapa kelebihan Node Js adalah kemudahannya dalam dipelajari, proses eksekusi yang cepat, library yang terus dikembangkan, dan lain-lain. Tentunya, ada pula beberapa kelemahan Node Js yang perlu dipertimbangkan pula. seperti lamanya waktu pengembangan yang diperlukan, ketidakstabilan API, tidak cocok untuk program yang heavy computing, dan beberapa lainnya.

Punya Project atau Ingin Bekerja Sama?

Hubungi kami dan ciptakan software impianmu sekarang!
Office Address Image

SYDNEY

Level 28, 161 Castlereagh St, Sydney 2000
+61 2 8123 0997

YOGYAKARTA

Jl Magelang No 65, Tegalrejo, Yogyakarta, Indonesia 55242
+62 858 6514 9577