EP 19

Ngobrolin Metode Rendering - Ngobrolin WEB ep19

Bagikan:

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 ----------------------------------------------------------------------------------- Bergabung menjadi anggota elit di kanal ini: https://www.youtube.com/channel/UCHhAlFGFCGgIusQkQIqJLYw/join Donasi dapat meningkatkan kualitas kanal ini: 💰 https://karyakarsa.com/rizafahmi/tip 💸 https://sawer Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Transkrip Bantu Koreksi

0:00Udah nih mulai, gak ada yang mau mulai nih.

0:05Halo, selamat malam, selamat hari selasa, selasa malam, waktunya ngobrolin web.

0:18Ini sebagai pengingat ya mungkin ada teman-teman yang baru, kalo yang lama pasti udah tau.

0:23Ini adalah acara apa ini, ngobrolin web itu? Ada yang bisa menjelaskan mungkin?

0:28Wah, kita sudah ngobrol santai tentang teknologi web.

0:33Udah 19 episode, ngobrolin web, gak habis-habis karena ternyata skop cakupan teknologi web itu besar sekali ya.

0:45Betul, betul.

0:46Yang mana-mana gitu kan.

0:47Gak habis-habis.

0:48Gak habis-habis dan masih banyak juga bahasan-bahasan yang belum kita keluarkan dan banyak juga topik-topik yang sudah diberikan oleh teman-teman di rumah dan belum kita, belum sempat kita bahas.

1:06Jadi tenang aja, kita masih banyak-banyak persengetaan di rumah untuk kita bahas satu persatu.

1:12Tapi juga kalo misalkan teman-teman kepikiran ada ide menarik topik apa, bisa langsung ke bit.ly/ngobrolinweb.

1:22Bisa juga kalo mau liat topik-topik sebelumnya, liat aja video-video kita yang sebelumnya.

1:27Itu kita bahasnya sudah banyak sekali mulai dari apa tuh, fonts, CSS, iron architecture, image, event loop, service worker.

1:42Bisa komen juga di videonya atau di yang tadi bit.ly/ngobrolinweb.

1:51Seperti biasa, masih ditemani oleh kita bertiga, ada Eka, ada Ivan, dan ada saya Riza. Dan malam hari ini, sayangnya malam hari ini kita gak live.

2:00Jadi kita rekam karena Eka gak bisa hari Selasa.

2:07Karena satu dan lain kali.

2:09Tapi kita commit, kita harus tetap rilis, tetap rilis walaupun gak live.

2:15Walaupun gak live, kita akan rilis episode ini di Selasa Malam juga jam 8 waktu Indonesia Barat.

2:22Jadi kita pantenin juga nanti komen-komennya pasti kita akan baca.

2:26Jadi teman-teman bisa komen dan mudah-mudahan kita bisa diskusikan pada saat nanti live di beberapa episode ke depan.

2:34Oke, kita langsung aja mulai malam hari ini kita akan membahas apa nih?

2:38Ini salah satu request juga yang paling awal dari episode-episode awal nih di Slido-nya tuh udah ada request topik ini.

2:49Cuma karena skopnya agak luas ya, macem-macem kita rangkum jadi satu istilah yaitu rendering method.

2:57Atau methodnya rendering, ditermain doang gitu.

3:01Rendering itu apa ya?

3:03Apa render?

3:05Cara untuk menampilkan di layar.

3:13Gak harus di layar ya, rendering tuh bisa server-side juga kan, nah itu nanti kita lihat.

Lihat transkrip lengkap

3:20Oke, nah sebenarnya yang bisa disitu.

3:24Ada nih artinya proses menghasilkan citra dari sebuah model.

3:30Citra kan image kan?

3:35Render itu bahasa dari itu kali, artisistektur, artisistektur.

3:38Jadi kalau misalnya sudah dibikin desainnya, terus dirender, jadi tentu rumahnya gitu loh.

3:44Jadi kayaknya dianggil dari istilah itu.

3:48Iya, kalau awalnya walaupun tidak terlalu teknis, menampilkan isi halaman web.

3:55Sebenarnya topik yang disajakan sama salah satu penonton, sama teman-teman

4:02adalah sebenarnya dia mempertanyakan, menanyakan tentang client side rendering,

4:09server side rendering, hydration dan lain-lain, static side rendering.

4:15Mungkin teman-teman juga sering bingung karena singkatan itu banyak banget ya, ada SSR, SSG, CSR.

4:22CSR banyak ya.

4:26Dan dulu banget nih salah satu hal yang paling nyebelin, dulu pas pertama kali belajar webdev,

4:35itu kan yang ngetrend lagi SSR versus SSG.

4:40Nah, asumsi kan sama-sama depannya SS tuh, kirain sama singkatannya.

4:44Tahunya SSR dan SSG itu singkatan SS-nya mengacu ke hal yang sepenuhnya berbeda, itu nyebelin banget sih.

4:52Ada satu lagi SSG itu apa?

4:55Sambel SS.

4:57Special sambel ya.

4:59Ada juga loh di luar kota.

5:02Nah, SSG itu apa sih static side generation.

5:09Sementara SSR itu server side rendering yang ada hubungannya.

5:13Kebetulan aja depannya sama-sama SS.

5:17Nah, jangan sampai terjebak cuma ngapalin atau stuck di singkatan-singkatan itu.

5:26Cuma kita sekarang nih pengen lihat dari awal sejarahnya rendering di web itu gimana sih

5:32sampai bisa jadi ada banyak banget gitu yang kadang definisinya dan bahkan penggunaannya overlap ya.

5:38Bertumpuk-tumpuknya bisa berubah-ubah, bisa pakai beberapa cara sekaligus.

5:45Mulainya dari mana nih sekarang?

5:48Oke, kita bahas tentang perjalanan web dulu aja kali ya.

5:54Jadi kan di awal itu seperti yang teman-teman tahu atau mungkin ada yang belum tahu.

5:58HTML, CSS, dan JavaScript pada dasarnya di awalnya itu adalah dokumen statis gitu ya.

6:06Isinya HTML, ada outarnya atau link atau anchor gitu kan, diklik ke dokumen kedua.

6:13Dokumen kedua dilink ke dokumen ketiga dan seterusnya.

6:17Itu static semuanya, nggak ada sesuatu yang berubah.

6:21Misalkan artikel dan lain-lain itu ditulis manual semuanya, diketik ya.

6:24Artikel satu, artikel dua, artikel tiga, dan seterusnya.

6:28Terus kemudian berkembang, aplikasi web berkembang.

6:33Belum aplikasi web, dulu sebutannya kan web page atau website.

6:37Halaman web, jadi dokumen ya.

6:40Jadi titik beratnya pada dokumen yang saling terhubung satu sama lain ya.

6:45Nah itu yang tadi dia bilang, link, ngeklik satu link bisa pindah ke dokumen lain atau halaman lain.

6:51Jadi dulu 30 tahun lalu ternyata belum ada teknologi yang seperti itu yang terbuka buat masyarakat luas.

6:59Cuma dulu jaringan aja, misalnya jaringan di kampus atau institusi.

7:04Cuma belum ada jaringan seperti itu untuk masyarakat luas.

7:07Jadi presentasinya dokumen, terus image.

7:11Kalau pun ngeklik image, image-nya dulu belum ada di dalam halaman ya.

7:15Kayak cuma buka file, jadi file dokumen atau file image.

7:20- Jadi bisa dibilang. - Sudah ada itu juga kan, standarisasi yang mereka buat itu kan makanya disebut markup language-nya itu kan ya.

7:29Jadi dari kodenya itu disebut markup ya.

7:34Markup itu makanya HTML, hypertext markup language.

7:38Temannya yang lain ya, ada juga XML, ada juga apa lagi itu, yang lain lah.

7:46Dan markup language lainnya ya.

7:51Banyak. Kebetulan yang terkenal itu yang HTML, yang hypertext-nya itu.

7:56Ya, ditandai dengan ada tag pembuka dan tag penutup biasanya ya.

8:01Walaupun ada beberapa yang safe closing kan, kayak image, misalkan nggak perlu ditutup.

8:07Jadi kombinasinya lah. Nah, dari sana ternyata dokumen-dokumen ini dikumpulin udah cukup banyak.

8:17File text-nya lama-lama numpuk banyak dan sulit di-manage.

8:20Kalau misalnya kita satu website ada 20 halaman, misalnya ada yang diganti sedikit,

8:27bayangin footernya misalnya 20 harus diubah semua satu bersatu.

8:32Jadi, bisa dibilang awalnya sejarahnya kan dulu sepenuhnya static file status biasa.

8:41Nah, ini bentuknya kayak gini nih, kayak gini doang nih. Halaman web pertama.

8:46Oh, ini halaman web pertama nih. Sampai sekarang masih bisa dibuka kerennya.

8:50Masih bisa dibuka dan berfungsi.

8:55Iya, kita bisa lihat isinya benar-benar statis dan masih menggunakan ini, apa?

9:02Rupesar semua kayak orang marah-marah.

9:04Itu HTML3 ya, terakhir pakai Ruf Kapital kalau nggak salah.

9:09Iya, ini, apa namanya? Bisa diklik menuju ke halaman sebelumnya.

9:17Halaman ini, halaman berikutnya atau dokumen-dokumen yang kita mau.

9:23Tapi kita nggak bisa nggak ada itu, nggak ada navigasinya.

9:29Mau balik gimana? Kita pakai back button.

9:31Iya, ini masih sederhana sekali gitu kan.

9:35Kalau misalkan nanti katakanlah kita mau update nih, mau tambahin "About Us" misalkan.

9:40Ya, kita harus ketik manual di Text Editor gitu.

9:44Ya, itu adalah pertama kali HTML dan mungkin CSS setelah ini ya.

9:50Jadi untuk stylingnya itu diciptakan dan orang bisa langsung mengakses secara statik seperti ini.

9:58Jadi nama file dan nama extensionnya yaitu HTML.

10:02Iya, sama kayak file image yang misalnya kita punya sekarang di file system atau file blablabla.txt, blablabla.html.

10:10Ya, beneran yang disimpan di server adalah file statisnya.

10:14Karena lama-lama pusing akhirnya dibuat teknologi server side ya.

10:21Biasanya kan diindeks dulu kan, wah, si ini punya artikel ini, si itu punya artikel itu.

10:27Nah, muncul layanan-layanan seperti kalau dulu Yahoo itu dia indexing si halaman web yang tersedia public secara publik gitu kan.

10:37Nah, orang capek tuh lama-lama liat index itu kan kayak liat buku telepon kan. Harus kita cari A sampai Z gitu kan.

10:44- Yellow Pages lah. - Iya, Yellow Pages.

10:46Kayak kita LS di Unix ya. Maksudnya dulu masih, mindsetnya tuh masih kayak file system banget ya.

10:54- Karena sejarahnya emang statis. - Iya, jadi betul.

10:57Iya, setelah itu baru muncul mesin pencari.

11:00Jadi orang nggak perlu cari dari A sampai Z indexing kayak gitu, jadi mesin pencari.

11:05Nah, setelah itu baru berkembang lagi kebutuhan apa?

11:10Kebutuhan dokumen atau aplikasi web, bukan aplikasi, masih halaman web ini itu butuh lebih dinamis.

11:18Iya, butuh, misalkan saya punya dua artikel awalnya.

11:22Terus saya menulis artikel ketiga, masa saya harus menulis manual, tambahin di navigasi, tambahin di halaman yang ini.

11:29- Header footer, layout. - Iya, header footer dan lain-lain gitu kan, capek akhirnya.

11:36Kita minta tolong komputer buat rendering on the fly.

11:40Tapi Duh, cuma bisa di server site ya?

11:44Server site, jadi di server dia akan mengenerate, setiap ada permintaan, saya minta halaman index dong, index.html.

11:53Dia akan mengambil halaman index, terus dia akan mengenerate hal-hal yang dinamis.

11:59Misalkan artikelnya yang dua, yang tadinya dua, kita akses besoknya menjadi tiga, dan seterusnya dan seterusnya.

12:05- Pak, pakai semacam parsial ya namanya Duh. - Betul.

12:08Namanya server site scripting. Yang paling pertama itu dulu server site scripting itu pakainya Perl.

12:15Perl, TGI, common gateway interface.

12:19- Tidak nyamanin. - Tidak ngalamin juga sih, cuma tahu aja.

12:24- Perl, TGI programming. - Perl, Perl.

12:28- Masih ada tutorialnya Duh. - Masih, Perl itu masih ada.

12:32- Iya, masih sampai sedang nih, masih banyak. - Iya.

12:37Biasanya juga server site rendering ini itu di kombinasikan dengan database.

12:48Jadi kontennya atau isinya, artikelnya itu disimpan ke database,

12:53dan kemudian setiap ada request ke sebuah halaman, maka dia akan query ke database, dia ambil artikelnya.

13:00- Lakukan query. - Iya, digabungin.

13:03Halamannya dibuat dalam tanah kutip di render, baru dikirimkan ke klien.

13:08- Jadi isi text, HTML text yang tadi kita lihat itu dibikin programatically on the fly oleh si server itu.

13:17Ada for loopnya, ada macam-macam, ada kondisi kalau ini dia warnanya merah,

13:22kalau itu warnanya hijau, dan lain-lain. Termasuk juga sudah mulai muncul JavaScript,

13:27- walaupun penggunaannya hanya untuk hal-hal sederhana. - Masih baru client site ya, legend.

13:32Iya, nampilin informasi, alert, form validation, dan lain-lain, baru sampai di situ.

13:39Karena dulu juga masih belum standard juga kan JavaScript, masih browser JavaScript di Netscape.

13:45Belum tentu sama dengan JavaScript di Internet Explorer.

13:50- Pada pernah bahas tentang browser juga. - Browser.

13:53Belum pernah di episode berapa, tahu deh.

13:56Nah, di fase ini, salah satu yang populer, walaupun masih populer juga sampai sekarang adalah PHP.

14:05Ada yang tahu kepanjangan PHP? Personal Homepage.

14:10- Awalnya si Personal Homepage. - Awalnya. Awalnya PHP itu adalah scripting ya.

14:17- Bahasa scripting ya. - Sekarang pre-hypertext processor.

14:20Oh, benar-benar. Rada maksa sih, cuma ya udahlah.

14:24Ini kalau di website ofisialnya, bahkan P yang di depan sudah dihilangin.

14:30Cuma php.2 hypertext pre-processor.

14:34- Pre-processor. - Tinggal HP.

14:37Itu kan kalau yang open source open source itu kan banyak yang, apa ya istilahnya ya?

14:43Rekursi ya, bukan ya?

14:45Jadi kayak KDE, ke desktop environment. Knya ya tetap K aja, nggak ada apa-apa gitu.

14:51Ya, intinya adalah...

14:55- Udahlah ya udahlah, ya gitu aja. - Ya.

14:57Selain P, yang mungkin kurang populer karena memang agak, secara developer experience,

15:03kurang ini ya, agak susah ya kita develop di sana.

15:06- Di sana. - Dan maksanya juga rumit ya.

15:08Paul itu dibuat oleh, saya lupa namanya yang buat, namun learning curve-nya tinggi.

15:16- Learning curve-nya tinggi. - Akhirnya.

15:18- Akhirnya. - Unit gaining traction.

15:21Sama siapa ya, si om siapa yang bikin php, kok gue lupa sih.

15:26Lalu tiba-tiba ngeblank, oh, om Rasmus Lidov.

15:30- Oh iya, Rasmus. - Nah, itu yang bikin.

15:32Nah, om Rasmus. Masih aktif lho sampe sekarang.

15:36Ya, ya, ya. Nah, kalau temen-temen penasaran, Perl itu kayak gimana ya?

15:40Kalau mau icip-icip, tau regex nggak? Nah, itu salah satunya.

15:45Asil dari Perl. Perl itu memang sangat powerful digunakan untuk string atau text manipulation.

15:52Jadi memang, apa namanya, spesialisasinya di sana.

15:56Jadi untuk yang bisa ngecode Perl itu, dia sangat low level, ya. Dia low level, bukan sangat, dia low level.

16:03Jadi semuanya harus sebagaia step-nya banyak untuk melakukan sebuah fungsi.

16:12Makanya muncul lah yang lebih high level, contohnya, php yang menyerupai cara coding-nya si C++.

16:21Ya, sudah satu family ya. Pakai kurung-kurawal, kurung bulat, function, kurung bulat, ada parameter dan lain-lain kan.

16:31Nah, php ini berjalan di atas web server, ya kan.

16:37Kalau dulu terkenalnya Apache, kalau sekarang nginx sudah bisa.

16:41Sekarang kerennya standard ya di Indonesia tuh banyak Apache.

16:44Jadi, php itu bukan programming language, scripting language, scripting language.

16:53Jadi, interpretor, dia itu interpretor.

16:56Jadi instruksi yang kita tulis dengan php, harus ditransform dulu layer selanjutnya, makanya ada namanya php handler.

17:08Modul ya? Bukan? Apa macam modul?

17:14Ada yang merubah dari scripting-nya si php, interpretor-nya php, ke bahasa mesin.

17:21Jadi, apa isilahnya itu?

17:25Kayak perentara yang lebih low level-nya apa?

17:28Interpreter.

17:30Ya, intinya si php tidak bisa dijelankan, maksudnya tidak bisa menjadi web server sendiri.

17:39Harus butuh antara Apache atau nginx yang ada modul php-nya.

17:44Jadi, dia bisa mengerti scripting php-nya, kira-kira seperti itu.

17:48Jadi, php tidak bisa berdiri sendiri, harus dibungkus sama executable-nya.

17:53Tapi sekarang sudah bisa kan?

17:55Enggak juga.

17:57Kalau dulu kan pakai SAM, UAM, PAM.

18:03Ya, php ada php CLI-nya, tetapi kan membutuh executable-nya untuk menjalankan si php.

18:11Oh, itu untuk development-nya saja.

18:13Kita install php juga, berarti ya, di mesin kita.

18:17Sekarang dengan C++, Go, atau segala macam, sekali dikomplain, sudah jadi executable, mau dipindahin ke selama asitor.

18:29Selama asitornya sama, bisa dijalankan.

18:33Itu bedanya ya.

18:35Ya, makanya dulu, mungkin sekarang sudah tidak ya, makanya dulu kalau kita mau pakai php,

18:41kita harus punya web server-nya, harus install apache, harus install nginx.

18:46Walaupun dibanding akhirnya kan ada SAM, ada MAM.

18:49XIMPP, MAMMP ya.

18:52Itu kan php dengan metal ya, dengan besi lah, dengan mesin.

18:59Nah, terus sementara php dengan user, dengan browser,

19:03ini kan berarti pelan-pelan mulai ada templating language ya, yang kayak semacam.

19:08View templating language kayak handlebar dan teman-temannya.

19:11Itu siapa yang paling duluan ya?

19:13Handlebar dulu itu, kalau di php itu yang masih ingat, Smarty dulu ada namanya, smart templating language.

19:22Itu cukup terkenal.

19:24Ada yang sebelum Smarty.

19:26Sebelum ya, ada yang sebelum ini.

19:28Smarty itu kan belum pernah dengar, Smarty.

19:32Smarty templating language.

19:35Nah, biasanya si php juga itu dikombinasikan pasangan yang paling ini adalah database-nya MySQL.

19:45MySQL, MySQL.

19:47Sebutannya LAMP dulu ya.

19:50LAMP, apache, MySQL, php.

19:54Karena XIMPP itu dan lain-lain udah ada MySQL juga.

19:59Jadi, sekali install udah ada apache, ada php, ada MySQL.

20:04Jadi, orang ya sudah no-brainer gitu, nggak perlu install macem-macem gitu kan.

20:08Itu awalnya si server site rendering atau dynamic web gitu muncul.

20:15Jadi, kita lihat petoknya dari HTML document aja.

20:20Dari full static file, terus jadi server site rendering.

20:24Tapi dulu istilahnya belum begitu ya, belum pakai SSR.

20:28Belum, belum, belum.

20:29Belum disebut SSR.

20:31Web aja, web server, sama ya, aksekusinya di client.

20:37Ya, dynamic.

20:38Dan itu disebutnya server site rendering.

20:43Sekarang kan sebutannya server site rendering itu sekarang kan?

20:47Betul. HTML-nya, jadi koneksi ke database, segala macem itu oleh server site scripting.

20:55Mau itu poll, mau itu php, mau itu ruby, mau itu apapun itu.

21:00Jadi, HTML-nya sudah diselesaikan, baru dikirimkan ke browser.

21:08Terus penuhnya dikirim ke browser, jadi browser user nggak tahu,

21:11sebetulnya nggak tahu apakah itu dikirim dari file static, file HTML status kayak di awal itu,

21:18atau di generate oleh suatu teknologi server site scripting.

21:22Kan sama aja, apalagi udah jadi text aja pas dikirim ke browser.

21:27Lalu diterjemahkan jadi di render jadi download oleh si browser ya.

21:32Ya, selain php, di masa ini yang cukup terkenal apa ya?

21:38Apa ya? Php sih yang paling ini ya.

21:42Ruby, Ruby on Rails itu masuk juga ke server, web server, server site rendering Ruby on Rails,

21:48framework-nya on Rails.

21:50Terus ada Python, Django, ada apa lagi ya?

21:54- Java juga ada. - Visual Basic juga.

21:57- Visual. - VB6.

22:01- VB6. - No, no, no.

22:03- Itu bisa buat ngerender web. - Ada web juga?

22:05- Oh, baru tahu. - Oh, oke.

22:08- Tapi pakai IES. - Oh, IES.

22:10Oh iya, itu web server-nya di Windows ya?

22:13- Iya. - Sebagai pengganti alternatif dari Apache.

22:18- Java harus pakai Tomcat. - Java harus pakai Tomcat.

22:23Benar, benar, benar.

22:25Dan ada banyak yang lain ya, tentunya banyak ya.

22:27Bahkan Perl juga masih ada sampai sekarang.

22:29Jadi yang cukup terkenal itu php yang paling merajai, terutama karena kemudahannya.

22:34Kemudian ada terus muncul setelah php itu, muncul Ruby on Rails, muncul Python, Django,

22:40dan sejenis lainnya yang sederhananya cara kerjanya request dan response.

22:46Jadi si klien yang melakukan request melalui web browser, kemudian di-respond oleh server

22:53dengan query database, base-nya dinamis, di-render di server, dikirimin file HTML-nya ke klien kembali.

23:00Itu cara kerja sederhananya.

23:03Keliatannya sih kalau dilihat makin high level kayak yang Django, Ruby on Rails, Laravel,

23:09itu kayaknya setara dengan atau pola yang sama dengan meta framework-nya jaman sekarang ya, kayak Next.js atau SvelteKit.

23:17Jadi kan sebetulnya Django itu pakai Python, Laravel itu pakai php,

23:22cuma dikasih berbagai kemudahan, kayak misalnya routing udah ada polanya lah, tinggal isi routing.

23:30Terus kayak pola-pola kontrolernya gimana, sampai ke view-nya gimana, kayak memudahkan aja.

23:36Trendnya sebenarnya berputar, nanti kita omongin lagi kan, jadi ini dari statik, dinamis server,

23:43kemudian orang mulai merasa lambat ya.

23:46Terus ribet kali ya infrastrukturnya, kan, mesti pasang Amat J dan lain-lain.

23:54Tapi ya, sudah mulai merasa ada kebutuhan untuk real-time.

24:01Terutama bukan masalah cepat atau lambatnya ya.

24:04Kalau server mungkin bisa di-optimized dan lain-lain.

24:07Tapi kebutuhan real-time-nya ini yang membuat orang akhirnya berfikir,

24:11"Oh, kenapa nggak di-rendernya di sisi-sisi klien?"

24:14Kalau sebelumnya kan di-rendernya semuanya, HTML-nya dikirimin semuanya.

24:19HTML, CSS, JavaScript yang di-compilasi atau di-generate di sisi server, hasil akhirnya dikirimkan ke klien.

24:32Nah, terus ada yang mikir, "Ya udah, karena si klien ini sudah cukup powerful."

24:39- Browser makin canggih. - Browser makin canggih.

24:42- Suruh browser aja yang urus. - Iya.

24:44- Itu siapa ya yang pertama kali punya ide kayak gitu? - Gak tahu.

24:49Untuk ukuran dulu kan itu kayak ide yang banget kan, yang breakthrough-nya.

24:53Iya, dulu-dulu tuh nggak tahu ya siapa yang memulai.

24:56Tapi dulu sempat awal-awal itu, kalau nggak salah,

24:59salah satu yang cukup populer jadi bahan omongan adalah Gmail.

25:03Kalau sebelum Gmail kan orang nge-check email itu kan refresh kan, F5 gitu kan.

25:09Ada email baru? Dulu. Ada email baru nggak ya, gitu kan.

25:12Harus request dulu ke server kan.

25:14Begitu Gmail itu mereka kalau nggak salah pakai Java, ada framework internal-nya si Google.

25:19Ada tuh JWIT.

25:23- Bukan JWIT, bukan. - Bukan, bukan.

25:26- Java apa gitu ya pokoknya. - Jacket.

25:30- Semacam applet ya berarti. - Iya, kurang lebih kayak gitu.

25:34Nah, dari situ ya berkembang lagi.

25:37Wah, ini apa, jadi yang dikirimkan bukan halaman web lagi,

25:44melainkan data. Data-nya dalam bentuk XML atau JSON.

25:48Jadi yang dikirimkan datanya aja.

25:50"Saya minta data email dong."

25:52Ya udah, dikirimin JSON-nya, dirender di sisi klien.

25:56Ketika data-nya udah didapat, ada subject, ada title, ada body.

26:02Nah, akhirnya si browser lah yang mendapatkan tanggung jawab.

26:06Java Script Engine di dalam browser yang mengolah itu,

26:12meng-convert jadi string, jadi HTML kan sebetulnya.

26:17Jadi HTML yang bisa dibaca oleh kita, gitu.

26:20Aku baru ingat namanya GWT, Google Web Toolkit.

26:24Google Web Toolkit masih ada sih sampai sekarang.

26:28Google Web Toolkit.

26:31- Toolkit, oh. - Iya, itu cikal bakalnya.

26:35Tapi nggak tahu ya, itu beneran dia yang awal, tapi itu yang cukup terkenal

26:39pada saat itu yang membuat orang-orang, "Wah, kayaknya menarik nih."

26:43"Bisa kita explore nih, client-side rather than nine."

26:45Tapi sebelumnya Java tuh punya applet, Mas.

26:49Oh iya, applet. Bahkan sebelum itu Flash.

26:52Iya, applet, terus si EA itu punya sendiri tuh yang ActiveX.

27:01- Silverlight. - Sebelum Silverlight.

27:04ActiveX, jadi ActiveX masih ada tuh.

27:08Jadi bisa diinstall ActiveX-nya, itu yang selingkuh kena hack.

27:13Kena vulnerability, kena virus, ya.

27:16Jadi bisa install ActiveX dan membuat si web-nya itu menjadi lebih dinamis di lokal client.

27:23Lebih interaktif.

27:25Betul.

27:27Ya, habis itu ada juga makromedia yang sekarang diambil Adobe kan.

27:32Makromedia Flash kan.

27:34Lebih interaktif lagi tetapi di browser.

27:37Iya, di browser kita bisa bikin game, tapi sebelum itu harus loading dulu kan.

27:42Dulu semua halaman web itu Flash moa gitu kan. Ada loading-nya.

27:46Ada loading-nya, loading screen dan lain-lain gitu.

27:49Dia download dulu si apa, si SWF-nya ini kan, engine untuk rendering-nya.

27:54Tapi dia isolated ya, dia nggak bisa berinteraksi sama dom note di browser kan.

28:01Cuma kayak di sandbox ke tempatnya dia sendiri.

28:05Nah, tapi yang menariknya di Flash ini, dia punya bahasa scripting sendiri namanya ActiveScript.

28:11Yang menjadi jika bakal JavaScript, ECMAScript versi 3 kalau nggak salah, yang modern sekarang itu salah satunya.

28:19Sintas-sintasnya mirip sekali.

28:21Terinspirasi.

28:23Masih satu turunan.

28:25Nah, dari interaktifitas itu akhirnya JavaScript baru mulai naik.

28:30Kalau sebelumnya JavaScript itu kayak pembantu aja.

28:33Iya, hanya sebagai pembantu aja dia cuma buat validasi form.

28:37Oh, email-nya formatnya salah. Oh, ini bukan number dan lain-lain gitu kan.

28:42Atau she'll learn to welcome to my website.

28:45Alher, apa, play.

28:49Dulu kan nggak ada format apa namanya audio, jadi pakainya MIDI.

28:55Cuma instrumen doang gitu kan.

28:59Lama-kelamaan akhirnya si JavaScript nih naik nih.

29:02Mungkin dia melihat, wah si Flash ini lumayan seru ya bisa bikin interaktif.

29:06Gimana kalau JavaScript kita bikin interaktif?

29:08Akhirnya jadilah JavaScript seperti sekarang.

29:11Itu yang bisa buat bikin request dulu masih XAR ya.

29:18Request, ngerender sesuai hasil request, dan lain-lain.

29:22Betul. Karena ya itu tadi si browser juga udah lumayan kuat kan, udah powerful.

29:29Si device-device-nya juga udah lumayan powerful gitu kan.

29:34Udah mampu melakukan rendering di jasi client.

29:38Jadi akhirnya jadilah ini yang disebut sebagai client-side rendering.

29:46Cuma kan sebetulnya di awal, terutama di awal,

29:51CSR itu kan nggak mutually exclusive sama teknologi yang sebelumnya kita bahas kan.

29:58Ke server-side yang pakai PHP, atau Rails, atau Django, atau apalah.

30:06Dan lain-lain WordPress, apapun itu kan.

30:08Sebetulnya di awal kebanyakan masih dirender dari server-side.

30:14Tapi buat interaktifitas selanjutnya baru pakai yang client-side kan.

30:20Masih banyak pola yang kayak gitu kan.

30:22Jadi halamannya tetap dirender oleh misalnya Laravel, cuma buat run-end-nya pakai jQuery biasanya.

30:32Jadi sebetulnya itu udah mulai kombinasi bukan nurni client-side rendering status juga bukan.

30:40Ketika di fase ini, yang terkenal itu pasti jQuery kan.

30:55Apalagi ya ada Dojo kalau nggak salah, ada XTJS, yang lain-lain, ada banyak lah ya.

31:02Yang paling terkenal jQuery.

31:04Nah setelah itu orang berpikir, ini di client udah makin kompleks kan.

31:09Semua dihandle di sisi client.

31:13Terus akhirnya mulailah muncul framework-framework yang mengadaptasi cara web bekerja di sisi server.

31:23Dalam artian arsitekturnya pakai model view controller.

31:28Muncul Backbone, ada Knockout.js, ada Batman, ada banyak ya macem-macem ya.

31:35Batman framework, belum pernah denger.

31:41Terus templatingnya pakai underscore.

31:44Templatingnya ada handlebar, must test.

31:54Terus di fase ini juga kalau teman-teman mungkin...

31:59Ada Batman.js kofi script.

32:03Di zaman ini ada satu framework yang akan menjadi cikal bakal framework kekinian.

32:09Namanya Raktiv, R-A-C-K-T-I-V.

32:13Itu yang buat adalah reseries.

32:16Yang akhirnya menjadi Svelte sekarang.

32:19Itu dia buat di waktu dia bekerja sebelum di New York Times.

32:24Jadi dia bekerja di media juga, media online juga.

32:28Nah dia bikin Raktiv.

32:30Dia bekerja di New York Times, akhirnya dia bikin Svelte.

32:34Itu awal ceritanya di situ.

32:37Dulu dia di Guardian.

32:40Jadi ini framework-framework ini udah mulai merasa butuh karena semuanya di handle oleh klien.

32:48Akhirnya muncullah state management.

32:51Waktu itu belum teroternal ya state management ya.

32:54Kalau yang pakai Backbone, Knockout.js itu belum ada ya.

32:57Ada tapi udah di include sama sih framework ini.

33:01Dan nggak terlalu rumit kan karena orientasinya dulu awalnya masih banyak server side.

33:08Expectasinya state-nya itu di handle di server lah.

33:12Betul.

33:13Jadi ini belum jamannya ada state management dan lain-lain.

33:20Dan belum jamannya tadi ngomong apa ya? Jadi lupa.

33:24Oh ini virtual DOM belum ada tuh.

33:27Jadi semua manipulasi DOM langsung aja.

33:29Seperti halnya si jQuery kan.

33:32Beberapa framework juga seperti Backbone itu basenya jQuery.

33:36Cuman sudah, arsitekturnya sudah menggunakan model view controller.

33:40Model disini ya mungkin dia ambil API.

33:43Terus abis itu kita bisa query, terus di handle sama controller view-nya ya buat nampilin.

33:49Ya kira-kira kayak gitulah.

33:51Dan biasanya jadi reactive. Reactive itu artinya.

33:54Kalau misalnya ada data yang berubah, tadinya kalau pakai jQuery ya.

34:03Kita harus, kalau ada data yang berubah, kita harus nge-domatin.

34:07Re-render lagi semuanya?

34:08Dua hal. Dua tempat yang berbeda.

34:10Oh iya.

34:11Sedangkan ya kalau dia reactive.

34:13Kirim event gimana tuh caranya?

34:15Ya dia observe. Observe kalau datanya berubah.

34:18Kayak Backbone itu model view controller.

34:21Kalau model data di modelnya berubah,

34:23komponen yang lain yang dari view-nya itu re-render ulang, otomatis.

34:29Ya.

34:31Ya itu MVC di JavaScript.

34:36Ya itu beberapa framework yang jadul gitu ya.

34:40Yang tadi Backbone, OSJS, ada reactive, ada macem-macem gitu kan.

34:44Setelah itu mulai berkembang lagi.

34:48Mulai berkembang lagi muncul yang pertama kali framework modern,

34:51yang masih aktif sampai sekarang adalah Angular.

34:54Itu main bloom juga tuh.

34:55Angular JS-nya masih.

34:57Iya versi 1.

34:59Itu main bloom kenapa? Karena dia two-way data binding.

35:03Kalau dulu kita kan manual ya.

35:06One way.

35:08Jadi si Angular ini two-way data binding.

35:12Jadi ketika kita ketik, wah langsung berubah.

35:14Wah keren banget gitu.

35:16Sekarang mah udah biasa aja.

35:18Kalau dulu kayaknya, wah ini ini.

35:20Kalau dulu itu kalau kita ketik sesuatu di tempat sini,

35:22di tempat sini berubah secara otomatis,

35:24kayaknya dengan kayak kita...

35:27Kau pakai variable biasa gitu ya.

35:29Iya, code-nya simple.

35:30Tetapi beberapa tempat bisa berubah.

35:32Itu keren gitu.

35:33Karena kalau nggak, kita harus handle masing-masing.

35:38Masing-masing, betul.

35:39Satu per satu.

35:40Jadi ya itu lumayan menjadi milestone juga ya

35:44buat perkembangan web.

35:46Itu adalah Angular 1.

35:48Dan Angular 1 juga salah satu framework

35:50yang pertama kali mempopulerkan testing di sisi klien.

35:55Dia menggunakan Jasmine.

35:57Sebelum-sebelumnya testing di klien itu susah banget.

36:00Susah banget.

36:01Kayak hampir nggak ada gitu.

36:03Manual, manual testing.

36:05Iya, acceptance test.

36:07Orang yang ngetest gitu kan.

36:09Begitu ada Jasmine, dia bisa bikin auto-metet test dan lain-lain.

36:13Akhirnya diadaptasi sampai sekarang,

36:15testing itu udah enak banget.

36:17Itu salah satu handle-nya Angular juga.

36:21Berarti itu milestone juga ya.

36:23Bahwa di apapun yang terjadi di client-site,

36:26di browser, itu kayak ada logiknya,

36:28ada input-nya gimana, output-nya gimana.

36:31Itu kan berarti kita web developer sadar

36:35bahwa udah geser ke, nggak geser sih, udah nyebar ke...

36:39Selain di server, ya server tetap perlu ditest.

36:42Di klien juga perlu ditest juga.

36:44Betul, betul.

36:46Dan Jasmine juga masih ada sampai sekarang

36:50dan diadaptasi oleh Jess.

36:52Jess itu biasanya adalah Jasmine.

36:54Terus dari Angular ini baru muncul

36:57itu yang framework-framework yang sekarang,

36:59seperti React, ada...

37:01View.

37:02View, ada...

37:04Nah, View juga...

37:06Ya, View juga sebenarnya sederahnya menarik juga

37:09karena kabarnya si Ivan Yu itu

37:13dulu dia intern di Google, masuk ke timnya Angular.

37:17Makanya kan Angular 1 sama View awal kan mirip-mirip ya.

37:24Begitu mereka announce bahwa Angular yang kedua

37:30bakal diganti total, berubah total,

37:33kemudiannya ganti Ivan Yu-nya dan di sana

37:35akhirnya dia bikin View, gitu.

37:38Kalau React itu muncul karena kebutuhan si Facebook

37:43sebagai sosial media.

37:45Jadi datanya dinamis, gitu kan.

37:47Kalau tadi kan kita pathway data binding

37:50mungkin butuhnya lebih dari di Google ya.

37:53Facebook awalnya itu server-side rendering loh.

37:55Iya.

37:56Kan PHP, bahkan sampai tahun 2000,

37:59berapa lah, 2010-an pokoknya,

38:01masih server-side,

38:03masih alamatnya bahkan profile.php,

38:05cuma di depannya diperkaya oleh React.

38:09Ya, bahkan sekarang mereka udah bikin engine PHP sendiri kan.

38:13Sempat waktu itu kan PHP 5.6 stak ceritanya.

38:18PHP 5.6 agak stak.

38:21Nggak ada tuh 5.7 kayak masih kayak pada berantem gitu,

38:24terus akhirnya pada bikin PHP 6.

38:27Kayaknya selalu pada berantem dulu ya,

38:29aja plus script buat PHP.

38:31PHP 6.

38:32Tadi PHP 6-nya kayak masih kayak nggak ada persetujuan gitu,

38:38kayak nggak kompak.

38:39Akhirnya si Facebook bikin sendiri kan

38:41PHP engine-nya dia rewrite.

38:43Nggak, dia rewrite sih.

38:44Dia modifikasi.

38:45Gua lupa namanya apa.

38:47PHP engine-nya dia.

38:49Bukan.

38:50Highlight.

38:51Bukan, bukan.

38:52PHP engine-nya si Facebook itu namanya...

39:00Kok gua lupa.

39:03Itu dulu agak melenceng,

39:09tapi pertama kali si Facebook punya itu

39:12yang pakai namanya Just In Time.

39:14HHVM.

39:15Oh ya, HHVM.

39:17Jadi dia pakai tekniknya Hip Hop Virtual Machine.

39:21Jadi pakai Just In Time.

39:22Ya ampun namanya Hip Hop Virtual Machine.

39:24Tapi itu jadi cepet banget memang.

39:28Fast forward, PHP 7 keluar,

39:32maka semua tidak ada.

39:34Karena sudah kompak lagi semua.

39:36Udah dimasukin.

39:37Udah diintegrate.

39:38Polanya mirip kayak ECMAScript ya jadinya.

39:41Sejarah ECMAScript yang dulu pernah kita bahas di episode berapa tuh.

39:45Jadi, ya itu si React ini muncul karena kebutuhan social media

39:51yang datanya dinamis sekali kan.

39:53Dinamis.

39:54Ada chat baru, ada like baru.

39:56Ada like baru.

39:57Ada feed baru dan lain-lain gitu kan.

40:00Makanya si React ini muncul

40:03dan dia mau, kan dia mau mengetamakan developer experience kan.

40:11Kalau misalkan yang sebelumnya menggunakan 2D data binding,

40:15ternyata itu bagus, menarik secara developer experience,

40:20tapi kabarnya secara performa kurang.

40:24Karena dia harus, apa istilahnya tuh, ngecekin ini lagi kan.

40:28Tiap kali ada perubahan dia cek semua halaman dan itu berat gitu kan.

40:32Nah, tapi React juga nggak mau dia kalau misalkan,

40:37kalau dulu kita misalkan kayak server-site rendering,

40:42pokoknya dia berusaha untuk membuat developer experience-nya seperti server-site rendering,

40:47tapi ini di client-site.

40:48Artinya apa?

40:49Artinya misalkan kalau dulu kita mau cek email, ada email baru kan kita F5 ya.

40:53Refresh gitu kan.

40:54Nah, React pengen experience seperti itu.

40:57Jadi setiap ada hal yang baru, kita nggak perlu ngapain, tiba-tiba ada muncul itu.

41:02Makanya dia bikin virtual DOM.

41:03Jadi ketika ada sesuatu yang baru, sebenarnya itu dia ngerefresh semuanya,

41:09ngerender ulang semuanya, tapi yang hanya perubahannya aja.

41:12Itu yang bantu.

41:13- Dia punya gambar DOM yang real, yang nyata,

41:18terus dipindahin dulu ke tempatnya React sendiri,

41:24di dunia virtualnya dia,

41:26terus dicek satu persatu mana yang berubah,

41:29sampai dapet gambar yang baru sepenuhnya,

41:32terus baru di-apply lagi ke DOM yang asli, yang nyata.

41:36Karena browser juga masih belum terlalu super browser,

41:42masih belum sama ya, belum seragam.

41:44Jadi solusinya React kayak gitu.

41:47Memudahkan buat semacam polyfill atau backwards compatibility juga,

41:52karena semuanya digambar dulu di virtual DOM-nya dia.

41:55- Virtual DOM ini juga salah satu milestones ya,

42:00yang membuat framework-framework kalian juga mengikuti.

42:03- Makin lama, makin dominan JavaScript ya jadinya.

42:07- Iya.

42:08- Sampai di satu titik, semuanya pada pakai JavaScript,

42:13akhirnya website-nya lambat.

42:17- Website yang dikirim di awal nggak ada isinya?

42:20- Betul, kosongan.

42:22Dia nunggu datanya nyampe,

42:24begitu datanya nyampe, dirender,

42:26jadi ada proses si user menunggu loading pertamanya,

42:29hampir sama seperti kejadian seperti di Flash jaman dulu,

42:33harus loading dulu.

42:35Itu kejadian di client-side rendering.

42:38Walaupun tidak begitu kelihatan ya,

42:40karena mungkin koneksi internet udah bagus,

42:42yang dirender juga,

42:44ya mungkin text, image, dan lain-lain,

42:46ya mungkin cukup oke lah, masih bisa ditolerir lah,

42:49tapi untuk yang butuh performa yang bagus,

42:53itu menjadi hal yang kurang menyenangkan gitu,

42:56yang akhirnya munculah solusi-solusi seperti

43:02server-side rendering yang kombinasi.

43:07- SSG.

43:09- SSG dulu yang muncul ya?

43:11- Belum, belum.

43:13Itu yang kayak pakai itu loh, pre-render.

43:16Jadi pre-render.

43:18Karena gini, masalahnya kan di SEO jaman itu,

43:22Google Callbot itu belum bisa ngerender di JavaScript.

43:26- Belum bisa baca...

43:28- Bisa baca HTML-nya,

43:30tetapi tidak bisa ngerender di JavaScript.

43:32Jadi masalah, masalah nih bagi si Google.

43:38Jadi dia nggak tahu kontennya apa,

43:40web-site-web-site yang pakai client-side rendering itu,

43:43gimana solusinya?

43:45Akhirnya pakai namanya pre-render dulu.

43:48Jadi kalau di-detect,

43:50kalau yang request itu bot,

43:52masuk ke pre-render.

43:54Jadi di pre-render yang dikirimkan ke bot itu,

43:56HTML-nya berbeda dengan HTML yang dikirimkan oleh user.

43:59Itu awalnya pre-render.

44:02Baru muncul...

44:05- Baru muncul SSG,

44:07itu adeknya strategi pre-render.

44:11Sekalian aja dikirim HTML yang awal, yang mentah,

44:15ya dikirim aja ke user juga.

44:17Karena mungkin kena penalti,

44:19kan sebetulnya kalau SEO,

44:21crawling search engine kan sama Google dilarang kan ya,

44:25kalau experience bot sama experience user terlalu beda,

44:29kan sebenarnya itu kayak misleading kan,

44:31mungkin ada penaltinya atau apa kali ya.

44:33SSG itu dulu kayak mulai jamannya Gatsby kan.

44:37- Gatsby itu yang paling terkenal awalnya SSG.

44:39Atau apa tuh sebelumnya?

44:41- Sebenarnya sebelum itu udah ada.

44:43Ada Jekyll.

44:45- Oh ya Jekyll, Jekyll, Jekyll betul.

44:47- Ada Jekyll, itu awalnya banget.

44:49- Jekyll Hugo berarti ya temennya.

44:51Segenerasi.

44:53- Jekyll duluan,

44:55Hugo itu hampir segenerasi dengan Gatsby.

44:58Gatsby terkenal karena dia di ecosystem JavaScript.

45:02- Samaria Gatsby.

45:04- Iya dia nempelnya sama Riai, GraphQL dan lain-lain.

45:07Akhirnya yang bertransformasi,

45:10yang bertransformasi menjadi

45:12Jamstack.

45:14Yang sekarang lumayan terkenal.

45:18Karena orang kembali melihat kan,

45:20wah ini lambat.

45:22Kalau ke server ngapain golak-balik query ke database,

45:25padahal website kita nggak terlalu dinamis.

45:29Dalam artian, misalkan website pribadi nih.

45:32Artikel, kita bikin artikel,

45:34berapa sih, sebanyak apa sih, gitu kan.

45:36Sebulan sekali juga udah bagus, gitu kan.

45:38Lagi rajin, gitu kan.

45:40Jadi ngapain harus,

45:42setiap ada request harus ke server dulu,

45:44ke database, balik ke server, baru ke klien, gitu kan.

45:47Terlalu banyak makan resource.

45:49Akhirnya, ya udah.

45:51Yang bisa jadiin statik ya, di statikin aja.

45:53Terus abis itu yang ininya, artikelnya,

45:55di generate secara otomatis sekali aja.

45:57Di generate lagi.

45:59Di generate jadi file,

46:01artikel 1.0 HTML, artikel 2.0 HTML,

46:03dikirim balik ke server.

46:05Jadi prosesnya lebih cepat dan lebih aman,

46:07nggak ada database, nggak ada kemungkinan di hack,

46:11karena database-nya bobol atau gimana.

46:13Itu aman semuanya.

46:15Lebih irit juga kan, Debbie, ya.

46:17Balik ke awal kayak tadi Tim Berners-Lee lagi.

46:21Jadi dokumen-dokumen,

46:23tapi itu dibuat oleh si Gatsby

46:25yang tahu program.

46:27Walaupun itu di server lokal kita ya.

46:29Kita bisa jalankan NPM run build,

46:33itu nge-generate, kita push.

46:35Udah deh. Terus irit biaya.

46:37Biasanya...

46:39Gak perlu server.

46:41Kayak gini, biasanya dilakukan secara otomatis

46:43lewat CI/CD.

46:45Kalau teman-teman.

46:47Bukan CI/CD, lewat CI/CD.

46:49Jadi pakai jaman ini.

46:51Kita connect repo kita.

46:53Tapi yang sebelumnya kan,

46:55yang paling pertama ada runner-runner itu kan

46:57GitLab tuh yang awal-awal tuh.

46:59GitLab yang punya runner yang free.

47:01Nah, jadi biasanya kita push ke Git repo-nya,

47:05pakai hook,

47:07jalanin runner.

47:09Men-trigger mereka yang jalanin NPM run build gitu misalnya.

47:13Oh, biasanya pakai Travis dulu awal-awal tuh.

47:15Travis CI kan.

47:17Terus Travis-nya jalan.

47:19Terus kemudian nge-push ke

47:21kayak server-server SDN yang free.

47:25Kayak Netlify, atau apa?

47:27S3.

47:29Ke storage lah intinya ke storage ya.

47:33Yang tidak membutuhkan web server kan.

47:35Maksudnya yang gak butuh install web server,

47:37atau hosting yang ada PHP.

47:39Jadi sudah dikirim.

47:41Jadi bundlenya semua itu

47:43JavaScript-nya, CSS-nya,

47:45HTML-nya, lengkap-lengkap.

47:47Satu folder

47:49yang dikirimkan update.

47:51Nah, itu static site generation.

47:53Nah, terus kelebihan-nya

47:55dianggap dulu SEO-friendly.

47:57Karena misalnya blog,

47:59website pribadi atau blog,

48:01kan judulnya tetap sudah dikirim di

48:03tag H1, H1 heading.

48:05Ada titlenya, ada isinya.

48:07Nah, pas disajikan

48:09di server-user, tetap bisa di-hydrate.

48:11Misalnya jumlah like-nya kan berubah tuh.

48:13Jumlah like-nya mungkin

48:15bakal di-hydrate.

48:17Nah, disini mulai kenal sama istilah hydrate ya.

48:20Dipanggil dari JavaScript,

48:22terus di-render ulang.

48:24Tapi kan gak semua kan sebetulnya.

48:26Kayak judul blog juga kan

48:28gak terlalu sering berubah.

48:30Isinya juga gak terlalu sering berubah.

48:32Cuma misalnya ada komentar

48:34atau ada jumlah like baru itu yang

48:36dilakukan di client-site.

48:38Di client-site. Jadi di-hybrid lagi.

48:40Jadi sudah static.

48:42Static HTML dikirimkan.

48:44Cuma bagian-bagian tertentu

48:46di-hydrate.

48:48Di-generate.

48:50Di-hydrate ulang untuk request data

48:52untuk diperbarui.

48:54Ini ada

48:58sebenarnya gak perlu, maksudnya

49:00gak mesti pakai framework-framework

49:02juga ya. Gak perlu pakai framework

49:04kayak Gatsby, Jekyll. Karena

49:06saya pernah buat juga dengan WordPress.

49:08Jadi, dari php.

49:10Kan WordPress kan php.

49:12Dan server-user rendering. Jadi

49:14buat ngerender

49:16jadi setelah

49:18konten ditulis, ya kan?

49:20Konten ditulis itu

49:22HTML nya di-generate via

49:24php. Terus php yang meng-upload

49:26ke S3.

49:28Terus file itu

49:30di-serve via

49:32CDN. CDN Cloud Front.

49:34Biasanya. Ya kan?

49:36Itu juga bisa.

49:38Dan projeknya sampai sekarang masih aktif.

49:42Itu yang nge-generate itu

49:44kayak si php-nya

49:46gitu. Jadi gak mesti harus pakai

49:48framework-framework JavaScript.

49:50Dan kalau gak salah,

49:52Next.js yang baru-baru

49:54juga udah bisa

49:56melakukan itu kan?

49:58Benar gak sih?

50:00Dan sebetulnya, balik lagi.

50:02Lama-lama setelah

50:04masa bulan Madu lah

50:06honeymoon phase sama si

50:08SSG ini, kan orang makin

50:10developer sadar

50:12kadang ada kalanya

50:14butuh server-site ya, walaupun

50:16misalnya authentication

50:18atau hal-hal yang pakai

50:20API key atau

50:22punya butuh operasi server,

50:24ya bisa sih client-site,

50:26tapi kan tetap lebih

50:28robust lah, lebih solid,

50:30lebih enak kalau ada

50:32server-nya. Jadi ya tetap

50:34approach yang sama, cuma halamannya

50:36si HTML awalnya tadi

50:38degenerate oleh

50:40server. Nah Next.js itu kelihatannya

50:42yang paling pertama bisa

50:44hybrid, bisa kombinasi.

50:46Bisa pure start SSG,

50:48misalnya ya udah dikirim

50:50HTML-nya gitu aja, bisa

50:52juga combine SSR.

50:54Itu HTML-nya

50:56degenerate oleh si

50:58Next.js.

51:00Remix habis itu ya, yang baru

51:02remix bahkan

51:04pure, murni server-site.

51:06Karena kalau static-site

51:08generasi itu kan memang cepat,

51:10bisa di-service sedien, cuma

51:12cons-nya adalah scale,

51:14solid scale ya. Bayangkan aja

51:16kalau

51:18publishing site, new site, New York Times

51:20yang punya jutaan artikel,

51:22ya masa sekali

51:24ngerender itu

51:26nge-generate satu juta artikel.

51:28Bayangin aja kalau menu-nya

51:30dirobah,

51:32masa ngerender satu juta?

51:34Jadi nggak bisa.

51:36Scaling dari sisi

51:38generation-nya kan, bukan dari sisi

51:42kalau misalkan kayak

51:44S3 atau storage yang lain kan itu

51:46automatic scaling kan.

51:48Storage aman, tapi kan harus dibuild.

51:50Harus dibuild biar nggak

51:52generate sih file-file HTML tadi.

51:54File dan asset-asetnya.

51:56Banyak dan berat ya.

51:58Oke, oke.

52:00Nah.

52:02Jadi mungkin karena

52:04topiknya lumayan panjang,

52:06kita ini ya, kita recap

52:08dulu kali ya, kita recap ya. Jadi awalnya

52:10muncul

52:12di awal itu adalah

52:14server-site rendering dulu,

52:16walaupun dulu istilahnya nggak ada ya.

52:18Eh, static dulu dong, awalnya.

52:20Awalnya static dulu.

52:22Bahkan static file.

52:24Murni static file.

52:26Static document file.

52:28Terus ke server-site.

52:30Server-site yang dinamis, ya.

52:32Lalu kemudian baru ke...

52:34Dynamic scripting language tadi ya.

52:36Iya. Kita coba buka ya, ngeliat ya

52:38contohnya ya di sini.

52:40Ini sih

52:42apa namanya, kalau SSR itu

52:44istilah yang dibuat setelah

52:46proses apa,

52:48setelah fase-phase

52:50web server itu terkenal dulu kan.

52:52Ya, ini udah modern sih.

52:54Jadi

52:56ini server-site, kemudian muncul

52:58client-site.

53:00Client-site juga tadi ada fase-fasenya mulai dari

53:02yang sederhana sampai yang

53:04sudah modern seperti sekarang.

53:06Client-site salah satunya adalah

53:08react misalkan.

53:10Jadi ketika kita buka, kalau misalkan yang client-site

53:12salah satu ciri khasnya adalah

53:14kita akan dapatkan, awalnya

53:16kita akan dapatkan sebuah

53:18halaman kosong. Karena semua

53:20degenerate di sisi klien.

53:22Seperti itu.

53:24Lalu kemudian

53:26kita ke static-site

53:28generation, static rendering

53:30ini proses

53:32pre-render

53:34ya, jadi

53:36HTML dan

53:38JavaScriptnya static

53:40tapi ada proses generationnya

53:42yang membuat dia setengah

53:44dinamis, semidinamis ya.

53:46Contohnya tadi misalkan

53:48kita punya artikel,

53:50artikel ini degenerate supaya

53:52menjadi file-file static.

53:54Tidak melalui

53:56server dan tidak

53:58menggunakan database sama sekali.

54:00Pro dan consnya

54:02temen-temen bisa baca sendiri. Tadi kita juga sudah bahas

54:04cukup pendalam ya, untuk masing-masing.

54:06Saya bisa kasih gambaran

54:08pros dan consnya.

54:10Kalau dokumen

54:12static-site, kita mulai dari server-site

54:14dulu deh. Karena itu mungkin teman-teman

54:16sekarang itu ngerti PHP atau

54:18yang dynamic itu.

54:20Apa sih kebagusnya

54:22dengan server-site, datanya bisa

54:24dinamis, jadi real-time.

54:26Apapun yang kita lihat, real-time.

54:28Cuman kelemahannya adalah TTFB-nya tinggi.

54:30Time-to-verse-back-nya tinggi, karena harus ada

54:32proses request, server yang memproses

54:34ngambil data dari database,

54:36case segala macam, baru balik.

54:38Jadi TTFB-nya tinggi.

54:40Kalau klien...

54:42Dan yang lupa biaya.

54:44Dan SEO-nya bagus, karena

54:46datanya update, karena yang dikirimkan sudah

54:48HTML yang sudah tinggal di-render.

54:50Jadi dari sisi bagusnya,

54:52HTML-nya hanya tinggal perlu

54:54dirender oleh si browser,

54:56jadi FCP dan LCP-nya

54:58secara side-performance bisa

55:00lebih baik.

55:02Kalau client-site rendering,

55:04server kan tidak

55:06perlu memproses apa-apa.

55:08Dia cuma kayak kirimkan,

55:10ini HTML kosongan,

55:12ini JavaScript-nya,

55:14ini datanya,

55:16render aja nih.

55:18Jadi TTFB-nya bagus,

55:20karena cepat,

55:22bahkan bisa di-case

55:24oleh CCDN dengan bagus,

55:26karena datanya sudah ada di-CDN semua.

55:28Jadi cepat banget.

55:30Tapi blocking time-nya

55:32bakal tinggi.

55:34Ya, kelemahannya FCP dan LCP-nya

55:36side-performance-nya,

55:38untuk user bisa ngelihat

55:40konten-nya,

55:42butuh waktu sampai JavaScript-nya selesai di-download.

55:44Betul.

55:46Downside-nya

55:48SEO, secara SEO

55:50kurang bagus, karena

55:52crawler board itu harus

55:54men-download JavaScript yang besar,

55:56dan ada crawler board itu

55:58punya budget

56:00untuk nge-download itu.

56:02Kalau kita ke-block gara-gara itu,

56:04bakal konten kita nggak bisa dibaca.

56:06Balik lagi ke

56:08static-site.

56:10Static-site itu, TTFB-nya

56:12bagus, karena

56:14HTML-nya sudah di-case,

56:16sudah jadi.

56:18Sudah disiapkan, sudah jadi file.

56:20LCP-nya, kalau

56:22misalnya dengan JavaScript-nya nggak berat ya,

56:24asumsi nggak berat, LCP-nya

56:26bagus. Jadi secara SEO juga bagus.

56:28Konten-nya sudah jadi semua.

56:30Kelemahannya adalah,

56:32kalau file-file-nya atau

56:34publishing-site yang

56:36besar,

56:38akan

56:40makan

56:42waktu untuk nge-generate ulang.

56:44Jadi

56:46scalability-nya kurang bagus.

56:48Dan satu sisi, datanya

56:50tidak real-time.

56:52Jadi nggak masuk akal

56:54untuk website

56:56atau web-app yang banyak konten user

56:58generated, nggak mungkin tiap.

57:00Misalnya kayak medium

57:02atau booking-site yang user-nya banyak,

57:04setiap orang nge-post artikel baru,

57:06generate ulang semua.

57:08Itu recap-nya.

57:10Oke, oke.

57:12Jadi itu

57:14pro dan cons-nya.

57:16Kalau penggunaannya,

57:18kapan kita perlu menggunakan

57:20server-site, kapan kita perlu

57:22website, web seperti apa?

57:24Biasanya bagi teman-teman itu,

57:26"Tus yang bagus yang mana?"

57:28"Tus saya pakai yang mana?"

57:30Server bullet.

57:32Padahal sebenarnya semua

57:34bisa diakalin dalam tanda kutip ya.

57:36Misalkan contohnya,

57:38static-site generator ini

57:40nggak bisa bikin, mungkin kurang bagus.

57:42Bukan nggak bisa ya, kurang bagus untuk

57:44yang sifatnya dinamis.

57:46Sebenarnya bisa juga. Misalkan nih, kita

57:48bisa bikin aplikasi e-commerce

57:50dengan SSG.

57:52Gimana caranya?

57:54Ya SSG-nya biasa.

57:56Kelain site, sisanya semua.

57:58Kontennya dari mana?

58:00Kontennya kita pakai yang headless.

58:02Misalkan headless e-commerce apa namanya?

58:04Yang dikirimkan cuma yang

58:08degenerate shell-nya doang.

58:10Ya, shell-nya doang. Selebihnya

58:12di generate di sisi klien dengan menggunakan JavaScript.

58:14Dia cek ke API,

58:16"Oh, ini ada data baru."

58:18Data item atau barang-barang yang

58:20mau di render di halaman satu yang mana

58:22munculin. Itu bisa.

58:24Tapi secara SEO,

58:26belum tentu bagus karena

58:28balik lagi.

58:30Pre-render. Apatih server-site.

58:32Balik-balik, bolak-balik kita.

58:34Bingung kan yang mana kan?

58:36Sebenarnya gampangnya gini, kalau kita terlalu banyak

58:38dicoba aja dulu, maksudnya kita

58:40tetap perlu pernah nyoba semua.

58:42Kita nyobain semua nih.

58:44Terus kita tahu plus-minusnya.

58:46Gampangnya sih kalau kita terlalu banyak pakai workaround,

58:48ada satu titik

58:50dimana udah mending pakai

58:52server-site aja.

58:54Satu titik trade-off-nya

58:56gak sebanding ya, ya udah.

58:58Kalau use case kayak e-commerce

59:00atau dynamically

59:02user-generated site,

59:04ada titik dimana kita

59:06lebih baik pakai server-site

59:08rendering. Nah itu kan tergantung

59:10use case spesifiknya buat

59:12siapa ya. Cuma kalau cuma pengen nyoba,

59:14explore, ya saksah

59:16aja semua cara dipakai.

59:18Kalau menurut saya tergantung

59:20aplikasinya mau dibikin apa.

59:22Kalau sifatnya

59:24banyak konten,

59:26janganlah pakai static site.

59:28Ya, jangan pakai static site.

59:30Mau gak mau kan

59:32atau misalnya banyak konten dan pengen

59:34kontennya diindeks oleh

59:36search engine. Itu syaratnya ya.

59:38Jadi jangan pakai static site karena akan

59:40makan waktu untuk build time.

59:42Kalau misalnya

59:44situsnya kecil,

59:46blog pribadi yang nulisnya sekali sebulan,

59:48ya gak perlu juga server-site.

59:50Karena ada biaya kan

59:52untuk biaya server kan.

59:54Minimal beli hosting.

59:56Kalau sedangkan kalau pakai

59:58static site,

1:00:00yang itu minimal kita bisa

1:00:02hosting-nya di github.io, gratis kan.

1:00:04Iya, betul.

1:00:06Nah, cuma sekarang

1:00:08kalau penggunaannya kecil

1:00:10sedikit sih, sebenarnya sekarang udah banyak

1:00:12free tier yang lumayanlah.

1:00:14Netrify,

1:00:16gratis ya.

1:00:18Tapi ya,

1:00:20kalau penggunaannya kecil, kalau misalnya

1:00:22udah mulai terkenal, banyak pengunjungnya,

1:00:24ya,

1:00:26free tier-nya habis.

1:00:28Maksudnya itu kan konsekuensi lah.

1:00:30Yang bikin covid,

1:00:32situs yang untuk

1:00:34menampilkan jumlah kasus covid,

1:00:36kawal covid.

1:00:38Madroid, ya.

1:00:40Iya.

1:00:42Oh iya.

1:00:44Itu kan sebenarnya

1:00:46hanya

1:00:48dia tampilkan itu

1:00:50hanya dengan static site.

1:00:52Klien site rendering.

1:00:54Jadi nggak perlu karena misalnya

1:00:56situsnya hanya dipakai

1:00:58untuk kebutuhan tertentu

1:01:00dan kita belum tentu

1:01:02contohnya

1:01:04buat nge-tracking sesuatu

1:01:06yang datanya nggak perlu SEO,

1:01:08SEO amat. Contohnya

1:01:10dashboard, dashboard internal

1:01:12yang bisa kita bikin internal

1:01:14pakai static,

1:01:16sorry, klien site, dan

1:01:20datanya itu

1:01:22real-time misalnya.

1:01:24Dynamis, real-time.

1:01:26Dan interaktif bahasanya.

1:01:28Ya udah, pakai aja

1:01:30klien site rendering, nggak perlu mikir-mikir

1:01:32yang sampai mewah-mewah

1:01:34pakai server site rendering atau static

1:01:36site generation.

1:01:38Kalau internal, klien site aja.

1:01:40Nggak ada SEO.

1:01:42Atau mungkin kontennya emang yang harus JavaScript

1:01:44generated. Misalnya

1:01:46game atau aplikasi yang

1:01:48kan fast banget tuh.

1:01:50Banyak pakai teknologi kan fast

1:01:52WebGL. Ya itu kan

1:01:54bakal klien render juga.

1:01:56Jadi nggak perlu terlalu menikmati

1:01:58di rendering method.

1:02:00Anggap aja aplikasinya Figma,

1:02:02contoh. Anggap aja. Itu kan

1:02:04klien site rendering kan.

1:02:06Jadi

1:02:08ada patternnya. Tapi kan Figma

1:02:10juga punya main site-nya kan.

1:02:12Itu yang main site-nya.

1:02:14Ya static aja main site-nya.

1:02:16Marketing site,

1:02:18static aja biar cepet dan

1:02:20hemat.

1:02:22Blocknya pakai server site, pakai aja

1:02:24WordPress, beres kan.

1:02:26Jadi tergantung situasi.

1:02:28Jadi satu domain pun

1:02:30bisa banyak.

1:02:32Mungkin halaman utamanya

1:02:34static site,

1:02:36blocknya server site,

1:02:38aplikasinya sendiri

1:02:40client site.

1:02:42Itu

1:02:44penggunaannya.

1:02:46Jelas ya.

1:02:48Ada lagi yang seru nih. ISR kita belum bahas nih.

1:02:50Si incremental static rendering.

1:02:52Incremental static rendering.

1:02:54Ini kelihatannya dipopuler

1:02:56dipopulerkan

1:02:58sama Next.js ya

1:03:00kalau nggak salah.

1:03:02Ini ya, ISG ini. Bukan.

1:03:04ISG, iya.

1:03:06Jadi ini trobosan yang lumayan

1:03:08baru sebetulnya.

1:03:10Kalau tadi kan SSG dibuild sekali,

1:03:12abis itu ya udah.

1:03:14Kalau misalnya ada konten baru,

1:03:16nge-build ulang semuanya.

1:03:18Kalau misalnya satu website

1:03:20punya 300

1:03:22artikel atau 300

1:03:24konten, harus build ulang

1:03:26keseluruhan

1:03:28ya semua 300 halaman itu.

1:03:30Nah, ISG ini

1:03:32memungkinkan bahwa

1:03:34nge-build ulang cuma halaman yang berubah

1:03:36aja.

1:03:38Cuma ini relatif baru sih.

1:03:40Beratif baru ya.

1:03:42Namun ada kelemahannya

1:03:44disini, kalau yang berubah itu

1:03:46elemen yang

1:03:48ada di seluruh page,

1:03:50di seluruh page ya, mau nggak mau

1:03:52render mula.

1:03:54Contoh menu, logo.

1:03:56Navigation gitu-gitu ya.

1:03:58Ya, navigation.

1:04:00Cuma ini membantu aja sih

1:04:02alternatif buat enrich.

1:04:04Ya, misalnya kita belum terlalu butuh

1:04:06glom se-level media

1:04:08kayak New York Times atau Guardian.

1:04:10Maksudnya kita belum sebesar itu.

1:04:12Cuma emang pengen

1:04:14nge-build, misalnya tetap

1:04:16personal site, sebetulnya cuma blog pribadi

1:04:18aja. Cuma ya misalnya kita mulai

1:04:20produktif lah. Tadinya

1:04:22lepost sebulan sekali, sekarang

1:04:24jadi sebulan 3-4 kali.

1:04:26Terus kita mulai males kalau harus

1:04:28nungguin nge-build semua.

1:04:30Kalau yang berubah emang cuma

1:04:32satu bagian, satu post.

1:04:34Misalnya kalau kita cuma

1:04:36satu post kan yang perlu dirender adalah

1:04:38misalnya halaman index-nya sama

1:04:40halaman

1:04:42post-nya itu sendiri ya, asumsi

1:04:44kita nggak banyak widget atau

1:04:46site bar atau apalah, kita cuma punya

1:04:48website sederhana. Ini kan

1:04:50bagus buat DX sih.

1:04:52Buat developer experience-nya ya.

1:04:54Kita bisa lebih produktif

1:04:56bikin post baru, tanpa

1:04:58males, aduh nge-build-nya lama.

1:05:00Ya, sekarang lumayan.

1:05:02Terus kalau untuk server site

1:05:04rendering juga

1:05:06kita bisa

1:05:08ngakalin biaya

1:05:10atau beban dari server

1:05:12site rendering sebenarnya diakalin dengan

1:05:14cache. Kita

1:05:16manfaatin cache

1:05:18sebisa mungkin, jadi yang di-serve

1:05:20adalah cache, jadi lebih cepat

1:05:22juga. Oh, ini yang

1:05:24benar-benar dimanfaatkan oleh

1:05:26Remix ya, kalau nggak salah ya.

1:05:28Dia menggunakan... Remix dan Next.js.

1:05:30Dan Next.js, oke.

1:05:32Mereka punya text yang

1:05:34memudahkan caching.

1:05:36Gimana dengan framework-nya

1:05:38baru seperti Astro?

1:05:40Astro dia pakai arsitektur

1:05:42island ya. Island architecture ya.

1:05:44Sudah pernah kita bahas kan.

1:05:46Sudah pernah kita bahas. Mungkin TLDR-nya

1:05:48bisa dijelaskan sedikit

1:05:50aja. Nah, si Astro...

1:05:52Oh, island ya. Island itu

1:05:54memandang seluruh

1:05:56dome itu kayak

1:05:58apa ya, secara geografis lah.

1:06:00Jadi,

1:06:02dibagi jadi modul-modul

1:06:04kayak di layar itu. Nah, kan

1:06:06nggak semua perlu

1:06:08dinamik dan

1:06:10terus-menerus berubah.

1:06:12Jadi, ini dianggap

1:06:14semua di awal, status,

1:06:16bagian-bagian yang perlu

1:06:18dinamis, di hydrate,

1:06:20atau di

1:06:22dome-nya diubah

1:06:24atau ditimpa dengan

1:06:26JavaScript saat

1:06:28butuh. Jadi, saat butuh itu apa?

1:06:30Bisa waktu pertama kali di loading,

1:06:32misalnya waktu suatu blog post pertama

1:06:34kali muncul, kita pengen tahu jumlah like-nya

1:06:36kan harus nampilin di like

1:06:38beberapa orang. Yaitu begitu loading,

1:06:40bisa dilangsung panggil.

1:06:42Atau bisa juga

1:06:44nggak usah dulu. Misalnya, comment kan paling bawah.

1:06:46Kan belum masuk viewport tuh.

1:06:48Belum tentu user scroll sampai bawah.

1:06:50Jangan ngeboros, jangan bikin boros

1:06:52total booking time ya itu.

1:06:54Abang, biar

1:06:56JavaScript browser bisa ngerjain hal lain.

1:06:58Ya udah, biarin dulu.

1:07:00Nggak usah melakukan apa-apa.

1:07:02Kalau user mulai scroll ke arah

1:07:04ke bawah, ke arah comment,

1:07:06baru JavaScript-nya

1:07:08muncul dan beraksi dan

1:07:10nge-fetching, ngambil data comment

1:07:12terus nge-replace

1:07:14dome-nya di browser dengan isi

1:07:16komentar.

1:07:18Pasti saya bisa scroll sedikit.

1:07:20Jadi, dia kayak hybrid. Scroll lagi ke bawah sedikit.

1:07:22Jadi,

1:07:24si framework ini akan menentukan

1:07:26mana yang harus di server,

1:07:28sorry, bagian yang tadi.

1:07:30Naik atas-naik atas sedikit.

1:07:32Ya, stop.

1:07:34Jadi, si framework itu bisa menentukan

1:07:36yang mana yang perlu dirender di server,

1:07:38yang mana perlu dirender di client.

1:07:40Jadi, contohnya, untuk page layout-nya

1:07:42dirender server-side rendering,

1:07:44block title-nya server-side rendering,

1:07:46block content-nya

1:07:48itu sudah static side,

1:07:50dia sudah

1:07:52case secara static,

1:07:54dan untuk beberapa

1:07:56tempat, dia sudah

1:07:58di server render, cuma belum di-hydrate.

1:08:00Mungkin dia perlu

1:08:02interactivity, ya,

1:08:04perlu interactivity, dan hanya

1:08:06di-hydrate saat

1:08:08itu muncul di viewport.

1:08:10Oke, berarti ini

1:08:12sederhananya gabungan

1:08:14antara server-side

1:08:16rendering dengan

1:08:18side generation. Benar nggak?

1:08:20Dan ada client-side

1:08:22dan ada client-side rendering juga.

1:08:24Ya, pokoknya gabungan semua yang

1:08:26tadi kita ceritakan, gitu ya.

1:08:28Menarik sekali. Ini

1:08:30ada contoh framework-nya, ada Marko,

1:08:32Astro, ada Elefanti,

1:08:34yang bisa di-communicate.

1:08:36Si creator Angular

1:08:38bikin lagi, apa tuh?

1:08:40Quick. Dia island juga, kan ya?

1:08:42Gak salah, ya.

1:08:44Ya, ya.

1:08:46Quick island. Perusahannya gimana?

1:08:48K-W-I-K.

1:08:50Builder.io, kalau nggak salah, kan?

1:08:56Nah, ini dia, benar.

1:08:58Kalau nggak salah, ya.

1:09:04Anggular, betul?

1:09:06Misko Hegri.

1:09:08Ini island architecture,

1:09:10betul. Island, ya?

1:09:12Dia ada tulis di sini, ya?

1:09:14Dia kan yang diutamakan

1:09:16di sini, kan? Resumeable ini, kan?

1:09:18Iya.

1:09:20Jadi makin lama, makin banyak kombinasinya, ya.

1:09:24Iya. Jadi ada

1:09:26dari semua pendekatan itu

1:09:28ya kayak base of

1:09:30both worlds, ya. Kayak dicomot mana yang

1:09:32bermanfaat, mana yang

1:09:34banyak dibutuhkan,

1:09:36di-mix semua.

1:09:38Betul.

1:09:40Terakhir,

1:09:42sebelum kita

1:09:44tutup, ya, dan tadi udah ada

1:09:46server side, ada yang lain-lain, teman-teman

1:09:48bisa ke patterns.dev untuk melihat

1:09:50metode-metode apa?

1:09:52Contoh-contohnya sama detailnya.

1:09:54Sama detailnya, ada

1:09:56yang bahas macam-macam juga.

1:09:58Nah, ini ada sesuatu

1:10:00yang menarik di

1:10:02beberapa

1:10:04bulan belakangan.

1:10:06Jadi, kan tadi di awal,

1:10:08kalau server side trending itu

1:10:10mengirimin semua static site-nya

1:10:12yang degenerate di server

1:10:14ke client-nya.

1:10:16Ya, kontennya, semua kontennya, kan.

1:10:18Kemudian berubah di

1:10:20client side itu yang dikirimkan

1:10:22adalah datanya.

1:10:24Tapi dengan

1:10:26mengirimkannya dengan request dan

1:10:28response, kan.

1:10:30Nah, ini muncul

1:10:32tren lagi

1:10:34yang dikirimkan itu

1:10:36HTML-nya, HTML CSS dan

1:10:38JavaScript-nya, tapi dikirimkan tidak

1:10:40melalui

1:10:42request-response yang biasa, tapi melalui

1:10:44websocket.

1:10:46Websocket.

1:10:48Ini ada contohnya

1:10:50di sini, namanya Unpoly.

1:10:52Jadi kayak streaming, dong?

1:10:54Iya, kayak streaming.

1:10:56Ya, kelebihan-nya berarti speed dan

1:10:58kayak observability juga ya, berarti

1:11:00itu secara ga langsung, kan?

1:11:02Dia sebenarnya dirender di server, tapi dikiriminnya

1:11:04pakai websocket jadi agak lebih cepat

1:11:06dibandingkan server side trending.

1:11:08Ini ada beberapa contoh, ada Unpoly

1:11:10yang sifatnya

1:11:12lebih unopinionated

1:11:14atau Hotwire.

1:11:16Hotwire ini

1:11:18mumpulnya bareng

1:11:20si Ruby on Rails yang

1:11:22dibikin oleh Basecamp, kan?

1:11:24Hotwire. Ada satu lagi

1:11:26nah, ini

1:11:28dia beradanya dimana?

1:11:30Dia beradanya diantara server side

1:11:32trending dengan SPA.

1:11:34Jadi, dia ada di tengah-tengah sini.

1:11:36Jadi, dia

1:11:38secara halaman itu tetap

1:11:40di server

1:11:42yang harusnya cukup cepat

1:11:44kemudian, tapi

1:11:46secara interaktifitasnya

1:11:48bisa menyayangi single-place application.

1:11:50Menarik.

1:11:54Ada baru lagi.

1:11:56Ini baru ya.

1:11:58Jadi, ada tadi Hotwire.

1:12:00Kalau ga salah, Laravel juga ada.

1:12:02Namanya apa ya? Livewire, kalo ga salah.

1:12:04Ada ga disini?

1:12:06Kenapa mirip-mirip namanya?

1:12:08Livewire itu

1:12:10kayak ini, kayak

1:12:12aplikasi jaman dulu, Livewire.

1:12:14Nah, ini Hotwire.

1:12:16Kalau temen-temen tertarik,

1:12:18ini implementasinya dimana?

1:12:20Kalo ga salah, hey.com

1:12:22itu email kliennya si Basecamp

1:12:24itu menggunakan Hotwire.

1:12:26Iya.

1:12:28Dia menggunakan frameworknya namanya Stimulus.

1:12:30Framework JavaScriptnya.

1:12:32Ada Django juga ada.

1:12:34Kemudian untuk

1:12:36Phoenix Elixir ada namanya Liveview.

1:12:38Itu semua pake Websocket.

1:12:40Pake Websocket.

1:12:42Bukan HTTP.

1:12:44Kenapa?

1:12:46Itu Laravel Livewire.

1:12:48Itu Livewire?

1:12:50Ada juga.

1:12:52Dan Unpoly yang

1:12:54sifatnya unopinated.

1:12:56Jadi framework

1:12:58agnostik.

1:13:00Htmx juga ada.

1:13:02Oh, Htmx.

1:13:04Htmx itu kayaknya sering disebut.

1:13:06Sering disebut ya.

1:13:08Nah, itu.

1:13:10Trendnya ke arah sana.

1:13:12Kita ga tau ya, yang mana yang lebih

1:13:14populer nantinya.

1:13:16Tapi ini alternatif aja.

1:13:18Karena kalo di software, renderingnya pasti cepet.

1:13:20Tapi proses ngirim ke

1:13:22HTTP-nya lambat. Kurang bisa

1:13:24interaktif. Kalo misalkan diklik kayak gini ya.

1:13:26Retweet atau like gitu kan.

1:13:28Apa namanya?

1:13:30Gak bisa kan kalo di software kan.

1:13:32Harus refresh kan.

1:13:34Nah, ini di tengah-tengahnya.

1:13:36Jadi dia tetep bisa update, tapi...

1:13:38Tinggal kalian pake Websocket.

1:13:40Terus meringankan kerja

1:13:42JavaScript Engine di browser.

1:13:44Karena ga harus passing apa-apa ya.

1:13:46Dikirim udah jadi HTML.

1:13:48Jadi yang kerja beratnya tetep software.

1:13:50Oke, makin banyak ide aneh-aneh.

1:13:52Kurangan. Yang bikin...

1:13:54Kenapa Websocket?

1:13:56Kenapa ga HTTP? HTTP kan dia

1:13:58request-response kan. Harus ada proses

1:14:00refresh-nya gitu kan.

1:14:02Kalo Websocket dia kan kebuka terus.

1:14:04Koneksinya kan.

1:14:06Jadi ketika ada update, ya udah.

1:14:08Dia bisa komunikasi lagi gitu.

1:14:10Kalo HTTP kan dia

1:14:12begitu request, response udah nyampe,

1:14:14udah dia putus kan koneksinya kan.

1:14:16Kalo kita mau request yang baru, kita harus

1:14:18konek lagi.

1:14:20Jadi ini adanya di tengah-tengah.

1:14:22Jadi sebagai alternatif juga,

1:14:24lain pattern-pattern yang kita

1:14:26pelajari tadi. Mungkin

1:14:28disini lebih ke streaming server side

1:14:30kali ya? Masuknya ya?

1:14:32Ada kekurangannya?

1:14:34Ada kekurangannya sih

1:14:36dengan Websocket. Artinya

1:14:38server-nya harus kuat, karena

1:14:40Websocket itu harus

1:14:42keep alive.

1:14:44Iya, dia buka terus jaringannya.

1:14:46Apa, koneksinya ya?

1:14:48Koneksinya. Dan kalo

1:14:50ga bisa pake CDN, ya. Rata-rata CDN

1:14:52itu ga bisa sih. Contohnya kalo

1:14:54CloudFront itu ga bisa

1:14:56keep alive.

1:14:58Jadi harus konek langsung ke load balancer.

1:15:00Jadi load balancernya temen-temen harus

1:15:02kuat.

1:15:04Intinya orang infrared-nya kudu

1:15:06jago ya. Kalo engga, bisa ga

1:15:08sengaja ngedidos itu sendiri.

1:15:10Apa isilahnya?

1:15:12Rawan...

1:15:14Kan satu...

1:15:16Koneknya kan tetap liat

1:15:20load balancer. Nah, load balancernya itu harus

1:15:22kayak punya bandwidth

1:15:24yang besar. Karena harus bisa

1:15:26simultaneous user kan depends ya.

1:15:28Tergantung sama komedian. Jadi kalo

1:15:30Websocket semuanya dibuka

1:15:32ya harus kuat.

1:15:34Tapi ya memang cepet sih.

1:15:36Iya.

1:15:38Dari sisi klien juga lebih ringan

1:15:40kan. Karena yang bertugas

1:15:42melakukan rendering itu adalah

1:15:44pekerjaan yang paling berat itu di sisi server kan.

1:15:46Jadi klien tidak terlalu diberatkan untuk

1:15:48renderingnya.

1:15:50Ya, gitu.

1:15:52Oke.

1:15:54Kita sudah satu jam lebih? Ada

1:15:56lagi yang mau didiskusikan?

1:15:58Engga. Tidak ada?

1:16:00Sudah cukup? Oke.

1:16:02Kalo gitu, untuk

1:16:04episode kita

1:16:06malam hari ini, yang tadinya

1:16:08kita bingung mau ngomong apa, ternyata

1:16:10panjang juga ya. Ternyata tetep jam

1:16:12juga. Tetep ya. Tetep sih jam juga ya.

1:16:14Emang luar biasa ya.

1:16:16Berolan kita sampai

1:16:18kemana-mana. Ya, jadi

1:16:20itu dia

1:16:22pembahasan tentang berbagai metode

1:16:24untuk melakukan rendering. Mulai dari

1:16:26static,

1:16:28server, klien,

1:16:30dan kombinasi-kombinasi yang lainnya.

1:16:32Dan ada banyak lagi

1:16:34kedepannya juga pasti akan berkembang terus.

1:16:36Jadi, untuk itu

1:16:38sekian dulu aja untuk episode kita

1:16:40episode ke-19 tentang

1:16:42metode rendering. Buat teman-teman

1:16:44yang punya pertanyaan atau

1:16:46mau diskusi topik

1:16:48tertentu bisa ke

1:16:50bit.ly/ngobrolinweb

1:16:52gitu ya. Terima kasih

1:16:54buat atensinya.

1:16:56Kita ketemu lagi di episode

1:16:58berikutnya minggu depan.

1:17:00Selamat malam. Dadah.

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Ngobrolin Video Player - Ngobrolin WEB
EP 115

4 Feb 2025

Ngobrolin Video Player - Ngobrolin WEB

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...

Ngobrolin Design Pattern - Ngobrolin WEB
EP 122

25 Mar 2025

Ngobrolin Design Pattern - Ngobrolin WEB

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...

Ngobrolin Astro - Ngobrolin WEB
EP 131

4 Jun 2025

Ngobrolin Astro - Ngobrolin WEB

🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Malam ini kita kembali akan membahas Astro, fokusnya di sisi server. Masih b...

Komentar