Jangan gunakan NodeJS sebelum nonton video ini!
Ringkasan Episode
Bantu KoreksiEpisode 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
1 Apr 2025
Ngobrolin Lebaran
Episode ini adalah ucapan Selamat Idul Fitri dari tim Ngobrolin WEB. Eka, Ivan, dan Rizah memberikan salam Lebaran denga...
9 Okt 2024
Ngobrolin Deno
Episode ini membahas tentang Deno 2, runtime JavaScript/TypeScript alternatif Node.js yang dibuat oleh Ryan Dahl (pencip...
9 Agu 2023
Ngobrolin URL
Episode ini bagian dari niat baru mereka: menyelipkan topik yang benar-benar mendasar setidaknya sebulan sekali, alih-al...
Suka episode ini?
Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.
Memuat komentar dari GitHub Discussions...
Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .