Skip to content

Instantly share code, notes, and snippets.

@ahmadrosid
Last active May 24, 2023 08:23
Show Gist options
  • Save ahmadrosid/3319a506119a64aa875cb088569e52a3 to your computer and use it in GitHub Desktop.
Save ahmadrosid/3319a506119a64aa875cb088569e52a3 to your computer and use it in GitHub Desktop.

NodeJS Fork vs Cluster

Halo temen-temen sematan di channel program-ajamanau.

Di video kali ini saya mau bahas tentang Node.js fork versus cluster.

Jadi video ini saya buat dari pertanyaan dari JD News.

Jadi disana bertanya tentang perbedaan fork dan juga cluster di Node.js dan fungsinya untuk apa.

Pertanyaannya sama panggap-pang, saya kebiyungan dengan mode fork dan juga cluster di Node.js.

Soalnya masih jarang yang bahas dalam bahas serun Indonesia.

Dan studikasien seperti apa, jika lo ingin memakai mode fork dan juga cluster.

Linknya saya masukkan disana ya, kalau teman-teman pengen lihat detail pertanyaannya. Oke, jadi sebenarnya isela fork dan cluster ini,

ini populer di poplarkan oleh salah satu proses manager di Node.js namanya adalah PM2.

Nah ini disini dijelaskan tentang 2 teknik deployment.

Itu menggunakan fork dan juga cluster.

Jadi disana di PM2 itu ada 2 mode untuk menjakan aplikasi Node.js.

Nah yang pertama itu adalah fork dan yang kedua itu adalah cluster.

Nah kita jelaskan dulu apa fork dan juga cluster ini.

Memang isela ini, kalau teman-teman hanya menggunakan Node.js mungkin teman-teman hanya tahuh tentang cluster aja. Tapi sebenarnya, fork sebenarnya itu adalah isela dari PM2,

tapi sebenarnya dia juga bisa diimpemasikan di Node.js.

Oke, jadi untuk fork, fork ini adalah untuk membuat proses terpisah dari kode program yang sama. Simpelnya adalah kalau teman-teman bikin kode program Node.js, teman-teman running,

menggunakan printa Node.js namafalnya itu dianggap satu proses yang sama. Ketika teman-teman sorry satu proses, ketika teman-teman jalankan lagi menggunakan printa misalnya Node.js namafalnya,

maka dia akan menjadi proses yang terpisah, jadi 2 proses yang terpisah.

Nah jadi fork itu seperti itu.

Jadi dia membuat proses yang terpisah dari kode program yang sama.

Jadi intinya adalah prosesnya di dalam bok itu saling berdiri sendiri.

Jadi tidak saling berhubungan. Jadi mirip teman-teman misalnya buka aplikasi dalam aplikasinya langsung 2,

gitu ya, pada hal aplikasinya yang sama.

Itu 2-2nya adalah proses yang berbeda. Jadi kalau kita lihatkan dalam diagramnya kurang lebih akan seperti ini, jadi kalau kita punya sebuah server misalnya antara itu virtual machine atau yang lainnya, atau di laptop kita, Nah saat kita jalankan aplikasi kita dalam model fork,

contohnya misalnya 4, gitu ya, 4 proses.

Maka dia akan menjadi 4 proses yang independent.

Jadi 4-4nya berdiri sendiri, berjalan sendiri.

Nah ini adalah model fork.

Nah selanjutnya ada model yang namanya cluster. Nah cluster sendiri itu adalah untuk membuat beberapa worker, kiri hasilannya atau misalnya hasilannya itu yang bekerja-nya,

gitu ya dalam 1 proses yang sama. Jadi bedanya adalah kalau di dalam fork itu prosesnya berbeda-beda,

kalau di dalam cluster itu prosesnya sama.

Itu ya.

Nah, jadi nanti kalau kita lihat diagramnya kurang lebih akan seperti ini. Jadi ini server kita atau laptop kita, kita akan jalankan 1 proses Node.js,

nah di dalamnya dia akan menjalankan beberapa worker.

Itu ya. Kau teman-teman sudah mengikuti kelas Node.js aja,

disana saya sudah jalankan cara membuat cluster. Jadi intinya prosesnya cuma 1, kita juga menjalankan 1 kali, tapi di dalamnya, gitu ya proses tersebut,

dia akan membuat worker worker.

Worker worker itu juanya apa ya untuk melakukan pekerjaan, gitu ya. Nah, jadi bedanya yang melakukan pekerjaan di sini adalah si worker workernya,

kalau di dalam fork itu bati tiap proses yang melakukan pekerjaannya. Nah tujuannya untuk apa sih? Tujuannya itu adalah kita tahu kalau nanti jis itu adalah single-trep, jadi ketika kita rannin Node.js, dia rannin dalam mode single-trep,

gitu ya. Kita tidak bisa menjalankan Node.js dalam multi-trep, kenapa karena memang dari arsi tektura warnya,

single-jas itu memang sudah single-trep. Nah ternyata kalau senanya single-trep,

maka dia hanya menyutilisasi CPU-nya cuma 1 kor saja, gitu ya. Jadi tidak optimal kalau teman-teman punya CPU-nya,

cintanya di laptop-nya ada banyak kornya. Nah oleh karena itu, ketika kita menjalankan aplikasi Node.js,

kita rata-rata kita akan menggunakan mode fork atau mode cluster. Nah jadi dengan menggunakan fork dan juga cluster,

itu bisa digunakan sebagai solusi mengoptimakan multi-core di server atau di laptop kita misalnya. Jadi misalnya di banyang kita jalankan satu aplikasi Node.js dalam satu proses,

kita misalnya sudah punya 10 kor.

Kita bisa jalankan dalam 10 proses kalau kita menggunakan mode fork.

Atau ya ada 10 aplikasi Node.js yang berjalan.

Jadi nanti 1 aplikasi Node.js bisa menggunakan 1 CPU kor.

Atau kalau teman-teman menggunakan mode cluster, gitu ya.

Makanya kita bisa menjalankan 10 warkar. Itu, otomatis nanti semua CPU-nya ya,

10 CPU kita akan terutilisasi dengan baik. Nah oleh karena itu,

seperti ini lah kegunahan, fork dan juga cluster. Jadi teman-teman sudah ngerti ya,

jadi bedanya cuma prosesnya saja. Kalau di fork itu,

tiap proses independent, gitu ya. Tapi kalau dalam cluster,

itu warkernya berjalan di satu proses yang sama. Oke, pertanyaannya pilih yang mana nih? Kapan kita menggunakan fork,

kapan kita menggunakan cluster. Sebenarnya dua-duanya,

kalau teman-teman gunakan, itu dua-duanya memang sudah bagus ya.

Jadi bisa mengutilisasi jumlah CPU dengan baik, gitu ya. Nah,

tapi kapan kita pakai fork, kapan kita pakai cluster.

Oke. Fork itu cocok kalau tempatannya misalnya, ketika membuat aplikasi banyak sekali menggunakan teknologi di luar misalnya, Nogis, contohnya teman-teman di depannya, ada menggunakan engine ex misalnya,

sebagai load balancer-nya. Karena dia prosesnya independent, gitu ya, tiap proses Nogis-nya di sini ada satu proses, satu proses-situ proses-situ proses,

adanya nanti dia bisa randang di beberapa port. Karena dia randang di beberapa port, atau mungkin di sini ada nanti yang PHP,

misalnya itu di sini ada yang java dan lain-lain. Nah, contohnya misalnya dengan seperti ini,

kita bisa tambahkan di depannya misalnya engine ex. Jadi kita bisa membuat, atau iselannya itu mengkombinasikan teknologi-technologi lain,

gitu ya, untuk mendukung si aplikasi kita. Jadi dengan menggunakan fork,

maka seperti ini lebih cocok gitu ya. Kenapa misalnya, oh, kalau misalnya semua yang kita buat itu semuanya teknologinya adalah Nogis, temen-temen tidak menggunakan teknologi lain, misalnya dalam satu seber itu cukup aplikasi kita aja,

maka modok-luster sebenarnya sudah cukup, gitu ya. Jadi dengan menggunakan modok-luster, nanti semua request yang di terima oleh aplikasi kita,

itu akan masuk ke proses-nya.

Nanti proses-nya akan mendisribusikan pekerjaannya ke warkernya.

Seperti ini. Nah, karena dia satu proses,

jadi dia hanya akan randang di satu port.

Seperti itu. Nah, salah satu kekurangannya, kalau temen-temen menggunakan modok-luster,

adalah kalau proses-nya mati, maka semua warkernya akan ikutan mati. Nah, kalau misalnya temen-temen menggunakan modok-luster, kalau salah satu proses mati,

gitu ya, kita masih ada proses yang lain yang tetap jalan.

Seperti itu. Nah, oleh kannya itu, kalau temen-temen peratikan, DPM-2 memang secara default dia menggunakan modok-luster,

gitu ya, kita menjalankan aplikasinya.

Tapi temen-temen bisa ubah menjadi modok-luster kalau temen-temen mau.

Seperti itu.

Nah, kalau temen-temen pengel lihat lebih detail, gitu ya. Nah, ini saya sisipe kan ya,

referensi kalau temen-temen mau pelajari fork dan juga kelasar. Jadi, sebenarnya ketika temen-temen menggunakan PM-2 untuk menjalankan aplikasi Node.js-nya, ketika dia menggunakan modok-luster,

itu sebenarnya dia menggunakan child process, gitu ya.

Jadi, silanya di Node.js itu ada API atau library namanya adalah child process.

Dia temen-temen bisa baca di sini. Nah, ketika temen-temen menggunakan cluster, itu sebenarnya dia menggunakan sih

cluster API yang ada di Node.js.

Jadi, sebenarnya, dua hal ini bukan sesuatu yang baru, gitu ya, di Node.js-nya memang sudah ada. Cuma, temen-temen kalau sudah meikuti kelas saya,

keadaan kita membuat cluster memang agak sedikit ribet, gitu ya. Nah, dengan menggunakan misalnya PM-2, contohnya kita bisa menjalankan aplikasi kita dalam modok-luster,

itu dengan lebih muda dan juga dalam modok-luster dengan lebih muda.

Di banding temen-temen implementasi sendiri menggunakan child process atau cluster API Node.js-nya.

Oke, mungkin itu saja temen-temen ya. Vlogs ingat kali ini, kalau temut-temen ada pertanyaan,

selakan di submit ya, di project Q&N-nya programmer di jamanau di GitHub.

Kita akan temul lagi di video-video selanjutnya.

Salam programmer jamanau.

Bye-bye.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment