Mengenal NodeJs Bagi Pemula

Mengenal NodeJs Bagi Pemula - Crewnesia

Crewnesia - Saat ini banyak sekali platform yang digunakan oleh developer untuk mengembangkan sebuah aplikasi berbasis website, salah satunya yaitu NodeJs. Sebelum kehadiran Node.Js biasanya para developer menggunakan JavaScript dalam membangun sebuah aplikasi berbasi website. 

Apa Itu Node Js

Node.Js merupakan platform yang didirikan oleh Ryan Dahl untuk mengembangkan sebuah aplikasi berbasis website, platform ini menggunakan JavaScript sebagai bahasa pemrogrammanya. Karena JavaScript merupakan sebuah bahasa pemrograman yang hanya bisa berjalan dari sisi klien. Dengan adanya platform ini kalian bisa melengkapi kekurangan dari JavaScript tersebut dengan menjalankannya dari sisi server sehingga perannya hampir sama seperti PHP, Ruby, Perl, dll.

Di samping lain platform ini memiliki pustaka server HTTP sendiri sehingg kalian bisa menjalankan server web tanpa perlu menggunakan program seperti Apache atau Nginx.

Agar bisa mendukung kemampuan tersebut, platform ini telah dibekali dengan engine javascript V8 yang dimiliki oleh Google.

Arsitektur Node.Js

Node.Js memiliki dua komponen utama, yaitu engine javascript v8 dan Libuv Library. Tidak hanya itu, paltform ini menggunakan dua design pattern, yaitu object pool dan facade. Berikut pejelasan mengenai kompone-komponen tersebut.

1. Engine V8

Engine V8 yang dimiliki oleh Google merupakan sebuah compiler JavaScript yang dibuat dengan menggunakan bahasa pemrograman C++. Dengan adanya komponen ini, input berupa kode javascript dapat di-compile menjadi sebuah kode kedalam tingkatan assembly. Engine V8 sendiri memiliki tiga komponen yaitu:

  • Compiler : Mengubah JavaScript menjadi bahasa pemtograman yang lain.
  • Optimizer : Menciptakan sebuah abstract syntax tree yang akan berubah menjadi sebuah static single assignment dan dioptimasi, singkatnya mengoptimalkan aplikasi baru.
  • Garbage Collecter : Engine V8 membagi penyimpanan yang ada menjadi dua bagian, yaitu penyimpanan lama dan baru. Kedua penyimpanan tersebut dapat menyimpan sebuah object javascript, selain itu penyimpanan baru dapat menaruhnya output dari compiler. Ketika peyimpanan baru sudah penuh maka ototmatis garbage collector akan memindahka objek-objek lama ke penyimpanan lama agar kinerja node.js tetap ringan.

2. Libuv Library 

Library C++ ini berfungsi untuk mengelola operasi asynchronus input / output di Node.Js dna main event-loop. Di dalamnnya terdapat thread pool reserve yang menangani threade pada seriap operasi input / outputnya.

3. Design Pattern 

Yang sudah saya kata bahwa Node.Js memiliki dua jenis design pattern, yaitu object pool dan facade. Berikut penjelasan mengenain Object Pool dan Facade:

  • Object Pool : design pattern yang berisi kumpulan object yang dapat kalian gunakan untuk task tertentu
  • Facade : design pattern ini mampu memberikan sebuah tampilan antarmuka untuk body kode, sehingga meringankan developernya

Kelebihan Node.Js

Setelah kalian memahami pengertian dari Node.Js. Sekarang saatnya kalian mengetahui apa saja kelebihan dari platform ini, sehingga sering digunakan oleh programmer backend.

1. Bekerja dengan konsep Non-Blocking

Node.Js bekerja dengan konsep non-blocking. Dengan kata lain, proses yang dimana kalian tidak membutuhkan output dari proses sebelumnya tetapi dapat berjalan secara bersamaan. Jika kalin masih belum paham, misalnya ada dua proses yang berjalan yaitu proses A dan B. Tetapi dalam proses A mengalami Blocking karena adanya suatu hal. Dengan itu, kalian masih tetap bisa menjalankan proses B jika proses tersebut tidak membutuhkan output dari proses A. Itulah yang dimaksud dengan konsep non-blocking.

2. Mengeksekusi Kode Dengan Cepat

Kelebihan selanjutnya yang dimiliki platform ini adalah kemampuannya dalam mengeksekusi atau menjalankan kode dengan cepat. Hal ini bisa terjadi dengan adanya Engine V8 yang dimiliki oleh Google.

3. Single-threaded

Node.Js memiliki karakteristik single-threaded. Dengan adanya karakteristik ini, program hanya mengalokasikan thread pada proses yang sedang berlangsung.

4. Tidak Melakukan Data Buffering

Website yang menggunakan Program dengan Node.Js di dalamnya tidak akan melakukan data buffering, yaitu pengalokasian sebagian porsi dari penyimpanan server untuk data yang sedang diproses. Dengan melakukan pengalokasian ini memberikan kalian ruang yang lebih besar untuk menyimpan sebuah data.

5. Bersifat Open Source

Node.Js ini bersifat open source, artinya semua orang bisa menggunakan atau melihat struktur dari program tersebut. Selain itu juga, kalian bisa ikut berkontribusi dalam mengembangkan program tersebut agar lebih baik lagi.

 Apa Kegunaan Node.Js

Banyak sekali kegunaan Node.Js dalam mengembangkan sebuah aplikasi berbasis web,diantaranya:

  • Aplikasi Single-Page
  • Aplikasi yang melakukan streaming sebuah data
  • Aplikasi yang menggunakan sebuah application program interface (API) JavaScript Object Notation (JSON).

Contoh sebuah website yang menggunakan NodeJs

Banyak sekali website atau aplikasi yang mengguankan Node.Js yang sesuai dengan beberapa aplikasi yang telah saya sebutkan diatas. Mungkin kalian telah tahu website tersebut namun kalian tidak mengetahui bahwa mereka menjalankan website tersebut menggunakan Node.Js.

  • Netfilx : merupakan situs streaming Film dan serial TV yang dijalankan menggunakan Node.Js disamping Pyrhin dan Java
  • LinkedIn - Backend API dari platform social network profesional ini yang dibangun dengan  menggunakan Node.Js
  • Medium - Backend dari platform blogging terkenal ini menggunakan Node.Js

Kesimpulan

  • Node.Js merupakan platform yang didirikan oleh Ryan Dahl dengan menggunakan bahasa pemrograman JavaScript dalam mengembangkan aplikasi berbasis website dari sisi server.
  • Ada beberapa kelebihan yang dimiliki oleh Node.Js antara lain: Menggunakan konsep Non-Blocking, mengeksekusi kode dengan cepat, Single-threaded, bersifat open source, dan tidak melakukan data buffering.
  • Ada tiga karakteristik yaitu Engine V8, Libuv Library, dan Design Pattern
  • Dalam karakteristik Engine V8 memiliki tiga komponen yaitu compiler, optimizer, dan Garbage Collecter
  • Node.Js memiliki dua jenis design pattern yaitu Object Pool dan Facade

Demikian pembahasan mengenai mengenal Node.Js Bagi Pemula, semoga artikel ini bisa bermanfaat untuk kalian yang ingin memulai belajar Node.Js