Lompat ke konten utama
EP 54

Jangan gunakan NodeJS sebelum nonton video ini!

Ringkasan Episode

Bantu Koreksi

Episode ini membahas JavaScript di sisi server, dan sengaja tidak dibatasi pada Node.js saja — sekarang ada Deno, Bun, Cloudflare Workers, dan berbagai layanan function yang di baliknya memakai AWS. Bagian paling seru adalah drama penomoran versi Node.js. Ia lama tertahan di 0.x, dan itu bukan soal teknis melainkan kepercayaan: banyak perusahaan menolak memakainya semata-mata karena angka nol di depan, padahal sejak 0.8 sudah dianggap stabil. Ketika Joyent, tempat Ryan Dahl bekerja, ikut mengambil peran mengelolanya, sebagian komunitas khawatir arahnya disetir satu pihak lalu memisahkan diri sebagai io.js dan langsung menerbitkan versi 1.0. Keduanya akhirnya rujuk di bawah sebuah foundation dan bersepakat melompat ke 4.0 sekaligus. Sejak itu penomorannya teratur: versi genap jadi LTS yang disarankan, versi ganjil untuk mencoba yang terbaru. Dua runtime pendatang dibahas sebagai pemicu geliat baru. Deno dibuat Ryan Dahl sendiri setelah merasa ada keputusan awal Node.js yang keliru, terutama soal keamanan paket npm; ia tetap memakai V8 tapi ditulis ulang dengan Rust setelah sempat memakai Go. Bun memakai mesin JavaScript dari WebKit alih-alih V8 dan menjual kecepatan. Keduanya membuat Node.js terlihat lamban — meski disinggung juga bahwa berinovasi terlalu cepat pun sama-sama dikeluhkan orang. Sisanya obrolan membumi soal cara menerbitkan aplikasi: dari Heroku yang tinggal push, sampai mengatur droplet sendiri dengan Nginx dan PM2 agar prosesnya tetap hidup di latar belakang.

Poin-poin Utama

  • Node.js lama tertahan di versi 0.x bukan karena teknis, melainkan karena perusahaan menolak memakainya semata-mata karena angka nol di depan
  • Kekhawatiran arahnya disetir Joyent memicu perpecahan menjadi io.js yang langsung menerbitkan versi 1.0, lalu keduanya rujuk dan melompat ke 4.0 sekaligus
  • Sejak itu penomorannya teratur: versi genap jadi LTS yang disarankan dipakai, versi ganjil untuk mencoba fitur terbaru
  • Deno dibuat Ryan Dahl sendiri setelah merasa ada keputusan awal Node.js yang keliru, terutama soal keamanan paket npm — tetap memakai V8 tapi ditulis ulang dengan Rust
  • Bun memakai mesin JavaScript dari WebKit alih-alih V8 dan menjual kecepatan sebagai pembedanya
  • Kehadiran Deno dan Bun membuat Node.js terlihat lamban — meski berinovasi terlalu cepat pun sama-sama dikeluhkan orang
  • Menerbitkan aplikasinya berkisar dari Heroku yang tinggal push sampai mengatur droplet sendiri dengan Nginx dan PM2 agar prosesnya tetap hidup di latar belakang

Hai, hai, hai. Halo, selamat malam.

- Halo. - Selamat malam.

Akhirnya kita ketemu lagi di hari selasa ini.

Gimana kabarnya semua?

- Kabar baik. - Sudah kabar baik ya.

Sudah sehat-sehat semua ya.

Teman-teman yang nonton juga mudah-mudahan sehat.

Seperti biasa, ketemu lagi dengan kita bertiga.

Ada Eka, ada Irvan, dan ada saya Riza.

Di acara yang selalu ditunggu-tunggu setiap selasa malam, yaitu angel.

- Ngobrolin weh. - Ngobrolin weh.

- Propnya beda gitu. - Iya.

Biar enggak dibilang EI kan, harus berbeda.

Lain kali kita harus latihan, latihan.

Biar enggak, biar enggak bosan ya.

Oke, di sini sudah terlihat ada beberapa orang yang sudah nggak sabar.

Andre, halo, Audi, Hai, dan ada Ari.

Ayo, siapa yang ke Surabaya?

Ini si Devis Surabaya.

Belum ya, belum.

Dispel lagi tuh sama Audi.

Ayo Pak Dika, ikutan.

Ayo, jangan tanya kita ya, tanyanya ke Pak Dika ya.

Kita udah ngajak selalunya.

Atau malah kita yang masuk channelnya dia.

Oh iya, kayaknya gitu sih.

- Kayaknya gitu sih. - Nanti-nanti ya lah.

Tunjukin apa?

Iya, sebenarnya kita pengen ngundang.

Tapi juga di satu sisi yang lain ini bukan kewajiban kan.

Lihat transkrip lengkap (1764 segmen lagi)

Jadi ini juga bukan acara spesifik khusus GDE gitu juga bukan.

Jadi bebas aja, mau join kita akan senang sekali.

Kalau mungkin ada kerjaan mungkin di hari Selasa nggak cocok waktunya.

Atau nggak ada bandwidth untuk ngikutan, ya apa boleh buat gitu kan.

Kita tunggu saja.

Oke, halo. Ini teman kantor nih dulu, Rantaru.

Tahu kenapa kita sekantor dulu? Lupa saya.

Kapan terakhir kantor, Mas Risa?

Hari sekemarin kali.

Ini teman kantor yang lama sekali, 2005 ya?

Uy, lama banget. Belum jadi programmer saya.

Oh iya, begitulah. Enggak sih, nggak 2005.

2005 Mas Risa sudah kantor.

Wow.

Umur berapa, Mas?

Oh dia, 2012. Mas saya 2012.

Enggak, 2012 itu saya sudah pindah dari kantornya dia.

Anyway, hari ini kita akan membahas tentang perkembangan JavaScript di backend,

yaitu node.js salah satunya ya.

Oke, daripada bahas sejarah kantor lebih baik bahas JavaScript server-side.

Ini kita sebenarnya nggak ngomongin spesifik node.js karena sekarang di backend sudah banyak

yang bisa menjalankan JavaScript juga selain node.js ya.

Ada boon, ada deno, ada cloudflare worker, ada AOS lambda, ada function ya.

Versel juga ada function, Netlify juga ada function walaupun dalemannya itu juga kan.

Versel sama Netlify sebetulnya ya pakai AOS juga.

Jadi sekarang JavaScript sudah bukan hanya dikuasai oleh node.js saja di sisi backend.

Dan malam hari ini kita akan lihat beberapa update-update karena udah lama juga kan.

Kita kayak si node.js ini udah versi stabil, orang udah biasa ngerjain,

terus ada hal yang baru apa sih.

Semenjak deno dan boon muncul si node.js ini jadi kayak apa ya, jadi kayak tersentil.

Ini mana nih update-nya, kok nggak ada update, kelihatan tidak berkembang gitu ya.

Padahal memang kalau...

Kalau terus nanti kita bahas juga kenapa node.js dulunya itu kan

position-nya 0.1, 0.2, 0.3, sampai 0.14 tiba-tiba, terus berubah sekarang P14, P15, P16.

P16, P16, P18, terus temen-temen penasaran juga mungkin kenapa kita nggak pernah dengar yang ganjil.

Kenapa selalu P14, P16, P18.

LTS kan?

LTS.

Tapi nggak ada ganjilnya.

Nggak ada ganjilnya?

Coba kita lihat ya.

Ada.

Yang LTS gena, yang non-LTS ganjil ya kan?

Oh iya, ada versi 17 ada kok.

Ada, cuma nggak di... apa? Yang long term support itu yang diekspos ke public,

maksudnya yang di-encourage itu yang gena, yang kita perlu pakai yang P14, P16, P18.

Oke, kita ngomongin ini dulu kali ya.

Tadi versi, kenapa versi 0 berapa tadi, sampai 0.12 dia berhenti lumayan lama ya.

Versi 0.12.

Ini kita udah pernah bahas tapi nggak apa-apa kita bahas lagi sekilas.

Di sini, nah ini.

Kenapa? Ada yang tahu?

Ada nggak ya? Di sini ya.

Nah ini.

Milestone.

Jadi Node.js ini lahir di 2009.

Terus munculnya, dikenalnya pertama kali gara-gara ada talk dari pembuatnya.

Terus abis itu banyak dicaci.

Biasa ya.

Biasa.

Ada yang sampai bilang Node.js itu kanker buat backend gitu ya.

Ya ampun.

Ya udah pernah dulu.

Jahat pun. Jahat banget kan.

Terus berkembang-berkembang sampai 2010-02.

2011 muncul NPM.

Jadi ada jeda 2 tahun ya.

Jadi dalam 2 tahun itu mereka nggak punya package manager ya.

Nggak punya package manager.

Terus di 2012 itu versi 0.8 yang dianggap sebagai versi stabil.

Untuk sebagian orang.

2002, 2003, 2004, 2005 sampai 2008.

2008. Itu dianggap stabil.

Tapi buat sebagian orang yang lain, terutama yang mungkin middle to enterprise gitu.

Menganggap ini belum versi stabil.

Jadi mereka biasanya nggak berani pakai.

Karena 0 depannya ya.

Karena 0 depannya.

Lalu di 2013 ada muncul beberapa killer feature, killer app lah.

Kayak Ghost, yang ini blogging engine ya.

Terus muncul juga minstack.

Ini sih cuma gabungan dari berbagai kombinasi dari ini sih.

Oh minstack dulu kebular ya.

Sempat terkenal banget tuh minstack itu.

Bukan murn ya, tapi murn.

Iya, murn.

Terus abis itu A nya diganti R, react kan jadi murn.

Untung nggak pakai spelt ya.

Kalau pakai spelt, mesen.

Mesen.

Semen.

Semen.

Terus apa, Paypal juga bikin framework sendiri namanya Kraken.

Apa lagi ya?

Kraken, udah lama banget ya itu Kraken ya.

2017.

Oh itu biar release the Kraken ya.

Kalau mereka release.

Ini yang pertama kali Paypal berubah tampilan itu loh.

Yang dia bener-bener kayak berubah jadi serverless.

Eh salah, headless.

Kok serverless sih, headless.

Jadi dari Paypal yang lama.

Terus dimodernisasi jadi headless.

Awalnya.

Dan salah satu cerita suksesnya Paypal menggunakan Kraken.

Adalah dia berhasil survive di Black Friday ya.

Jadi diskon besar-besaran itu berhasil trafficnya ditangani oleh Node.js pada saat itu.

Terutama Kraken ini.

Sangat ya, semua orang banyak.

Bayarnya pakai Paypal.

Diberbagi setelah kan.

Sorry, bukan Paypal. Ada satu lagi, bukan yang Walmart.

Sorry, Walmart. Salah, bukan Kraken.

Ada satu lagi, Walmart juga dia bikin framework.

Ini ya, bukan ya.

Bukan, dia bikin framework.

Wah, gak ada di sini ya.

Iya tapi dia bikin framework juga, namanya apa gitu.

Nanti mungkin ada di bawah.

Terus 2014.

Mulai ini nih.

Node.js mulai kisrug.

Karena versinya gak naik-naik dari versi 0.8.

Terus akhirnya.

Selalu begitu sih. Ini kayak versi ECMAScript juga kan.

Gak naik-naik.

Terus akhirnya beberapa kali pindah tangan.

Node.js bikin advisory board.

Terus Joyen, ini perusahaan si Ryan Dahl bekerja.

Dimana Ryan Dahl bekerja pada saat itu.

Mengambil alih si Node.js ini.

Supaya cepat.

Mengambil alih dalam artian ikut serta lah.

Ini kan projek komunitas ya.

Kayak sekarang lah.

Misalkan si pembuat spelt dibayar oleh Versel untuk mengembangkan spelt yang adalah open source.

Kira-kira kayak gitu ya.

Banyak yang gak senang.

Karena takut di setir oleh satu perusahaan.

Akhirnya muncullah IO.

IO.js.

IO.js ini adalah forking dari Node.js.

Langsung dia tembak ke 2015, langsung tembak ke versi satu.

Karena mereka sudah menganggap dari 0.8 sebenarnya udah stabil.

Cuman gak banyak orang yang berani pakai, perusahaan yang berani pakai.

Gara-gara versinya doang.

Yaudah dikasih aja versi satu.

Sedangkan Joyen gak mau.

Mesti bersih kukuh bahwa ini versi 0.8.

Akhirnya baru rame-rame nih di Kroyok.

Koalisi, koalisi.

Keyword of the Norway, koalisi.

Terus nyari apa, nyari rujuk lah IO dan Node.js jadi satu.

Jadi IO.js sudah gak ada, digabungin lagi balik ke Node.js.

Dan akhirnya.

Versinya belum?

Versinya di 2015 Q3.

Muncullah versi 4.0.

Kok 4.0?

Iya, jadi 4.0.

Jadi 4.0 langsung yang mencap ya?

Iya, 4.0 adalah 1.0 baru.

Ya, jadi 0.8 sebenarnya 0.8 ke 1 itu hampir tidak ada perubahan.

Terus senketa 1, senketa naikin ke 1 atau enggak.

Tiba-tiba pas udah demai, sepakat yaudahlah 4 aja.

4 aja.

Nantap.

Nggak tanggung-tanggung gitu ya, nggak ke 2 dulu gitu ya.

Ya gitu lah, jadi ada drama-drama sedikit.

Nah setelah itu baru lancar tuh.

Untuk apa, yang tadi kita sempat sebut bahwa ada versi LTS yang genap.

Yang ganjil versi non-LTS.

Current, development lah.

Nah teman-teman di sini pakai Node.js, versi berapa?

Oh Walmart itu HP.js ya?

Benar ya?

API ada tadi di atas.

Ada di atas.

Dia lumayan awal juga.

Itu sebelumnya Express sama Coop?

Ini, setelah Express.

Express itu di awal, di sini 2010.

2012 baru HP.

Berarti OG-nya Express ya?

Yang maksudnya 2009 Node.js lahir.

2010 framework-nya pertama Express.

Betul.

Nah setelah itu, sekarang berkembang.

The rest is history ya teman-teman.

Udah bisa ngikutin lah sampai sekarang.

Udah versi berapa?

Terakhir saya pakai versi 18 ya.

Sekarang udah versi berapa?

20.

Eh nggak deh, 22 ya.

Eh ya 20, 20.

20, yang LTS itu 20.

Eh nggak lah.

Wait.

Nah sambil buka deh.

18.

18 kan yang terbarukan.

Yang LTS baru kan.

LTS itu 18.

Iya.

20.

Aktif.

Nah itu tahu buat.

Kan kalau misalnya kita nggak liat grafiknya, ini agak bingung sih konsepnya current.

Cuma kalau udah lihat ini, oh iya ngerti-ngerti.

Current versus long time.

Current versus long time.

Yang main selalu unstable.

Ini yang buat di itu ya, buat di version kontrolnya ya.

Yang main selalu unstable.

Kemudian ini versi 16.

Versi 18 ini maintenance mode.

Versi 20 yang lagi aktif.

Versi 21 yang terbaru.

Jadi kalau temen-temen mau install versi terbaru, berarti sekarang versi 21 yang defaultnya ya.

Eh nggak ya, 24.

Enggak.

20, 20.

20 ya.

Yang encourage untuk kita install, biasanya itu yang LTS-nya doang.

Nah current itu kalau misalnya ada sesuatu hal yang kita pengen coba.

Atau mungkin ada patch apalah yang beneran kita nggak bisa menggunakan sampai 22.

Cuma di kasus-kasus khusus kayak gitu yang kita perlu pakai 21 yang current.

Nah ini versi 20.

Nah itu saya kan recommended for most user.

Versus latest feature.

Yes.

Ini buat ke depannya ya.

Pake NVM ya gampang. Gonta ganti.

Gonta ganti senat bundel.

Iya.

Ada banyak lagi ya selain NVM, ada Volta, ada macem-macem sekarang banyak.

Jadi gitu banyak.

Nah, jadi yang kenapa kita bahas ini malam ini salah satu alasannya adalah

semenjak si runtime-runtime ini muncul, salah satunya Deno, kemudian Bund.

Deno yang bikin note juga.

Iya.

Dia pindah kerja sekarang, nggak tahu, terakhir tahu saya dia di Google, sekarang nggak tahu di mana.

Sekarang full-time ngerjain itu kali.

Mungkin.

Iya.

Karena ada monetization-nya juga kan untuk deployment-nya ya.

Jadi habis itu dia merasa ada beberapa hal yang menurut dia Node.js itu salah langkah.

Terutama di sisi security ya.

Kan banyak tuh kejadian NVM ini kan security.

Package.

Iya.

Jadi akhirnya dia memutuskan untuk bikin baru.

Dengan teknologi baru.

Kalau dulu dia bikin pakai si V8-nya itu kan C++ ya.

Kalau ini dia tulis ulang semuanya.

Kalau ini dia tulis ulang "go" atau "rush".

Loh ini nggak nge-forking engine yang udah ada ya?

Nggak pake spider monkey atau V8?

Nggak. Ini bikin dari awal, dia kalau nggak salah sempat ganti...

Ini kenyataan programmer banget ya.

Yes.

Kayaknya dia bikin karya, dia bikin Node.js yang udah berdekade udah puluhan belasan tahun.

Terus dia makin lama mikir, aduh ngesel, kenapa dia bikin ini, coba gini.

Makin dari awal.

Terus makin lama ya dalam belasan tahun itu kan banyak teknologi baru lagi ya.

Jadi pasti dia makin lama makin yang kayak tidur nggak pulas, kepikiran.

Terus akhirnya ya udahlah bikin baru.

Ini orang-orang seperti ini ya, seperti Mas Ryandal, seperti...

Oh pakai V8.

Oh pakai V8-nya masih pakai ya?

Oh iya V8 tuh.

Itu tuh.

Masih pakai V8.

Well in Rust. Tapi pasti pakai V8.

Tapi dibikinnya di Rust.

V8-nya mungkin ini layer di atasnya yang pakai Rust.

Ya.

Jadi ini sempat ganti bahasa programan.

Setau saya awalnya mereka pakai goleng, abis itu ganti Rust.

Di tengah jalan.

Sebelum rilis.

Wow.

Ini juga seru nih ya.

Jadi ini salah satunya Edeno.

Kemudian ada Bunja S juga yang muncul baru-baru ini.

Nanti kita akan bahas lebih lanjut kenapa tadi ada highlight-nya sedikit.

Nah Bunja S ini berbeda.

Dia tidak menggunakan V8, tapi dia menggunakan...

Ada yang menggunakan ibu kan?

Oh punyanya Safari.

Punyanya WebKit.

Yang dipakai, yang kebetulan juga dipakai oleh Safari atau Apple.

Safari.

Yes.

Dan katanya jauh lebih cepat ya.

Gitu.

Tapi gara-gara dua ini, si Bun, terus juga ada Cloudflare, Worker, dan lain-lain.

Banyak sekarang netizen-netizen yang bilang, "Kalau kok Nejes perkembangannya lambat sekali?"

Gitu-gitu aja.

Gitu-gitu aja.

"Kok gak cepet?"

Gitu kalah cepet sama...

Tidak, penyakit sih. Kalau terlalu cepet, kalau misalnya inovatif, dimarah-marahin.

Dianggap ngerusak perbahaya, blablabla.

Tapi kalau dianggap kurang cepet, dimarahin juga.

Kok gitu-gitu aja.

Tapi sebelum kita lanjut kesana, saya pengen tau.

Kalau misalnya teman-teman pakai .js application server,

itu memang sudah se-bundle kan?

Misalnya kayak lagi bangun apa ya?

Next.js yang sudah server-side segala macam, yang sudah disediakan gitu kan?

Atau memang pernah bangun, khusus kayak Express itu?

Express, web server, gitu ya?

Aplikasi apa gitu?

Ya, pernah gak sih? Atau memang kan sudah dibundle...

Apa? Sekarang udah meta framework semua?

Meta framework semua nih.

Ya, kita pengen tau juga nih.

Teman-teman, sekarang kalau kerjain project,

apakah langsung pakai meta framework seperti Next, Nux, Spellkit, dan lain-lain lain?

Atau masih pakai back-end, front-end, API misalkan gitu ya?

Pakai Express.

Terus gini juga, dari satu sisi lain yang pengen saya tau itu,

biasanya deploy ke mana gitu?

Kalau mau pakai yang ada .js server-nya.

Itu deploy ke mana sih kalian yang paling gampang gitu?

Deploy ke localhost, pakai ng-rock.

Karena saya sampai sekarang masih yang paling gampang bagi saya itu

kalau nge-deploy .js application yang non-flamok-flamok kan itu,

paling gampang ke Heroku, paling gampang.

Dan belum menemukan yang penggantinya.

Digital Ocean juga kali ya? Lebih murah ke non.

Digital Ocean kan VM.

Bisa, berarti bisa itu banyak dong.

Bisa deploy banyak ke satu droplet.

Bisa, bisa, cuman PR-nya harus manual.

Jadi kan kita harus siapin VM-nya, install node.js-nya,

install database-nya, bikin nginx-nya, atau proxy server-nya,

konfigurasi, ya kan? Kalau Heroku kan tinggal Heroku create,

Heroku push, Heroku main.

Itu ya salah satu.

Tapi Heroku sudah berbayar. Betul sekali.

Makanya sekarang banyak yang bikin alternatif.

Kalau sekarang ada fly.io, ada render.com yang masih gratis juga,

railsway juga ada, itu juga bisa non.js-nya, banyak sekarang alternatifnya.

Ada yang pernah mencoba nge-deploy manual dengan menggunakan C-Panel nggak?

No, not server manual.

Memang ada ya?

Tapi ngejaranin di remote-nya kayak gimana?

Iya maksudnya, maksudnya dia manual.

Manual itu maksudnya bukan pakai git deploy segala macam.

Jadi benar-benar upload file-nya, terus kemudian setting node.js-nya itu

di setting dari C-Panel.

Tau ya, C-Panel share hosting, C-Panel di setting.

Ya, yang biasa di-apply SQL kan? FTP gitu kan?

Pasti setiap kali node.js application, pastinya ini-nya entry point-nya

cuma satu file kan? Server.js-kan, index.js-kan, ya kan?

Jadi jalanin entry point-nya aja sebenarnya.

Ada yang pernah nih, ada yang pernah nih?

Iya.

Pake C-Panel.

Share hosting bisa 50 ribu, 50 ribu.

Iya, iya, iya.

Nah, kalau ini sama saya juga sering melakukan.

Di deploy GPM sendiri, running-nya pakai PM2 seperti apa?

Running terus kan, terus juga ada engine X.

Apa, panjangan PM2 apa panjangannya?

Process manager?

Yes, process manager. Yang dia selalu online gitu ya.

Ya, jalan di background.

Membuat, yang benar ya, menjalankan comment di background.

Di background.

Jadi menjalankan comment dan selalu jalan di background.

Kalau mati dia hidupin lagi sendiri, ya kan?

Ya, jadi kalau misalkan kita keluar dari, kan biasanya note pasti index.js atau npm start.

Kalau kita kontrol, saya kan mati kan?

Kalau kita mau keluar dari server kan mati kan?

Jadi kita butuh itu jalan di background.

Makanya pakai PM2. Salah satunya ya, PM2 itu banyak tuh fungsinya.

Salah satunya itu.

Gitu.

Kira-kira masih pada pakai note.js ya, kira-kira udah pada ke Goleng, Raz.

Kalau di kantor pakai Go.

EP service-nya pakai Go, ya udah dipanggil dari run-n apapun bisa.

Oke.

Nah, kita mau bahas sedikit tentang update apa aja yang mungkin kita kelewat.

Apa ya, kayak kelewatan gitu, karena kelewatan itu kayak ini ya.

Kelewatan, kebangetan.

Kebangetan.

Nggak ngah kalau itu ternyata sekarang note.js ada fitur itu.

Salah satunya yang saya bisa highlight adalah sekarang note.js sudah punya test runner sendiri.

Kalau dulu kan kita harus install mocha.

Harus install, harus pakai jazz ya, yang baru kalau anak front-end tuh taunya jazz biasanya ya.

Nah, ternyata si note.js ini akhirnya memutuskan untuk membuat si test runner sendiri.

Setelah sekian tahun, setelah ada banyak library, alasannya kenapa?

Tujuan apa tuh? Iya alasannya kenapa?

Iya mempermudah testing.

Presumably.

Kalau dari apa ya, dari nanti kita bahas salah satu podcast yang menginspirasi acara malam ini.

Kita bahas ini.

Itu dia bilang, kenapa mereka memutuskan untuk bikin sendiri, sementara yang lain udah ada opsinya.

Itu karena, murni karena opsi-opsi yang ada sekarang itu belum sesuai sama keinginan mereka.

Kecuali mocha dia bilang, kecuali mocha, mocha itu keren.

Tapi kalau jazz, dia tidak merekomendasikan menjalankan jazz di sisi server.

Ini cuma menarik ya, note.js ini kan dia runtime, runtime environment.

Dan kalau dari segi bahasa kan sebenarnya dia memproses bahasa JavaScript, ECMAScript.

Cuma note.js ini kan bisa nambahin teknologi sendiri lah, kayak syntax sendiri apapun itu.

Yang fitur-fitur mempermudah atau memfasilitasi dia sebagai server-side language.

Kayak yang paling gampangnya proses lah.

Dulu itu pas baru belajar JavaScript, dulu belum ngerti web API.

Itu kan satu layer lagi untuk runtime JavaScript yang khusus berada di browser.

Di sisi lain yang di server-side, note.js juga punya proses, file system.

Dia bisa nambahin fitur-fitur sendiri yang khusus di server-side.

Nah, ini berarti note.js ini bisa ya, mereka punya konsep apa yang kayaknya oke dan perlu dan relevan.

Ya udah, kita tambahin sendiri.

Dan itu perlu diingat bahwa itu di luar spesifikasi ECMAScript.

Betul.

Nah, termasuk di test runner ini ya?

Iya, ini test runner sudah dari DLTS, sudah dari spesifikasi 18.

Oh 18 ya?

Spesifikasi 18, sudah dari 18.

Dan versi 20-nya sudah stabil.

Jadi udah bisa dipakai.

Ya, tadi Eka mau nambahin apa?

Udah, itu maksudnya bahwa itu tuh kayak suka-sukanya note.js saja.

Jadi kalau kita pakai boon atau deno, belum tentu ada kali ya?

Belum tentu ada.

Karena mereka harus catch up juga kan dengan ini yang terbaru kan?

Atau misalnya boon deno bikin sendiri misalnya, ya mungkin yang bikin punya ide lain tentang oh kalau ngejalanin test tuh harusnya gini, kayaknya bisa bikin sendiri berarti kan?

Ya, punya opini sendiri, betul.

Dan bahkan fetch pun yang sesimpel itu, fetch aja baru masuk ke note.js, kapan tuh? Belum lama kan?

Belum lama, versi 16 atau 18 gitu.

Ya, itu karena fetch itu kan berasal dari frontend kan?

Web API.

Ya, sementara dari awal note.js itu menggunakan semacam polyfill kan untuk backend-nya.

Lama-lama karena ini udah stabil akhirnya mereka adaptasi.

Sama kayak ini, yes module.

Kan awalnya kan command.js ya, pakai require.

Itu menarik sih, itu menurut gue itu menarik banget.

Dan mungkin yang sekarang, maksudnya yang baru pakai sekarang, gak sadar ya bahwa yang pertama kali bikin sistem module di JavaScript itu malah bukan di browser.

Bukan.

Atau di server.

Iya, karena browser pada saat berkembangnya, dia lebih memilih untuk loading semuanya satu-satu kan di script SRC kan.

Kita tuh pernah bahas, ini episode apa ya?

Package manager.

Package manager.

Ya, episode package manager.

Silahkan cari aja di...

Di mana gitu.

Somewhere.

Dari sendiri lah.

Ini dari CCS dan ASM ada pernah cerita lucu kebodohan saya.

Apa tuh?

Biasa nulis note application note, tetapi pakenya import.

Oh, terus error?

Waktu dijalankan, error-nya kenapa?

Error-nya aneh.

Error-nya import bintang tanda karet-karet gitu.

Oh langsung merah gitu, import tanda merah.

Oh iya lupa, ternyata harus required.

Dan kalau nulis kayak di, biasanya tuh kecampur-campur ya, karena nulisnya satu di...

Satunya nulis untuk IS module, untuk di application front-end.

Dan satu lagi nulis untuk perbaiki konfigurasi webpack.

Konfig.

Kalau di webpack.

Webpack kan, webpack konfig kan jalannya pakai note.

Gak bisa, gak bisa IS module.

Oh iya bener, iya note dulu kan.

Jadi kecampur-campur, iya terus kecampur-campur terus bingung sendiri, oh iya ya.

Ya sampai sekarang pun kayak Tailwind, kita bayangin Tailwind kan, oh CSS di browser.

Padahal kan si Tailwind-nya sendiri kan, apa prosesnya, betulnya di note.

Makanya konfignya Tailwind kan, CJS.

Tapi sekarang kayaknya udah bisa interchangeable deh.

Import udah jalan di note JS.

Makanya tuh di contohnya kan tadi yang di dokumentasi, udah ada toggle-nya kan.

Iya, udah ada toggle-nya.

Tapi kan package site-nya harus ditambah module gak?

Package module-nya ditambahkan type.2 module.

Di-identify sama kelihatannya ada sistem tertentu yang berdasarkan extension-nya.

Oh gitu, CJS atau JS aja gitu.

Kalau pakai vid, lupa PNPM sama vid kalau gak salah.

Oke, oke.

Wah menarik ya.

Nah, buat temen-temen yang pengen lihat contohnya, saya lagi coba pas lagi ada project kantor gitu ya.

Coba pakai ini, note test.

Ini kantor yang lama atau yang baru?

Kantor yang sekarang.

Kantornya ada berapa?

Current, current company.

LTS, current atau LTS.

LTS ya, LTS. Jadi lagi bikin ini, apa, course tentang AI, Prom Engineering.

Saya coba buat testing-nya pakai test-nya note JS.

Assert udah lama kan, ada sebenarnya kan.

Nggak tau.

Assert itu udah lama.

Nggak, belum pernah pakai.

Render-nya yang gak ada di note JS, itu udah lama assertnya.

Oh, I see.

Tapi berarti fungsi assert itu dia compare-nya kayak, itu agnostik ya?

Kayak apapun yang dikasih ke dia, dia cuma bikin.

Nggak, ini equal, ada strict equal, ini sama dengan tiga.

Ini method-methodnya itu bisa dipakai buat runner apapun berarti?

Oh iya, betul, betul.

Jadi kita bisa pakai mocha sebagai runner-nya, gak perlu pakai chai untuk assertnya.

Kita bisa pakai note JS sebenarnya.

Cuman kebanyakan tutorial kan mengkombinasikan mocha sama chai kan.

Karena memang lebih lengkap juga.

Yaudah, saya coba terus jalanin juga lumayan cepat dan lumayan menarik gitu ya.

Tampilannya gak kayak yang biasa aja gitu ya.

Runner yang biasa aja, gak ada icon-icon.

Betul lah, kalau misalnya yang pas ada centernya.

Ya, ada error disini, perbandingannya harapannya 4-6 tapi kok dapatnya 6 gitu kan.

Udah modern lah, jadi pantas untuk digunakan gitu.

Udah cukup oke untuk digunakan.

Adakah freshness kalian gak, atau cuma ini?

Fresh, belum tahu.

Runner-nya aja?

Kayaknya baru runner deh kayaknya.

Baru runner ya.

Coverage-nya tetap harus pakai istambul.

Istambul.

Ada strict equal, ada apa lagi ya?

Di sini ada gak ya?

Kayaknya itu udah standard deh, assertsnya itu udah standard.

Kayaknya ada standard masing-masing.

Itu gak ada rata-rata ya kalau mau bikin assertsnya.

Iya, gini doang ya.

Benar, benar.

Udah mau ditambahin apa lagi?

Udah, coverage-nya udah 100% ini.

Dan semua case kayaknya udah terpenuhi ya.

Nah, itu yang pertama, testing yang pertama.

Yang kedua, ada satu fitur yang sudah di-request sekian 10 tahun.

Dari 2018 kalau gak salah.

Websocket ya itu?

Iya, websocket.

Pertama kali isunya di-open di Maret 2018.

Si Milas Borins ini.

Dia berharap...

Yang di-mention dong, liat kanan-bawah tuh.

Random aja.

Ini?

Karena yang bikin socket Ayo adalah dia.

Adalah pembuat.

Jadi sebelum dia bikin Versal, dia bikin socket Ayo.

Jadi dia berharap kalau websocket itu didukung built-in.

Gak perlu install socket Ayo.

Itu di 2018.

Akan segera dirilis, tapi sekarang belum kayaknya.

Ini masih open kan?

Ada itunya, akhirnya ada yang bikin WS itu loh.

Eh, iya ya WS.

Paketnya WS.

Namanya WS?

Ya karena menunggu kelamaan, ditunggu 5 tahun.

Ya 5 tahun sih, WS juga udah berapa tahun kan?

Iya.

Ini, apa?

Kalau berhasil akhirnya, berhasil close, websocket berhasil di-add.

Di masukkan ke Node, berarti ya apa?

Isu yang sudah dibuka selama 5 tahun akhirnya bisa ditutup ya.

Tapi sekarang masih open.

Masih open, gara-gara ada WS itu tadi.

Dan itu kali ya, maksudnya,

kalau misalnya digabungin ke Node,

terus ke depannya takutnya kan apalah ada yang berubah gitu.

Terus beda sama WS.

Keliatannya semua developer yang pakai fungsi ini jadi kayak pura-pura nggak lihat aja lah udah.

Mungkin loh.

Iya.

Mungkin juga karena ada laborasi WS ini

yang mungkin menurut mereka cukup representatif untuk Node.js,

jadi nggak perlu dibuat.

Sama testing yang menurut mereka ya kurang,

si jes, pts, atau yang lain-lain,

eva, ada lagi apa gitu, tape, dan lain-lain itu,

kurang representatif.

Jadi akhirnya mereka bikin sendiri.

Mungkin gitu ya, nggak tahu juga sih.

Ini sampai terakhir tuh balasannya ini kan.

Dua minggu lalu.

I don't see a reason to have server implementation.

WS work extremely well.

Karena WS udah berjalan dengan baik,

ya udah berarti nggak.

Jadi nggak jadi nih.

Ini kayak sama aja kayak bilang web server masukin ke Node

kalau express.js udah jalan dengan baik gitu.

Misalnya.

Karena WS itu kan kayak web server.

Ya salah, web socket server.

Iya, benar.

Sama aja kayak beberapa developer yang punya keinginan

untuk memasukkan React ke dalam browser.

Akhirnya yang masuk adalah web component.

Sama aja kan, kurang lebih gitu ya.

Ya semua yang kita suka.

Yang kita masukin.

Jadi nggak perlu ada dependensi lagi kan, mengurangi.

Iya, mengurangi ini.

Coba lihat yang label feature request-nya apa aja tuh?

Nggak pernah ikutin.

Coba, paling atas kan ada label feature request.

Klik aja feature request-nya tuh.

Pasti banyak bang.

Real time audio API.

4 jam yang lalu.

Ngadi-ngadi.

Bullet in, heavy duty routing API.

Ini makes sense sih.

Ini makes sense.

Makes sense, tapi itu kayak lompat satu layer gitu loh.

Kalau misalnya ada routing,

framework yang ada sekarang kayak pontang-panting pasti.

Karena masing-masing kan punya implementasi routing sendiri.

Mungkin kedepannya bagus sih.

Sebenarnya ya bagus, tapi

buat nyampe situ

kayak harus diskas yang mateng banget

sama seluruh framework yang

sekarang udah ada dan banyak dipake kali ya.

Nah, makanya Node.js terlihat lambat

gara-gara salah satunya gara-gara ini.

Diskusinya tuh hangat.

Harus mengakomodir banyak pihak.

Udah dari 2009 kan soalnya.

Berbeda dengan Deno dan juga Bun yang baru kan.

Yang baru bikin sekarang.

Mereka mau bikin breaking change ya terserah gitu.

Mau pakai ya silahkan, gak mau ya udah gitu kan.

Kalau ini kan mereka harus memikirkan yang dulu-dulu gitu.

Belum lagi skillnya.

Maksudnya penggunaannya kan dari ada yang

cuma beneran di lokal host doang.

Ada yang dipake on-prem.

Ada yang dipake di serverless.

Ada yang dipake apalah yang harus skill

sampai bisa nanganin sekian ratus.

Ada yang embedded system.

Terima kasih sekaligus ya.

IOT, robotik, banyak di mana-mana.

Jadi mereka harus mengakomodir ini semua gitu.

Makanya terkesan lambat.

Nah, ngomongin tadi yang kayak routing.

Terus tadi Websocket dan lain-lain.

Makanya kan muncul sih ini kan.

WinterCG kan.

Kalau di client JavaScriptnya udah ada W3C kan.

Yang mengatur web standard ya.

Apa aja yang bisa masuk web API ya?

Kalau W3C itu.

Iya.

Nah, ini juga WinterCG ini adalah tujuannya untuk interoperabilitas.

Karena masing-masing perusahaan bisa aja bikin runtime sendiri-sendiri.

Si AOS punya sendiri, si GCP punya sendiri.

Cloudflare punya sendiri, Varsal punya sendiri.

Katakanlah gitu.

Tapi ini khusus untuk JavaScript runtime.

Betul, JavaScript runtime di sisi backend kan?

Iya.

Yang maksudnya kalau tadi kepikiran runtime yang selain JavaScript.

Oh, enggak, enggak.

Khusus JavaScript runtime.

HP mana, terus kemudian Python mana.

Tidakasis.

Oh, itu besar sekali.

Iya, itu udah beda kasus.

Jadi ini adalah konsorsium yang membuat kayak menyempakati.

Menyempakati.

Dan ngomongin soal yang tadi, apa tuh?

Yang ini salah satunya.

Kok enggak ada Node.js Foundation?

Kan dia Linux Foundation sekarang ya.

Tidak ada juga?

Tidak.

Di sini enggak ada foundation.

Ini company.

Ini sponsornya apa nih?

Oh, supported.

Iya, supported.

Kalau foundation kan enggak itu kan.

Update-nya coba ada enggak?

Kalau enggak ada itu paling bawah.

Bawah, bawah, bawah.

Who controls?

Tuh, enggak ada.

Under Node.js.

Oh, ada.

Members from the following organizations.

You can join here.

Oh, tuh kalau mau join.

Nah, kita juga bisa join.

Kalau seiseng itu.

Bun, enggak ada.

Bun belum?

Belum lah, kan baru.

Kalau mau join, silahkan kesini.

Gimana cara join-nya?

Oh, kanan join or leave.

Iya, itu kan sebenarnya bentuknya mailing list.

Cuma kalau kita bukan siapa-siapa ya.

Maksudnya kita cuma partisipan aja ya.

Mungkin kalau kita ngusulin feature, diiin doang.

Tapi maksudnya ini kan open.

Jadi kalau kita mau berkomunikasi, nanya-nanya,

atau cuma baca-baca ya bisa aja join.

Benar, benar, benar.

Mau tahu update-nya ya.

Berkaitan dengan WinterCG dan juga tadi,

salah satunya HTTP Routing.

Ada satu hal yang saya amati di Express.

Teman-teman di sini masih pada pakai Express, kan?

Kalau backend JavaScript.

Atau udah langsung loncat ke metapremok tadi ya?

Beberapa meta premoknya masih pakai Express ya.

Ecosistem kalau sekarang sih udah bisa.

Tapi kalau Node.js, kayaknya standard itu yang paling banyak

starter-nya, tutorial-nya.

Nah, ada yang tau kan udah berapa lama

Express versi 5 beta di devlog?

Emang berapa lama?

Berapa lama ya?

Ini mereka udah masuk versi beta kan?

Oh, nggak ada release.

Kenapa nggak ada release?

Nggak di postage.

Taks.

Apa ini baru ya?

Ini Express.com.

Oh, itu kommentasinya.

Salah, itu website-nya.

Nih, versi 4 kan.

Versi 5, teks.

5 beta 1.

Alpa 1 ya, ini tahun berapa terakhir?

2014.

Hampir 10 tahun udah.

Hampir 10 tahun belum release juga versi 5-nya.

Sekarang yang terbaru adalah beta 1.

Setahun yang lalu, kurang lebih setahun yang lalu.

Sudah cukup lama gitu.

Apakah si Express ini menjadi dipercated?

Gara-gara 1 karena meta framework tadi,

terus masing-masing pada bikin routing library sendiri,

atau ada beberapa yang lain kan, kayak Fastify.

Iya, Fastify sih yang baru.

Fastify.

Terus apa lagi yang baru ya?

Tuh ada yang nge-post tuh.

Apa dikomen?

Munculin Hono.

Hono, iya, Hono.

Ini yang mau dibahas, Hono.

Nah, yang menarik adalah dia punya penjelasan tentang web standar.

Jadi, vets kan udah web standar ya.

Request pun akan menjadi web standar.

Request dan response.

Jadi, semua runtime dan semua framework

nanti akan mempunyai request dan response yang speknya mirip.

Sehingga bisa saling bertukar middleware.

Termasuk URL, URL source params, header, itu udah standar semua.

Karena ngikutin standar web API ya.

Betul.

Request, response, object.

Iya, jadi dengan menggunakan Hono ini,

dia sudah bisa berjalan di hardware walker,

deno, ban, fastly, dan lain-lain.

Semuanya bisa.

Karena dia menggunakan standar-standar yang mungkin di express

belum standar.

Mungkin yang versi 5 akan standar, tapi jalan-jalan.

Jangan-jangan nanti harus ada express perjuangan dulu.

Nanti tiba-tiba lompat jadi 6.

Express perjuangan dulu.

Tapi express itu masih digunakan di mana-mana.

Cuman kalau yang baru-baru, mungkin project baru bisa mulai dari sini.

Karena mereka fokusnya lebih ke web standar.

Dan biasanya project ini ada service-nya.

Jadi bikin kayak hosting-nya kayaknya.

Biasanya.

Cari duitnya.

Betul, kayak deno deploy.

Boon juga nanti bakal ada.

Karena kan si deno dan boon ini,

nah ini yang membedakan juga dengan node.js kan,

deno sama boon ini adalah perusahaan.

Yang difunding pakai venture capital.

Jadi mereka harus menghasilkan uang.

Dalam jangka berapa tahun.

Harus monetisasi.

Kalau node.js, enggak.

Mereka foundation.

Jadi berdasarkan donasi.

Disponsorin.

Semua open source.

Tapi company-nya yang bergerak di belakangnya itu berbeda.

Jadi motivasinya juga berbeda.

Yang satu, gimana caranya supaya bisa cepat-cepat menghasilkan uang.

Yang satu, ya kalau ada sesuatu yang baru, ya ayo kita rembukin.

Ini bisa jalan enggak?

Compatibility-nya dipikirin dan lain-lain dipikirin semuanya.

Oke.

Nah bentar.

Cuma Holo ini framework buat full stack.

Front-end-nya bebas gitu pakai React.

Back-end. Ini back-end.

Ya sama kayak Express lah.

Front-end-nya berarti ada semacam templating.

Kayak templating language gitu.

Tapi bisa dikasih front-end sendiri.

Suka-suka.

Suka-suka.

Kalau nggak salah templating engine pun.

Mereka kayaknya ada standar.

Jadi templating engine di Express.

Kalau kita mau pakai Fastify.

Sama npm install-nya.

Sama-sama package yang sama.

Jadi kayaknya udah standar juga.

Kalau kita mau pakai, misalkan kayak mau pakai MUST-TEST, mau pakai NUNJAX.

Atau pakai apa.

Kayaknya sama-sama aja.

Oh ini TypeScript friendly.

Ini TypeScript by default.

TypeScript by default.

Dikembangkan juga pakai TypeScript.

Nggak pakai koma lagi.

Nggak enak.

Nggak pakai titik koma ya?

Titik koma, ya team titik koma.

Oke.

Terus dia ada routernya juga ya.

Routernya ini dia implement sendiri sih.

Sebenernya fungsi framework paling utama itu kayaknya.

Selain ngatur templating.

Iya ngasih cara gampang, ngasih API yang gampang.

Buat routing.

Ada ini nggak sih?

Ada yang paling susah bagi saya.

Itu scaling Node.js application ini lho.

Ada nggak sih?

Scaling ya.

Belum pernah harus scaling Node.js app sih.

Paling, paling gampang scalingnya paling gampang.

Horizontal.

Paling gampang scalingnya itu serverless.

Tidak terbatas.

Yang membatasi hanyalah kantong anda.

Tunggu man.

Duit ya.

Duit, yang membatasi duit.

Dan mau bagaimanapun Node.js ini kan single thread ya.

Jadi bukan multi thread.

Jadi kalau core servernya 100 pun tetap aja satu core yang dipakai gitu ya.

Yang bisa di scale itu berarti instansnya dibanyaki gitu ya.

Dan harus ada load balancer juga gitu kan.

Ya load balancer.

Terus juga bisa pakai teknik yang namanya clustering.

Jadi satu core itu jadi satu cluster.

Ya tetap aja di depannya ada load balancer kan.

Yang untuk ngatur traffic kemana kan.

Ya.

Mau around Robin strateginya.

Tapi intinya ada komando nya di depannya.

Entar itu engine X entar itu dari si Kubernetes punya sistem untuk load balancing.

Ya tetap aja ada si proses.

Enggak.

Kalau untuk bikin supaya si CPU core nya kepake.

Itu tekniknya namanya cluster.

Oke.

Auto scaling pakai PM2.

Oh menarik.

Bisa belajarin nanti.

Ada ya?

Agak belum ini.

Ayo Razan.

Coba nanti ya.

Karena dulu sukanya pakai supervisor jadi belum pernah pakai PM2.

Oh iya.

Cluster of node.js process can be used to multiple instance of node.js

that can distribute workloads among their application threads.

Oh.

Cluster namanya API nya.

Cluster iya.

Menarik.

Jadi kita bisa kasih tahu bahwa cluster ini kita set sebagai primary.

Terus kalau kita mau working sejumlah CPU.

Yaudah difrog aja seperti ini.

Dan itu built in di node.js nya ya.

Dia punya fasilitas kayak gitu.

Sekarang built in.

Kalau dulu kayaknya enggak.

Ini versi berapa ya terakhir?

21.

Ini 21 maksudnya dia disupport dari mulai versi berapa ya?

Kayaknya awal-awal udah sih ya.

Kayaknya.

Ini.

Oh bukan.

Salah.

Gak kelihatan nih.

Itu tadi, itu pernah stability 2.

Berarti ini sudah stable kalau di klik.

Oh salah yang kebilangannya.

Iya.

Gak ada dia udah disupport dari versi berapa.

Sejak kapan.

Bisa ganti ya versi nya?

Oh ada resolution paling atas.

Paling atas.

Ini sudah di.

Kanan atas ya.

Coba 18 aja gak?

Extreme ngecheck yang 10 sih.

Oh udah ada.

Sudah ada.

Fesi 4.

Udah ada.

Oh dari awal berarti.

Sudah dipikirkan oleh dia.

Karena emang.

Di server.

Kita gak ada yang tau.

Oke.

Itulah gunanya.

Box ini.

Oke.

Itu ada tanya dari Maulana.

Cluster bisa untuk handle

conference juga kan?

Kalau dari bahasa ini yes.

Karena tadi bisa

be forking

trade nya kan ya.

Ya tapi

hati-hati kalau konkurrensi itu

ada pengaruh ke global variable

atau global state kan.

Kejar-kejaran.

Ya jadi harus aplikasinya

didesign sebagai

se apa ya.

Centralize.

Desentralize.

Jadi worker itu bekerja sendiri

dia menghasilkan apa terus yang si

primary ini

yang machine yang lain gitu.

Jadi maksudnya misalkan ada perhitungan apa

dilempar ke primary.

Primary yang ngitung.

Jadi pokoknya arsitekturnya

harus dipikirkan lah.

Tiba-tiba aplikasi Node.js

yang biasa terus tiba-tiba

kita clustering itu belum tentu

bisa

di cluster dan bisa jalan konkurrensi.

Dengan benar ya.

Gak ada bugs apa namanya

misalnya kejar-kejaran itu.

Rescondition.

Wah Cloudflare

murah-murah ya.

Saya pakai Cloudflare yang gratis buat itu.

Buat apa namanya?

Let's Encrypt sama

sama security

biar gak dididos.

Iya.

Sama cache.

Iya.

Ada DP3.

Sama nya banyak banget.

Iya.

Scaling rentan

diomalin manajemen.

Oh iya.

Nah kan biasanya

kalau scaling naik

berarti kan traffic naik.

Sales-nya naik.

Cuan naik kan biasanya.

Kan kalau manajemen kan

pengennya, kalau bisa

costnya tetap

cost rendah tapi income naik.

Iya.

Masih jadi manajemennya.

Ups.

Iya dong.

Kan Prinsip Ekonomi.

Gemstek. Nah Gemstek ini

katanya mati ya.

Gemstek.

Belum, baru mau naik gitu.

Tiba-tiba hilang ya.

Ah gak ada bunyinya dikit, dikatain mati sih.

Iya.

Biasa.

Gara-gara itu kan, gara-gara Gatsby kan.

Gatsby yang apa yang menggebar-geborkan

Gemstek kan. Terus abis itu Gatsby-nya

juga ya

karena winter-winter

gini juga ya salah satu

yang kena juga kan.

Dibilis sama Netlify abis itu

gak ini kan, gak dikembangkan.

Tapi ada kok akhirnya Gatsby 5 itu

dia sudah bikin Gatsby Cloud.

Oh ya?

Iya.

Gatsby Cloud itu caranya dia cari duit.

Ya cari duit.

Semuanya gitu ya.

Orang bikin framework

udah kebaca tuh. Bentar lagi ada hostingnya nih.

Bentar lagi ada hostingnya.

Atau diakuisisi.

Atau diakuisisi.

Iya, iya, iya.

DemiX tuh dibeli. Apa?

Orangnya di hire siapa?

Shopify.

Iya, Shopify.

Shopify sendiri kan udah ada framework kan mereka kan.

Sebenarnya kan.

Based on React juga kan.

Cuma mungkin mau ngambil

ekotisi para creator-nya

DemiX ya.

GGS atau apa namanya?

Gumpas.

Status generator, bukan?

Lupa namanya. Ada?

Iya, pernah denger. Cuma lupa apa.

Ya gitu deh. Kurang berkenal.

Iya bener. Hydrogen.

Oh iya.

Hydrogen, betul.

Nah dia.

Nanti si hydrogen itu mau

dihitungin pake teknologinya Remix.

Headless in half the time.

Ini based on React juga ya.

Sekarang website keren-keren ya.

Nah bentar ngomongin React.

Jadi inget nih. Apa?

React kan sekarang lagi hype banget.

React Server Component ya.

Ya udah. Sudah jadi.

Udah jadi?

Udah stable.

Oh udah stable.

Udah gak ikutin.

Gue dari hype dan seneng banget.

Sampai bosen sendiri.

Ah sudahlah.

Itu konsepnya gimana sih?

React Server Component?

Server render bukan?

Ya iya. Sebetulnya

itu kayak ngolah dari

yang udah dilakukan sama next ya.

As gets be. Cuma itu kayak jadi

teknologinya React aja.

Sama dia punya cara untuk compare

pas. Jadi kan pas di server

ya udah. Kayak di render kan.

Jadi HTML string. Blah-blah-blah.

Nah by default itu kayak

bisa komunikasi dengan pas udah di

client side. Dia nentuin.

Bagian mana aja sih yang perlu dihydrate.

Perlu gak dihydrate. Nah itu kayak

ada cara deteksinya.

Oh oke.

Jadi dia kayak mau bikin

standarisasi untuk

meta framework.

Standarisasi

behavior apa? SSR.

SSR yang dihydrate.

Kayak di streamline lah.

Nah ini kan berarti

bakal kayak resurgence kayak balik

lagi naikin

atau apa sih kayak memacu

ekosistem si apa?

JavaScript runtime kan.

Not.js lah.

Deno, Boon. Berarti kan kayak bakal disuruh

kerja keras lagi kan. Ntar

memproses si React server

komponen itu.

Ya, ya, ya, ya.

Benar, benar, benar.

Nah stencil.

Apa nih stencil?

Itu web komponen.

Oh komponen ya stencil ya?

Buatannya

si

apa?

Ionic apa ya?

Ionic bukan ya? Ionic kan?

Iya project

by Ionic.

Ionic ini jualannya apa?

Hosting juga?

Kita bahas ini kan.

Kita pernah bahas ininya

tampilan ini tuh kayak

pakai apa kemarin? Oh docusaurus.

Iya pas kita bahas.

Oh ini docusaurus ya?

Iya.

Doxnya.

Iya, iya, iya.

Itu menarik juga tuh

buatnya di topik berikutnya ya.

Ada yang satu lagi

yang kalian mungkin. Kita pernah

kita pernah bahas web komponen nih. Cuma lupa

bahas stencil atau enggak. Gimana,

Gimana, Ethan? Benar, benar, benar.

Oh belum bahas. Ada satu lagi runtime

runtime yang

untuk JavaScript yang kalian

mungkin gak kepikiran pernah

kayak atau pernah cuma

denger-denger. Pernah kebayang gak

dan jalanin JavaScript runtime

tapi di PHP?

Nah.

Gimana caranya?

Mas Hab mana lagi?

Serius.

Namanya, namanya pakai

extension, extensionnya namanya

PHP V8.

Cari dia PHP V8.

PHP V8?

Iya, PHP V8.

Jadi

jalanin JavaScript

di dalam PHP.

Mana? PHP V8.

Ini versi 8.

Bukan, bukan, ada kok bawahnya dikit.

PHP -V8.

Ini?

Yes, PHJS.

That's it, that's it, that's it.

Jadi jalanin

PHP, eh jalanin

JavaScript dengan menggunakan

JavaScript Engine. Nanti

hasil, hasil

tetap request-response, nanti

balikannya balik ke PHP.

Anggap aja dia

Apache plus Tomcat. Nah.

Apache plus

Tomcat. Iya.

Anggap aja bahasanya seperti itu.

Jadi Tomcat kan jalanin Java ya.

Iya.

Jadi PHP-nya jalanin

JavaScript, terus nanti

kembali ke

response-nya dibalikin

ke PHP. Dia evaluate

gitu. Tolong evaluate ini

hasilnya dibalikin. Oke. Kayak serverless

ya. Function yang

dijalani gitu ya.

Tapi makes sense sih. Maksudnya

si

apa namanya? Si PHP ini kan

jalan sebagai

tadinya kan sebagai script dari

C atau

Apache kan.

Sedangkan V8

C++ kan gitu.

Ya bisa aja sebenarnya.

Ini C-C ini apa?

.cc ini bahasa apa nih?

C

C

C

C++ atau C++

kayaknya C++ ya.

Iya.

Benar juga. Tapi kenapa sih

buat apa? Kenapa?

Hah? Buat apa? Buat apa?

Kenapa harus banget seperti server.

Ya. Case-nya apa? Untuk

case ini, untuk case apa?

Case seperti apa?

Contohnya dulu pernah bikin

bikin

saya

pernah

bantuin dulu ya, Pak.

Itu

case-nya itu menjalankan

React Application tetapi

di WordPress.

Ayalah.

Di WordPress.

Jadi tampilannya tetap

tampilannya itu React Application.

Tampilan depannya

di Application, tapi server saya

rendering tetapi semuanya di

render di server.

server saya rendering.

Server saya.

Iya.

Oke.

Tapi tidak WordPress.

Ya boleh.

Oke. Spesifik sekali ya.

Needs banget ya.

Tidak perlu pakai

Node.js kan. Jadi

langsung, aplikasinya dibuild

pakai React.

Kemudian,

jalannya di WordPress. Jadi React

aplikasi, sorry.

Front-end-nya itu jadi temanya

WordPress. Kemudian

jalannya untuk

mengeksekusinya pakai VX.js.

Kemudian

tampilannya, ya udah langsung

jadi

server saya rendering biasa.

Tapi di selanjutnya

sudah jadi

single-pick application.

Ribet sekali.

Ya rata-rata.

Orang tuh, kalau pakai

WordPress kayak gitu kan React-nya front-end

yang client-side rendered.

Itu pergunaan yang

orang pada umumnya. Atau kalau

ngotot banget harus pakai React

dan server rendered, ya udah

dipisah

back-end-front-end.

Ya udah bikin

Reactful Stack App yang mengkonsum

dari API WordPress. Itu

manusia pada umumnya kayak gitu ya.

Iya.

Manusia pada umumnya.

Oke.

Topik terakhir sebelum kita

Udahan. Gimana?

Seru juga. Maksudnya jadi tahu bahwa

bisa kayak gitu kalau mau.

Iya. Ternyata bisa

kayak muter-muter bolak-balik gitu ya.

Oke. Topik terakhir.

Ivan ada yang mau ditambahin?

Enggak. Enggak.

Oke.

Lanjut. Lanjut.

Oke. Topik terakhir nih.

Sebelum kita Udahan, ada apa?

Ada tambahan kalau temen-temen

mau nonton langsung.

Mau dengerin langsung.

Podcast yang menginspirasi

episode ini.

Ada di Jazz Party

episode 294.

Ya. Temen-temen bisa dengerin

langsung. Banyak sekali

pernyataan-pernyataan

kontroversi ya.

Ini lucu-lucu sih. Karena apa?

Formatnya juga ngobrol.

Biasanya tamunya itu

Matthew sama James

adalah menternya Node.js.

Mereka bisa menjelaskan kenapa Node.js itu

berjalan seolah-olah lambat

dibandingkan BUN.js dan lain-lain. Dan ada

beberapa hal yang

menurut mereka

kurang tepat untuk saat ini.

Contohnya BUN.js. Disini

BUN.js itu mereka

menghighlight bahwa

drop-in replacement.

Drop-in replacement. Drop-in ini maksudnya adalah

kita...

langsung diganti, aman semua.

Sesederhana dari Node spasi

server.js menjadi

BUN spasi server.js.

Untuk saat ini

si BUN.js ini belum sampai

ke arah sana. Compatibilitinya

belum 100%.

Jadi walaupun api-apinya

didukung. Itu kan argumenya

alasannya adalah

implement hundreds of Node.js

web api, fs, path,

buffer, segala macem.

Tapi maksudnya penggunaannya

kan macem-macem banget. Penggunaannya

macem-macem. Terus jenis environmentnya

jenis servernya

juga macem-macem.

Di podcast itu kan si

maintainer Node.jsnya menjelaskan

kasus-kasus sana yang

belum tentu bisa atau

masih harus diperiksa, masih harus

diwaspadai. Apakah

segampang itu dijamin aman

kalau Node.js beneran langsung diganti

begitu aja sama BUN?

Iya, betul. Jadi

walaupun mereka sudah

mencoba tapi belum ke arah sana.

Memang tujuannya nanti ke arah sana. Mungkin akan

tercapai dalam beberapa waktu ke depan

tapi belum sekarang. Jadi kalau misalkan

teman-teman mengikutin hype, "Wah kita

ke BUN gini-gini" terus langsung bisa

drop in replacement, gak perlu migrasi

blablabla. Belum tentu.

Mungkin Node.jsnya iya.

Apalagi kalau aplikasi

Hello World ya udah pasti bisa.

Tapi kalau yang udah ada

ketergantungan, dependensi sana-sini

belum tentu bisa jalan. Misalkan

teman-teman pakai ORM misalkan.

ORMnya apa? Belum tentu bisa

didukung oleh BUN.js juga.

Begitu jalan ya taunya error.

Jadi itu

ya ini harus

dikonsiderasi sebagai

sesuatu yang mungkin

belum sampai saat ini. Menurut

si Matteo ini

yang ada di podcast, dia bilang

justru Deno

lebih kompatibel dibandingkan

BUN. Karena memang secara umur juga

Deno kan lebih dulu ya.

Jadi kompatibilitasnya udah lebih

besar lah.

Terus satu lagi, kenapa

BUN ini bisa cepat?

Karena ada

trade-off-nya security

ya sepertinya salah satu ini.

Ya ada trade-off-nya. Mungkin

satu karena dia pakai engine

yang berbeda. Kedua karena ada trade-off

security. Jadi harus

hati-hati juga.

Dan kita gak tahu security yang

dimaksud apa gitu ya.

Karena kayaknya hanya orang yang

tahu dalemannya di Node.js bisa tahu

security yang di BUN.js ini

belum selengkap yang ada di Node.js.

Sedangkan Node.js

sendiri sering disebut kurang secure.

Apalagi BUN.

Kita gak tahu ya.

Jadi

kembali lagi harus dipikirkan.

Kalau ada sesuatu yang lebih cepat pasti ada

trade-off-nya. Jadi teman-teman harus

berpikir ulang.

Dan monitornya bisa jalan di

Unix. Maksudnya Linux.

Di Windows belum.

Ya Windows belum bisa.

Windows native belum bisa. Tapi kalau

USL ya udah pasti bisa lah. Dia pakai

Docker itu kan.

Jadi

kalau Node.js bisa jalan hampir di

semua mesin. Bahkan sampai

IoT, embedded

system dan lain-lain. Kalo BUN

ini baru sebatas

di mungkin development

mesin kali ya.

Yang biasa developer pakai.

Hanya sekedar untuk install dan

transfer aja sih. Eh, runner aja sih.

Saya lakukan.

Iya.

Oh salah satu use case yang

itu apa? Yang disebut

di podcast itu. BUN itu

kayak BUN dan DENO mungkin yang baru-baru

itu bagus buat memproses

kayak Rust gitu yang udah gak

pakai JavaScript malah.

Bisa kan ya kayaknya.

Masa?

Dia bisa jalani Rust gitu?

Iya.

Si BUN kalo gak salah.

Bentar.

Seri aja.

Kalo DENO dibangun

dengan menggunakan Rust.

Kalo BUN ini dibangun menggunakan

bahasa baru yang namanya Zik.

Gitu lagi tuh bahasanya.

Iya satu level lah

sama si dan si ++ sama Rust juga.

Zik.

Zik Lang.

Zik Lang.

Kemarin saya...

tuh Firebase belum bisa.

Hah Firebase

belum bisa.

Triggernya

cuman karena marketingnya BUN.

BUN marketingnya gede-gedean

ya karena itu tadi.

Dia didanai oleh investor.

Harus untung.

Iya harus untung dia bisa bakar

duit gitu.

Emang kalo runtime

gitu dia jualan hosting ya?

Berarti? Biasanya.

Jadi mungkin

kayak Next.js lah. Next.js bisa

jalan dimanapun. Tapi yang paling optimis

di Versal kan. Kayaknya gampang banget

tinggal Versal deploy udah gitu kan.

Segampang itu.

Yang dijual itu.

Terus sedikit-sedikit tambahin kayak

image. Image optimization

udah otomatis. Ada

ada komponennya

supaya

kalo dijalani di Versal

bisa lebih optimis untuk

serving gambar gitu kan.

Dan supaya makan runtime kan

supaya kita mengkonsum

produknya mereka.

Nah itu juga ada hottake-nya disana

nanti. Kalo temen-temen ngeriin

podcast jazz party, disitu ada hottake

seperti itu ya.

Itu menarik. Karena jualan hosting

gimana caranya kan bayarnya per jam

kan? Gimana caranya supaya bisa

apa

mesinnya jalan lebih lama supaya

billing-nya naik.

Nah generate image.

Generate image sih server

runtime-nya mereka.

Bentar lagi mereka bisa convert video.

Ya gitu lah. Jadi

ya namanya orang cari duit ya.

Gapapa asal kita tau

bisnis mobil mereka apa.

Terus kebutuhan

kita gimana? Budgetnya berapa?

Nah akan kita bisa menpertimbangkan

itu urtit atau engga?

Iya. Bahkan

Next.js sendiri kalo mau

di deploy ke tempat lain

itu agak sulit.

Ada beberapa hal yang harus difix.

Makanya ada yang bikin Open Next kan.

Kita udah sempet bahas juga kan.

Jadi dari

Next.js build output bisa di convert ke

package yang bisa di deploy ke mana saja.

Bukan

hanya ke Quercel.

Itu.

Tapi bagusnya, gimana pun, maksudnya

tetep ini positifnya open source

ekosistem ya. Betul.

Apa dari pihak Quercel

develop Next.js open source

tetep mereka

punya motivasi khusus

buat cari duit ya. Namanya mereka

bisnis. Tapi di sisi lain

kita juga bebas

ngulik kodenya ya bisa

di fork sesuai kebutuhan kita.

Betul. Nah biasanya

Next image yang jadi masalah. Ya iya.

Itu kan property nya mereka.

Ini nya mereka.

Dalemannya mereka. Jadi ya

itu yang mereka

apa, mereka

iniin. Ya tetap menang

cloud computing ya. Karena

si Quercel kan pakai itu.

Ya, Quercel mau Netlify semua

kan langsung lambda nya

AWS. Iya, pakai AWS

atau pakai GCP atau yang lain.

Kita gak tahu. Tapi

ditambahin. Capsule dimana ya?

AWS.

AWS ya.

GCP gak ada yang bikin ya.

Maksudnya apa?

Produk turunan.

Produk turunan yang BX nya

lebih friendly.

Apa ya? Gak tahu.

Belum ketemu.

Firebase.

Supabase.

Next.js

selain ke serverless juga

semudah npm run build, npm run start

iya. Mudah dia. Gampang.

Sengaja dipermudah.

Terus abis itu kita

bisa deploy dengan menggunakan

apa? Environment yang berbeda.

Setiap kali ada pull

request terus dia bikinin

instansi sendiri ya kan?

CI/CD dan lain-lain.

Ya dipermudah sama mereka. Karena

mereka jualannya itu.

Kalau susah gak ada yang

pakai. Kalau susah ya

pakai AWS saja silahkan.

Pakai GCP saja silahkan. Gitu kan.

Apa?

Nyalain VM sendiri. Lebih murah kan.

Gitu.

Kalau yang gak mau report ya

kita pakai itu.

Oke.

Ada lagi yang mau dibahas?

Belum dulu.

Belum.

Ivan lagi mikir.

Iya, lagi mikir.

Apa namanya

kayak

tetap kembali ke

coba tanya diri kalian.

Bisa gak sih kalau bikin

application dari Node

tanpa pakai yang

service-service itu bisa deploy sendiri gak sih?

Gitu.

Karena di localhost jalan. Bisa gak

jalanin di server gitu kan?

Ya biasanya yang

apa developer jaman now

sih pakainya docker ya.

Lebih gampang kan.

Gak apa-apa juga.

Gak apa-apa juga docker. Tapi kan

meskipun naikin docker kan di

naikin ke hostingannya.

Tidak semudah heroku ya.

Iya.

Hosting harus install

docker

one time lagi

kan? Betul.

Harus somewhere

di remote server sana

harus bisa ngejalanin docker.

Iya. Saya pernah

coba manual.

Jadi gak pakai service apa-apa, pakai VM.

Jadi stepnya

adalah kita jalanin

apa? Kita pastikan docker

di local udah bisa jalan.

Kemudian kita ke server.

Kita install docker, install git.

Terus abis itu

git pull.

Kemudian udah docker

build. Abis itu

udah bisa jalan. Compose up.

Ya. Compose up.

Gak sebanyak kalau kita

bener-bener manual ya.

Proses kesulitannya

prosesnya di awal. Pada saat

kita develop di local.

Kalau di localnya udah jalan lancar, harusnya di

servernya juga jalan lancar.

Kan justru selling pointnya docker, ya udah.

Ya.

Ya udah mesinnya aja dibawa gitu kan.

Tapi sebelum itu berarti

nah ini topik kapan-kapan lagi lah.

Udah ngobrolin

server environment ya.

Deployment.

Yang mana sebelum docker, apa yang

dilakukan oleh developer?

Kita bisa sekali lagi

bisa invite

anak-anak GDI cloud.

Oh iya.

Deployment. Siap-siap.

Deployment aplikasi web ya.

Ya.

Bagaimana cara deployment aplikasi web?

Wah, mantap.

Oh, ada yang pernah coba

s-processing di Node.js seperti

Gaussian Blur di Python.

Kalau nggak salah namanya SHARP, bukan?

SHARP. Ada. Library BS,

SHARP, iya.

Itu kayaknya, enggak, SHARP

aja udah.

Jadi TV nanti, nama TV, enggak?

Oh, GitHub SHARP.

Kalau di PHP, saya tahu

nama IMAGIC.

Oh iya, ada IMAGIC kan

sebenarnya kan.

IMAGIC itu kan dari

apa ya? Di CLI kan unik sih.

Di CLI iya, di server.

Iya, itu dari GNU kan.

Iya.

Ini kan, ini. Ini juga

sama. Ini driver-nya

doang.

Tapi dia install IMAGIC sama

graphic magic.

Faster than using the quickest

IMAGIC. Lebih cepat kata dia.

Oh bukan ya? Oke, pakai ini ya.

Vips.

V-I-P-S. Format.

Ada enggak blur?

Ada lah, harusnya ada.

Apa ini?

Nggak ada. Nggak ada filter.

Blur.

Oh ada.

Operation.

Tadi nggak ngeliat.

Nih.

Blur.

Ini kah yang dicari?

Gaussian Blur.

Kayaknya Gatsby

Image, Next Image, semua

pakai ini deh. Iya.

Tapi Sharp

mau install

di server ada

picky dia.

Kadang-kadang bisa, kadang-kadang nggak. NPM misal

Sharp gitu. Dia kan harus install

di yang ininya kan.

Package utamanya kan.

Mana tadi? Nah ini.

Belum tentu bisa jalan

di server, di lokal

kita. Kadang-kadang installasinya

gagal. Kalo dependency-nya nggak.

Ini kan native

native

apa ya, native package kan.

Mana paginya?

Tuh, C. C language

apa, library kayak

lib UV

kayak V8 gitu.

Jadi belum tentu bisa di install

di server atau di lokal

kita. Kadang-kadang suka error.

Kecuali kalo pakai docker

tadi ya.

Pernah pakai

deno compile.

Lancar.

Oke.

Pake docker dan note nggak yakin

sekali coba bisa.

Iya.

Nggak yakin sekali langsung bisa gitu ya.

Nggak apa-apa, yang penting bisa selesai.

Oke, kalo gitu.

Ditunggu selesai depan.

Terima kasih banyak

buat yang sudah

diskusi bareng juga.

Sampai jumpa lagi

minggu depan dengan topic yang berbeda

tentunya.

Jangan lupa kalo ada yang mau sampaikan

saran, topic

atau. Sanain.

Ini loh.

Kalian tuh begini.

Sanain.

Silahkan kesanain

slash ngobrolin web. Tulis aja

"Saya mau undang siapa?" gitu.

Mark Zuckerberg kok nggak bisa.

Ngajukan diri sendiri

juga boleh. Undang saya.

Nanti saya pakai

AR-nya aja.

Iya, tadi ada yang nge-tweet juga

katanya kalo di

waktu Indonesia Timur

udah malem an, mulainya jam 10.

Udah baru tidur katanya gitu.

Nantilah, terima kasih ya.

Udah kasih masukan.

Kita doa pikirin ya.

Terima kasih. Ini pagi.

Pagi daerah mana ini?

Semangat pagi.

Indonesia bagian.

San Francisco.

Oke, kalo gitu.

Kita ketemu lagi

Selasa depan.

Di jam yang sama, 8 malam.

Kalo tidak ada perubahan, mudah-mudahan.

Sampai berjumpa lagi

hari Selasa.

Bye.

Deskripsi asli dari YouTube

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Episode Terkait

Bagikan:

Suka episode ini?

Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.

Pilih Cara Langganan

Memuat komentar dari GitHub Discussions...

Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .