Skip to main content

Day 1 - Pengenalan NodeJS, Arsitektur NodeJS, Keunggulan NodeJS, dan Instalasi NodeJS

Pengertian NodeJS

NodeJS adalah runtime environment yang menggunakan bahasa JavaScript. Awalnya JavaScript hanya dapat digunakan dalam pemrograman website saja lebih tepatnya pada bagian Front-End untuk membuat website menjadi lebih interaktif. Namun, pada tahun 2006 seorang programmer bernama Ryan Dahl membuat NodeJS dengan menerapkan engine yang digunakan browser untuk mengeksekusi JavaScript di luar browser. Dengan demikian NodeJS memungkinkan JavaScript dapat digunakan untuk aplikasi desktop, Back-End, IoT, dan lain-lain. NodeJS hadir dengan sejumlah besar modul dan sebagian besar digunakan dalam pembuatan web.

NodeJS menyediakan beberapa keuntungan penting di antaranya single, threaded, cross-platform runtime environment dengan event-driven, non-blocking (asynchronous) I/O untuk membuat aplikasi JavaScript sisi server yang sangat scalable. Seperti yang telah disebutkan sebelumnya bahwa NodeJS memiliki keuntungan non-blocking hal ini berarti NodeJS dapat menjalankan potongan program selanjutnya tanpa menunggu potongan program sebelumnya yang belum selesai dieksekusi hal ini dimungkinkan karena setelah memanggil API, server akan meneruskan ke proses berikutnya, dan mekanisme notifikasi NodeJS membantu server menerima respons dari panggilan API sebelumnya. Selain itu NodeJS juga single threaded yang berarti NodeJS dapat dijalankan pada perangkat minim sumber daya namun dilain sisi hal ini juga dapat menjadi kekurangan yakni NodeJS tidak cocok untuk membangun aplikasi dengan komputasi berat yang membutuhkan multi-thread. Keunggulan lainnya yakni:

  • Open-source framework dengan MIT-licensed.
  • Framework ringan yang menggunakan  modul minimum. Modul yang digunakan dapat disesuaikan dengan kebutuhan aplikasi.
  • Cross-platform dapat berjalan di windows, Mac OS, dan Linux.
  • Menggunakan bahasa JavaScript untuk mengembangkan aplikasi sisi server.
  • Aplikasi NodeJS tidak pernah buffer semua jenis data dalam aplikasi. Aplikasi NodeJS hanya menampilkan data dalam beberapa potongan.
  • NodeJS merupakan quick programming execution library yang dibangun di atas Mesin JavaScript V8 di Google Chrome.

Di sisi lain NodeJS juga memiliki beberapa kekurangan dimulai dari kurangnya konsistensi karena API berubah secara teratur, yang meningkatkan masalah pengembang karena mereka harus membuat perubahan pada basis kode mereka saat ini untuk menjaga kompatibilitas. Lalu seperti yang sebelumnya telah disinggung bahwa NodeJS tidak mendukung multi-thread programming sehingga kurang cocok untuk membuat aplikasi yang membutuhkan komputasi berat. Karena NodeJS menggunakan JavaScript sebagai bahasa pemrogrammannya maka kekurangan JavaScript yakni tidak memiliki kerangka kerja perpustakaan yang lengkap dan fungsional juga dialami NodeJS, sehingga pengguna terpaksa membutuhkan perpustakaan umum untuk menjalankan berbagai tugas, termasuk proses gambar, parsing XML, Object Relational Mapping(ORM), dan penanganan operasi basis data, dll. Hal ini menyulitkan pengembang untuk mengimplementasikan tugas pemrograman dasar dengan NodeJS.

NodeJS VS JavaScript

JavaScript

NodeJS

JavaScript adalah bahasa pemrograman yang ringan, cross-platform, dan yang paling penting  digunakan untuk client-side scripting. JavaScript dibangun dalam Java dan HTML.

NodeJS adalah bahasa server-side scripting berdasarkan Google Chrome V8 engine. Akibatnya, NodeJS digunakan untuk membangun aplikasi yang berpusat pada jaringan. NodeJS adalah sistem terdistribusi yang digunakan untuk aplikasi real-time yang intensif data.

JavaScript adalah bahasa pemrograman sederhana yang dapat dijalankan di browser apapun yang mendukung JavaScript Engine.

NodeJS adalah running environment untuk bahasa pemrograman JavaScript. NodeJS membutuhkan perpustakaan yang dapat dengan mudah diakses dari pemrograman JavaScript untuk membuatnya lebih berguna.

JavaScript dapat berjalan di mesin apapun, termasuk Spider Monkey Firefox, JavaScript Core Safari, dan V8 (Google Chrome). Akibatnya, pemrograman JavaScript sangat mudah dibuat, dan running environment apapun yang berjalan setara dengan browser yang tepat.

NodeJS hanya mendukung V8 engine, yang eksklusif untuk Google Chrome. Namun, kode JavaScript tertulis dapat berjalan di environment apapun, terlepas dari apakah mendukung V8 engine atau tidak.

Tugas non-blocking tertentu diperlukan untuk mengakses sistem operasi apa pun. Ada beberapa objek dasar dalam JavaScript, tetapi semuanya untuk os-specific. Misalnya, Kontrol ActiveX adalah aplikasi khusus Windows.

NodeJS diberikan kemampuan untuk menjalankan tugas non-blocking yang unik untuk sistem operasi dari pemrograman JavaScript apa pun. Tidak ada konstanta os-specific di dalamnya. NodeJS berpengalaman dalam membuat ikatan yang jelas dengan sistem file, memungkinkan pengembang untuk membaca dan menulis ke disk.

Untuk satu aplikasi web, JavaScript biasanya digunakan untuk operasi client-side. Operasi yang memungkin berurusan dengan validasi bisnis, tampilan halaman dinamis pada interval waktu yang ditentukan, atau panggilan Ajax sederhana. Untuk aplikasi web apapun, Javascript digunakan untuk jumlah waktu maksimum.

NodeJS umumnya digunakan untuk aksesibilitas non-blocking atau eksekusi sistem operasi apa pun. Pada sistem operasi, operasi non-blocking melibatkan pembuatan atau eksekusi shell script, mengambil informasi unik terkait perangkat keras dalam satu panggilan, mendapatkan detail sertifikat yang diinstal dalam sistem, atau melakukan sejumlah besar tugas tertentu.

Keuntungan utama JavaScript termasuk berbagai antarmuka dan interaktif  dan jumlah yang tepat dari kontak server dan masukan langsung ke pengunjung.

NodeJS memiliki manajer paket node dengan lebih dari 500 modul dan kemampuan untuk menangani permintaan bersamaan. Ini juga memiliki kemampuan khusus untuk mendukung arsitektur layanan mikro serta IoT.


Arsitektur NodeJS

NodeJS dalam mengeksekusi kode yang diberikan didukung oleh dua komponen utama. Komponen NodeJS yang membantu dalam menjalankan kode JavaScript adalah V8 Engine yang dimiliki Google dan digunakan dalam browser Google Chrome. Namun, V8 Engine tidak dapat menangani semua tugas sendirian, karena pada dasarnya JavaScript didesain untuk berjalan pada lingkungan browser saja, untuk mengatasi hal tersebut digunakanlah Libuv Library yang bertugas untuk menangani penggunaan sumber daya sistem seperti jaringan, file, dan lain-lain. Di samping dua komponen utama yang sebelumnya disebutkan, NodeJS menggunakan dua design pattern, yakni object pool dan facade. Berikut adalah penjelasan lebih lanjut atas masing-masing komponen dan design pattern.

A. V8 Engine

V8 Engine atau juga bisa disebut Chrome V8 adalah JavaScript engine yang bersifat open source. V8 Engine dikembangkan oleh The Chromium Project dan V8 Engine digunakan oleh Google Chrome dan Chromium sebagai engine yang menjalankan JavaScript di browser tersebut. Sebagai catatan, masing-masing browser yang ada rata-rata memiliki engine JavaScript-nya masing-masing, sebagai contoh Firefox yang menggunakan engine SpiderMonkey, Safari yang menggunakan JavaScriptCore yang juga dikenal dengan nama Nitro, dan Edge dengan Chakra. V8 selaku  engine JavaScript pada umumnya mampu mem-parsing dan mengeksekusi kode JavaScript. Hal yang menjadi kunci kelahiran NodeJS yang menggunakan JavaScript adalah bahwa engine JavaScript tidak bergantung pada browser tempatnya berada. Sehingga V8 Engine dipilih NodeJS pada tahun 2009, dan ketika NodeJS naik daun V8 Engine menjadi mesin yang menjalankan sejumlah besar kode JavaScript dari sisi server. Hal ini terus berkembang hingga NodeJS dengan dukungan V8 engine dapat membuat aplikasi yang lebih bervariatif seperti aplikasi desktop dengan framework Electron.

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:

  • Compiler — walaupun pada awalnya JavaScript merupakan interpreted language sehingga kode yang dituliskan tidak perlu ditransformasikan, namun sejak 2009 saat compiler SpiderMonkey JavaScript ditambahkan ke Firefox 3.5 banyak yang mengikutinya sehingga JavaScript akan di-compile terlebih dahulu menjadi bahasa pemrograman lain. Hal ini juga diterapkan oleh V8 Engine dengan kompilasi Just-in-Time (JIT) untuk mempercepat eksekusi.
  • Optimizer — menciptakan sebuah abstract syntax tree yang akan diubah menjadi static single assignment dan dioptimasi.
  • 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 NodeJS tetap ringan

B. LibUV Library

Sebelumnya kita telah membahas mengenai V8 Engine yang membantu NodeJS dalam mengeksekusi JavaScript. Namun, JavaScript memiliki batasan-batasan yang tidak dapat dihindari, untuk menangani batasan-batasan yang tidak dapat ditangani JavaScript, NodeJS menggunakan LibUV untuk mengatasinya. LibUV atau Librarian Unicorn Velociraptor yang dituliskan dalam C++ ini bertugas mengelola operasi asynchronous I/O (input/output) di NodeJS dan main event loop. Didalamnya juga terdapat thread pool reserve yang menangani thread setiap operasi I/O yang tidak dapat dilakukan secara asinkron di tingkat sistem operasi.

Design Pattern

Design Pattern sadar tidak sadar sebenarnya selalu ada dalam keseharian programmer. Namun, sebenarnya apa itu Design Pattern? Simpelnya Design Pattern adalah cara para programmer untuk menuliskan kodenya untuk mendapatkan keuntungan-keuntungan tertentu. Keuntungan-keuntungan yang dimaksudkan dapat berupa pengembangan yang lebih cepat, penggunaan ulang kode, dan sebagainya. Hampir semua pattern dapat dengan mudah digunakan dalam OOP (Object Oriented Programming), walaupun konsep pattern tersebut juga dapat diterapkan kepada proyek non-OOP.

Ada dua jenis design pattern yang digunakan oleh Node.js, yaitu object pool dan facade. Berikut penjelasannya:

  • Object pool — Object Pool Pattern adalah pola pembuatan perangkat lunak yang cocok digunakan dalam situasi di mana biaya inisialisasi instance class sangat tinggi. Cara kerja object pool pattern adalah bertindak sebagai container terhadap object, sehingga saat object diambil dari object pool maka object tersebut tidak akan tersedia di object pool hingga object tersebut dikembalikan kembali ke object pool. Prosedur dari design pattern ini terbagi terhadap tiga tahapan dimulai dari Creation, Validation, hingga Destroy. Di bawah ini merupakan diagram UML dari Object Pool Design Pattern. Dimulai dari Client yang merupakan class yang menggunakan object yang disimpan pada pool, lalu ada ReuseablePool yang merupakan class dengan tipe yang lambat untuk dipakai ataupun ketersediaannya terbatas, sehingga akan dikumpulkan pada object pool. Lalu ObjectPool merupakan class yang paling penting dalam Object Pool Design Pattern, ObjectPool menjaga ketersediaan object dan merupakan koleksi dari object yang telah di-request dari pool.

  • Facade — Facade Design Pattern adalah Structural Design Pattern yang menyederhanakan sistem, library, atau framework yang complex ke dalam sebuah interface yang simple digunakan. Facade Design Pattern cocok digunakan untuk tujuan pengurangan kompleksitas subsystem menjadi lebih straightforward, Facade Design Pattern cocok karena memang wajar subsystem menjadi lebih kompleks seiring waktu, oleh karena itu kita menyederhanakannya dengan menggunakan interface. Namun, seiring dengan bertambahnya kompleksitas object, Facade dapat menjadi God Object yang berarti kompleksitas yang ditangani sudah terlalu banyak dan rumit sehingga diperlukan tindakan berupa pembuatan Facade baru yang lebih sederhana dan memiliki kohesi yang tinggi dari Facade sebelumnya.

Kelebihan dan Kekurangan NodeJS

Dampak dari aplikasi yang lamban dan tidak responsif dapat membuat bisnis hancur berkeping-keping. NodeJs, bagaimanapun, telah menjadi ksatria berbaju zirah, menyelamatkan aplikasi web dan seluler yang kuat dan fleksibel.

Faktanya, Survei Pengguna NodeJs 2020 melaporkan bahwa lebih dari 51% responden menggunakan runtime Javascript untuk aplikasi web mereka. Terlebih lagi, itu juga menunjukkan bahwa konsistensi penggunaan rata-rata NodeJs diperpanjang hingga lebih dari dua tahun, memberikan keunggulan dibandingkan rekan-rekannya.


Kelebihan NodeJS


Berikut beberapa keuntungan NodeJs :

- Non-blocking

NodeJs bekerja dengan konsep non-blocking. Dengan kata lain, proses yang tidak membutuhkan output dari proses sebelumnya tetap dapat berjalan bersamaan. Oleh karena itu, penggunaan NodeJs pada sebuah program meningkatkan efisiensinya

- Dapat Mengeksekusi Kode dengan Cepat

NodeJs dibuat menggunakan engine V8 besutan Google yang dapat menjalankan kode dengan cepat

- Single-threaded

Dalam konsep ini, sebuah program hanya mengalokasikan thread pada proses yang sedang berlangsung. Hasilnya adalah kinerja program yang lebih ringan.

- Tidak Melakukan Data Buffering 

Program dengan NodeJs di dalamnya tidak melakukan data buffering, yaitu pengalokasian sebagian porsi penyimpanan server untuk data yang sedang diproses. Absennya proses ini memberikan Anda ruang yang lebih besar untuk penyimpanan data.

- High-performance for Real-time Applications

Salah satu keunggulan NodeJs adalah Anda dapat membangun aplikasi supercharged yang menampilkan hasil dalam sekejap mata.

Aplikasi web yang diberdayakan oleh NodeJs mendapat manfaat besar dari kemampuannya untuk melakukan banyak tugas. Tidak seperti platform lain, arsitektur single-threaded, event-driven, memproses beberapa permintaan bersamaan secara efisien tanpa menyumbat RAM. Selain itu, operasi I/O event-loop dan non-blocking memungkinkan eksekusi kode dengan kecepatan yang secara signifikan berdampak pada kinerja aplikasi secara keseluruhan.

Apa yang mendorong NodeJs dengan kekuatan super ini adalah bahwa NodeJs dibangun di atas mesin V8 Google Chrome dan ditulis dalam C++. Ini memecah fungsi Javascript menjadi kode mesin dengan efisiensi dan kecepatan tinggi. Mengapa ini penting karena Google berinvestasi besar-besaran pada mesinnya untuk meningkatkan kinerja, keamanan, dan memberikan dukungan yang sangat baik untuk fitur JavaScript modern. Ini secara langsung berdampak pada kinerja V8 dan akhirnya, NodeJs.

Untuk memastikan kemajuan yang berkelanjutan, Google telah memperkenalkan rangkaian benchmark V8 untuk meningkatkan kinerja NodeJs dengan eksekusi yang lebih cepat, kompiler yang lebih baik, patchwork keamanan, dan kemampuan untuk menskalakan

- Easy Scalability for Modern Applications

Dengan basis konsumen yang tumbuh secara konsisten dari puluhan juta pengguna, raksasa seperti Netflix, Walmart, Uber, Paypal, antara lain, telah menganggap NodeJs sebagai solusi yang layak untuk skalabilitas.

Teknologi mutakhir hadir dengan banyak fitur seperti modul cluster. Ini memfasilitasi penyeimbangan beban pada beberapa inti CPU, membuatnya mudah untuk memberikan hasil yang diinginkan melalui modul yang lebih kecil tanpa menghabiskan proses RAM. Selain itu, NodeJs menggunakan mekanisme event-loop non-blocking yang menawarkan skalabilitas tinggi dan memungkinkan server untuk memproses permintaan dengan mulus.

Dari sudut pandang pengembangan, NodeJs memungkinkan Anda memanfaatkan Layanan Mikro yang selanjutnya memungkinkan Anda memisahkan aplikasi menjadi bagian-bagian yang lebih kecil. Dengan cara ini, Anda dapat menentukan tugas dan mengalokasikannya secara efisien di antara tim yang berbeda untuk mempercepat pengembangan, penerapan, dan pemeliharaan setiap divisi aplikasi Anda. NodeJs dan Microservic memungkinkan aplikasi modern untuk ditingkatkan dan diturunkan sesuai kebutuhan dan membantu perusahaan mencapai kinerja tinggi dengan sumber daya yang lebih sedikit.

- Cost-effective with Fullstack JS

Karena NodeJs memberi pengembang kesempatan untuk menulis kode sisi server dalam Javascript, kita dapat menulis kode di frontend dan backend dengan sangat mudah. Ini adalah salah satu keuntungan NodeJs terbesar karena melintasi hambatan dalam mempekerjakan dua tim sumber daya selain menghemat banyak waktu, biaya, dan energi untuk pengembangan proyek secara keseluruhan.

- Community Support to Simplify Development

Dengan jutaan pengembang yang berkontribusi secara aktif ke komunitas NodeJs, Anda dapat mengharapkan dukungan ekstensif dari para pakar pengembangan di seluruh dunia untuk memecahkan bahkan masalah pengembangan yang paling aneh sekalipun.

NPM, manajer paket untuk JavaScript, adalah registry manajer package terbesar di dunia. Package menawarkan banyak tool dan library yang tersedia untuk digunakan dalam proyek. Anda juga akan menemukan kumpulan besar sumber daya – solusi siap pakai, kode, modul, pustaka, dan registri – di GitHub yang dibuat oleh pengembang untuk membantu Anda mencapai lebih banyak dengan sumber daya terbatas.

Teknologi yang terus berkembang ini sangat didukung oleh IBM, yang telah menyatakan rencananya untuk mensponsori dan berbicara di acara-acara utama Node untuk mendorong dan mendewasakan proyek tersebut. Selain itu, mereka juga ingin mendorong tata kelola terbuka dalam penggabungan NodeJs dan JS Foundations, yang menurut mereka akan menghasilkan ekosistem JavaScript yang lebih kuat dan lebih hidup.

Komunitas yang dinamis ini didukung oleh banyak raksasa teknologi terkemuka seperti Amazon, Google, Facebook, dan Netflix, berkontribusi pada keunggulan NodeJs secara besar-besaran. Mereka telah memberikan kontribusi penting dalam bentuk banyak solusi open source. Penerimaan oleh raksasa teknologi, bersama komunitas pengembang, memastikan kehadiran dan pertumbuhan teknologi di masa mendatang.

- Easy to Learn and Quick to Adapt

Tidak dapat disangkal bahwa javascript adalah salah satu bahasa pemrograman yang paling populer dan banyak digunakan di komunitas pengembang. Jauh lebih mudah untuk beradaptasi dan mempelajari NodeJs untuk pengembangan aplikasi web dan kasus penggunaan NodeJs populer lainnya. Dibutuhkan lebih sedikit waktu untuk menulis kode.

Menurut Survei Pengguna NodeJs 2016, Javascript adalah salah satu bahasa pemrograman yang paling disukai untuk pengembangan front-end. Ini hampir seperti bahasa pemrograman universal. Dibutuhkan lebih sedikit waktu dan usaha untuk belajar dan bekerja dengan NodeJs, meskipun itu hanya seorang pemula atau pengembang junior.

Sesuai survei StackOverflow baru-baru ini, 49,9% pengembang profesional yang luar biasa, yang berpartisipasi dalam pemungutan suara, memilih NodeJs sebagai teknologi yang paling umum digunakan. Yang juga menjawab pertanyaan mengapa NodeJs begitu populer.

- Helps in building Cross-functional Teams

NodeJs menawarkan kemampuan pengembangan tumpukan penuh, ini membantu Anda dalam membangun tim yang berfokus pada peningkatan siklus hidup pengembangan di mana Anda dapat mengatasi tantangan secara instan. Lingkungan kerja ini menambah nilai produktivitas yang lebih sehat dan memungkinkan Anda menyelesaikan masalah dan memecahkannya dengan tepat. Akibatnya, Anda cenderung mempersingkat waktu ke pasar.


- App Response Time and Boosts Performance

NodeJs, dengan model loop peristiwa utas tunggal, menawarkan arsitektur asynchronous, non-blocking tanpa membuat lebih banyak utas dengan menggunakan lebih sedikit sumber daya. Ini membantu meningkatkan respons aplikasi Anda karena dapat menangani banyak pengguna secara bersamaan.

- Reduces Time-to-Market of your Applications

Waktu sangat berharga bagi tim pengembangan mana pun, terutama ketika waktu-ke-pasar adalah salah satu tolak ukur penting kualitas dan kinerja bagi banyak orang. Karena NodeJs ringan, memungkinkan pengembang untuk mempercepat kecepatan pengembangan secara keseluruhan. Terlebih lagi, tim Anda dapat menggunakan banyak perpustakaan, kode siap pakai, dan sumber daya lainnya dari GitHub, yang, pada gilirannya, menghemat banyak waktu dan upaya pengkodean.

NodeJs juga menawarkan sisi klien dan sisi server dalam Javascript, membuatnya lebih mudah dan lebih cepat untuk mengelola file kode dan data daripada teknologi serupa lainnya. Selain itu, penerapannya membantu Anda menerima umpan balik dari lingkungan produksi hingga eksekusi, yang juga berkontribusi untuk mempersingkat waktu pemasaran aplikasi Anda.

- Extensibility to Meet Customized Requirements

Bisnis tidak pernah berhenti berkembang. Jadi, baik Anda mengalami lonjakan basis pengguna atau berencana menjelajahi dimensi industri lainnya, NodeJs dapat dengan mudah diperluas dan disesuaikan untuk perusahaan yang berkembang pesat. NodeJs dapat diperluas dengan memanfaatkan API bawaan untuk mengembangkan server HTTP dan DNS dan JSON, format data, yang membuat pertukaran data antara klien dan server web menjadi sangat mudah.

- Reduces Loading Time by Quick Caching

NodeJs telah memudahkan pengembang untuk mengurangi beban kerja tugas dan mengeksekusi ulang kode dengan modul caching-nya. Jadi setiap kali modul pertama aplikasi web Anda mendapat permintaan, modul itu akan di-cache di memori dalam aplikasi. Dengan cara ini, dalam sepersekian mikrodetik, pengguna Anda dapat mengakses halaman web dengan cepat tanpa harus menunggu terlalu lama.

- Helps in Building Cross-Platform Applications

Dengan NodeJs, Anda dapat memanfaatkan platform seperti Electron dan NW.js untuk membangun aplikasi web waktu nyata lintas platform. Ini berarti Anda tidak perlu lagi menginvestasikan waktu untuk menulis kode terpisah untuk berbagai versi desktop – Windows, Linux, dan macOS.

Kedepannya, tim pengembangan Anda dapat membangun aplikasi desktop asli tanpa pengetahuan tingkat ahli dalam Objective-C, C#, atau bahasa lainnya. Selain itu, pengembang NodeJs Anda dapat mengakses lebih banyak alat dari Alat Pengembang Google Chrome untuk membuat, mendebug, dan menulis kode tanpa batasan apa pun.

Pendekatan yang sangat efektif ini memainkan peran penting dalam pengembangan web di sekitar kerangka kerja Javascript seperti AngularJS, Vue.js, dan React untuk frontend dan NodeJs untuk backend. Ini telah memberi pengembang tumpukan penuh kesempatan untuk mendapatkan keuntungan dari keuntungan dan kemungkinan NodeJs yang ditawarkannya.

Kekurangan NodeJS


Berikut kekurangan menggunakan NodeJs:

- Reduces performance when handling Heavy Computing Tasks

Terlepas dari kelebihannya sebagai single-threaded dan event-driven, NodeJs gagal mengeksekusi komputasi berbasis CPU yang berat karena alasan yang sama persis.

Ketika NodeJs menerima tugas berbasis CPU yang cukup besar dalam loop peristiwanya, ia menggunakan semua kekuatan CPU yang tersedia untuk menyelesaikan tugas tersebut. Ini mengarah pada perlambatan loop acara keseluruhan, yang semakin menghambat antarmuka aplikasi Anda.

Untuk mengatasi ini, pada tahun 2018, NodeJs memperkenalkan modul "utas pekerja" yang memungkinkan pengembang untuk mengeksekusi beberapa utas secara bersamaan. Namun, solusi ini tidak sepenuhnya membekali Anda untuk menghadapi tantangan komputasi yang terikat CPU. 

- Heavy code changes due to Unstable API

Salah satu kelemahan paling signifikan yang dilaporkan oleh pengguna NodeJs adalah perubahan API yang sering terjadi, yang umumnya tidak kompatibel ke belakang, yang mendorong mereka ke atas. Sayangnya, ini memaksa mereka untuk terus mengubah kode akses agar sesuai dengan versi terbaru dari NodeJs API.

- NodeJs Asynchronous Programming Model makes it difficult to maintain code

Teknologi secara keseluruhan menjawab banyak panggilan balik karena sifat intinya dari pendekatan asynchronous. Fungsi ini beroperasi tepat setelah setiap tugas dalam antrian penyimpanan beberapa tugas antrian di latar belakang masih berjalan. Panggilan balik dapat mengakibatkan juga dikenal sebagai callback hell. Ini secara langsung berdampak pada kinerja dan kualitas kode itu sendiri. Keterbatasan ini praktis membuatnya membosankan untuk memahami dan memelihara kode.

- Lack of Library Support can Endanger your Code

Ada beberapa registry dan perpustakaan NPM yang kualitasnya buruk atau tidak lengkap dan tidak didokumentasikan dengan baik. Oleh karena itu pemantauan yang tidak memadai ini sulit dilakukan jika beberapa amatir mengembangkan aplikasi web di NodeJs.

Hanya ahli yang memenuhi syarat dan ahli dengan ahli terkemuka dengan pengalaman proyek yang dapat mendorong kesuksesan proyek Anda. Fakta bahwa itu adalah open-source dengan kumpulan perpustakaan dan modul seperti itu mungkin membuat kurangnya standar pengkodean yang tinggi. Sangat penting untuk memilih mitra teknologi yang tepat untuk membangun aplikasi web Anda untuk hasil yang luar biasa.

- High demand with a few Experienced NodeJs Developers

Berdasarkan survei yang dilakukan terhadap lebih dari 10.000 pengembang mahasiswa, hackerrank telah mengidentifikasi tren bakat mahasiswa terbesar yang membentuk perekrutan universitas setiap tahun. Siswa mendengarkan kumpulan bakat setiap tahun dan mendaftar dalam tuntutan tren industri untuk tetap menjadi yang terdepan di pasar yang kompetitif ini. Raksasa teknologi juga terkenal kompetitif untuk mendapatkan talenta yang tepat—perusahaan terkemuka seperti Amazon, Facebook, dan LinkedIn setiap tahun di pameran karir. Sayangnya, permintaan tumbuh secara eksponensial lebih cepat dari yang diharapkan, dan tidak banyak pengembang NodeJs berpengalaman yang sesuai dengan kebutuhan pasar.


Menurut Sebuah studi baru-baru ini, peningkatan terbesar dalam permintaan untuk NodeJs saja adalah 2493%. Ada kepercayaan salah yang tersebar luas bahwa pengembang javascript secara teknis adalah pengembang NodeJs juga. Seseorang harus berpengalaman dengan back-end javascript untuk dapat mempelajari NodeJs. Meskipun ada peningkatan permintaan yang konstan, menemukan pengembang NodeJs yang berpengalaman cukup menantang.

Instalasi NodeJS

Untuk instalasi di Windows, kita hanya perlu mengunduh installer resmi untuk Windows yang disediakan oleh NodeJS di tautan berikut


https://nodejs.org/en/download/


Tampilan situs NodeJS akan terlihat seperti gambar di bawah ini dan pilih Windows installer

Setelah installer selesai diunduh, lakukan instalasi seperti biasa. Proses instalasi akan terlihat seperti gambar di bawah ini


Centang “I accept the terms in the License Agreement” dan pilih next


Pilih folder tempat instalasi NodeJS, disarankan untuk tidak diubah


Pada bagian ini tidak ada yang perlu diubah, lanjutkan dengan klik tombol “Next”


Pada bagian ini tidak ada yang perlu diubah, lanjutkan dengan klik tombol “Next”

 

Lanjutkan dengan menekan Install


Pada tahap ini, proses instalasi telah selesai

Untuk memeriksa apakah instalasi kita sudah dapat digunakan, buka terminal atau command promt dan ketikan perintah “node -v” untuk memeriksa versi NodeJS yang terinstal dan “npm -v” untuk memeriksa versi package manager yang terinstal


Referensi

  1. JavaScript vs. Node.js - javatpoint
  2. Tutorial Node.js: Apa itu Node.js dan dasar-dasar Node.js - Dicoding Blog
  3. Belajar Nodejs #01: Pengenalan Dasar Nodejs (untuk Pemula)
  4. Node.js Adalah: Cara Kerja, Frameworks dan Tools Beserta Kelebihannya
  5. Pengenalan Node.js Lengkap bagi Pemula
  6. Object Pool Design Pattern - GeeksforGeeks
  7. Contoh Facade Design Pattern | Ferry Suhandri
  8. https://www.niagahoster.co.id/blog/node-js-adalah/#Arsitektur_Nodejs
  9. https://www.simform.com/blog/nodejs-advantages-disadvantages/



Last modified: Thursday, 16 February 2023, 6:40 PM