Belajar Nodejs Dasar — part 1

Fajar Setiawan Siagian
2 min readJun 7, 2022
Photo by Gabriel Heinzer on Unsplash

Nodejs merupakan teknologi yang dapat menjalan javascript diluar web browser. Nodejs dibuat menggunakan v8 engine buatannya google chrome. Web application adalah aplikasi yang berjalan di server dan ditampilkan di web browser client. Web Application biasa dibagi menjadi 3 bagian yaitu: Client, Server, Database.

Konsep Concurency dan Parallel. Concurency ialah mengerjakan beberapa pekerjaan satu persatu, sedangkan Paraller ialah mengerjakan beberapa pekerjaan sekaligus dalama satu waktu.

Synchronous vs Asynchronous

Synchronous adalah ketika kode program kita berjalan secara sequential, dan semua tahapan di tunggu sampai prosesnya selesai baru akan eksekusi ke tahapan selanjutnya. sedangkan Asynchronous artinya ketika kode program kita berjalan dan kita tidak perlu menungu eksekusi kode program tersebut selesai, kita dapat melanjutkan ketahapan kode selanjutnya.

Blocking dan Non-Blocking

Saat membuat kode program, secara default kode program akan berjalan secara blocking atau synchronous. Artinya kita harus menunggu kode selesai sebelum kode selanjutnya di eksekusi. Contoh, ketika kita membuat kode untuk membaca file, jika kode kita blocking maka kita harus menunggu program selesai membaca file, baru kita bisa melanjutkan kode program selanjutnya.

Non-Blocking berbeda dengan blocking, kode program non-blocking akan di eksekusi tanpa harus menunggu kode program itu selesai. Non-Blocking akan dijalankan secara Asynchronous. Ketika memanggil kode non-blocking, biasanya kita perlu mengirim callback untuk di panggil oleh kode non-blocking tersebut ketika kodenya telah selesai. Contoh-contoh non-blocking pada javascript Async, seperti AJAX, Fetch API, dll. di Nodejs hampir semua fiturnya mendukung non-blocking.

NodeJs Architecture

sumber www.brainvire.com

Event loop merupakan single thread proses yang digunakan untuk mengeksekusi kode non-blocking. karenga event loop hanya menggunakan singgle thread, maka kita harus berhati-hati ketika membuat blocking code, karena bisa memperlambat ekseskusi kode kita. Event loop sendiri sebenarnya tugasnya hanya menerima dan mengirim eksekusi kode ke c++ Threadpool(Worker Threadpool), oleh karena itu selalu usahakan menggunakan kode non-blocking agar proses blockingnya dikerjakan c++ threadpool. event-loop akan menerima response dari c++ threadpool yang dikirim via callback. Nodejs menggunakan c++ threadpool untuk workernya, yaitu threadpool untuk melakukan pekerjaan. Libuv adalah library yang digunakan nodejs, dimana secara default libuv menggunakan 4 thread di dalam threadpoolnya. Hal ini menjadikan kita dapat melakukan 4 pekerjaan blocking dalam satu waktu. Jika terlalu banyak pekerjaan blocking, kita dapat mengubah jumlah thread di libuv dengan pengaturan environment variable UV_THREADPOOL_SIZE. Dokumentasinya dapat dilihat melalui laman berikut http://docs.libuv.org/en/v1.x/threadpool.html

--

--

Fajar Setiawan Siagian

A Full Stack Web Developer. all my stories in Indonesia. Hope you find a solution in my stories