EP 133

Ngobrolin Database - Ngobrolin WEB

Bagikan:

🗣️🕸️ Selasa malam waktunya #NgobrolinWEB! Malam ini kita akan membedah berbagai cara scaling database. Masih bersama panelis tetap kita Ivan dan Eka. Dan turut mengundang narasumber ahli. 🏷 Gunakan kode NGOBROLINWEBDN dan dapatkan DISKON 10% Untuk Pembelian Web Hosting DomaiNesia: Beli Web Hosting DomaiNesia disini: https://my.domainesia.com/ref.php?u=25754 🎁 DISKON 50% Cloud VPS Turbo dengan Kode Promo: NGOBROLINVPSDN Beli Web Hosting DomaiNesia disin: https://www.domainesia.com/cloud-v Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Ringkasan Episode

Bantu Koreksi

Episode ini membahas Database Scaling, khususnya perbedaan antara horizontal scaling dan vertical scaling. Topik ini diajukan oleh Mas Triad Moko melalui GitHub discussion sejak April tahun lalu. Narasumber tamu adalah Mas Doni yang sudah ketiga kalinya hadir di Ngobrolin WEB. Diskusi dimulai dengan cerita lucu tentang tagihan StreamYard yang membengkak hingga 13 juta per tahun setelah stream platform otomatis upgrade ke Pro ketika streaming ke 3 platform sekaligus. Kemudian masuk ke topik utama: database scaling. Host membahas bahwa tidak peduli seberapa cepat framework yang digunakan (Rust, Zig, Laravel), jika database query-nya lambat, aplikasi tetap akan lambat. Episode juga menyentuh perdebatan ORM vs Raw SQL, pentingnya memahami struktur data, tools untuk monitoring slow query, dan peran DBA di era modern.

Poin-poin Utama

  • Horizontal scaling = menambah jumlah server, Vertical scaling = menambah spesifikasi server (CPU, RAM)
  • Database sering menjadi bottleneck terlepas dari kecepatan backend framework
  • Perdebatan ORM vs Raw SQL: ORM support raw query, pilihan tergantung konteks dan kebutuhan
  • SQL memerlukan cara berpikir berbeda (set theory, joins, grouping) yang sulit bagi frontend developer
  • Role DBA (Database Administrator) semakin langka, tugasnya sering dibebankan ke DevOps/SRE
  • Tools untuk monitoring slow query: MySQL slow query log, pgAdmin untuk PostgreSQL, Prometheus + Grafana
  • EXPLAIN ANALYZE untuk melihat execution plan dan mengidentifikasi query yang lambat
  • APM (Application Performance Monitoring) seperti New Relic mahal, alternatif open source: Prometheus + Grafana
Transkrip Bantu Koreksi

0:00[MUSIC]

0:11Dapatkan hanya di Domesticia

0:13[MUSIC]

0:19[TING TONG]

0:22Hello, hello, hello

0:26Selamat malam

0:28Wah lupa disembunyain nih narasumbernya

0:30Ada songsportnya

0:31Mbak Eka, kok berubah?

0:34[TING TONG]

0:38Hello, hello semuanya

0:40Mudah-mudahan teman-teman sehat-sehat ya

0:43Yang ada di Youtube sama yang ada di linkin

0:45Apa kabarnya?

0:46Seperti biasa, selesam malam

0:48Waktunya ngobrolinin

0:51Ngomong-ngomong nggak jadi ada di Twitch lagi ceritanya

0:56[TING TONG]

0:59Tagian membengkak

1:01Gimana cerita, gimana cerita ya Mas Ridha?

1:04Mungkin bisa jadi cerita lucu

1:07Jadi kan baru dapet sponsor nih, kan

1:10Tujuan utama sponsor adalah untuk beli stream ya

1:13Yang paket core namanya, yang tengah-tengah lah

1:18Yang paling murah lah ya, iya kan

1:21Terus nggak lama setelah dapet sponsor

1:25Harganya naik

1:27Harganya naik dulu

1:28Tadinya bukan segitu

1:30Harganya naik, abis itu

1:32Begitu udah upgrade ke yang core

1:35Nggak baca kan target streamingnya bisa hanya dibatasi 2

1:42Bikin lah linkin

1:45X nggak bisa, karena harus premium kan

1:47Akhirnya Twitch

1:48Jadi 3, langsung otomatis naik ke Pro

1:5313 juta

1:55Setahun

1:57Abis itu langsung kaget kan dapet tagian

2:01Kok segi ini, turunin lagi

2:04Ternyata turuninnya juga nggak dapat uang kemali

2:07Tapi dalam bentuk

2:09Ini tarifan cerita ya, tarifan

2:11Iya, tarifan nggak bisa dikasih credit

2:14Jadi ya kita bertahan 2 tahun ke depan menggunakan stream ya

2:18Itulah suka dukanya podcast

2:23Gak melulu, suka melulu ya

2:26Ada jebakan-jebakan

2:28Iya, apa namanya

2:30Uang sponsornya jadi nggak cukup

2:32Harus cari sponsor lagi kita

2:34Ngomongin sponsor ya

2:38Seperti biasa malam hari ini sudah episode ke yang ke berapa ya

2:41134

2:43Dan episode ke 5 atau ke 6 ya sama Domensia

2:48Jadi kita kolaborasi sama Domensia

2:51Nah yang beda adalah kita dapat ini baru

2:55Kita menerima apa namanya

2:59Feedback dari teman-teman

3:02VPS, jadi sekarang

3:06Teman-teman kalau mau langganan atau mau nyobain VPSnya Domensia bisa

3:10Pakai promo code ngobrolin VPS DN

3:16Jadi bisa nyobain virtual private server ya atau VM lah ya

3:22Buat deploy-deploy termasuk nyobain database

3:26Database bisa di VM juga

3:28Promo-nya ini 50%

3:31Sekali pakai aja untuk pembelian baru

3:34Bisa untuk Cloud VPS Turbo

3:38Untuk semua paket

3:40Tidak berlaku untuk Cloud VPS Eco

3:44Kalau Eco ini berarti kayaknya ekonomis ya

3:46Kalau Turbo itu yang paling kencang ya

3:48Nebak-nebak doang

3:50Terima kasih soalnya

3:52Kita coba

3:54Amin Mas Yudi semoga dapat sponsor lagi

3:56Halo

3:58Mas Arif juga dari LinkedIn

4:02Ada Mas Doni

4:04Ada Mas Doni dari Youtube

4:08Ngomong-ngomong soal

4:10Sudah habis

4:12Jadi kita mendatangkan Nara Sumber Langganan ya

4:14Udah berapa kali ya Mas Doni?

4:16Udah berapa kali? Tiga kali ya

4:18Tiga kali

4:20Terima kasih banyak

4:22Udah menyempatkan waktunya

4:26Gimana sekarang?

4:30Lagi sibuk apa Mas?

4:32Lagi banyak speaker-speaker ya

4:34Habis dari Pontianak tadi ceritanya

4:38Ya tadi

4:40Habis pulang dari Pontianak sebenernya

4:42Subuh tadi

4:44Oh tadi pagi

4:46Tadi pagi

4:48Kita ada kesempatan untuk ngisi

4:50Mengenalkan AI ya

4:52Di salah satu event

4:54Adobe US

4:56Kebetulan waktu itu

4:58Diundangnya di Universitas Tanjung Pura Pontianak

5:00Di sana

5:02Jadi membantu untuk memberikan

5:04Perspektif bagaimana

5:06Untuk bisa menggunakan AI

5:08Untuk social impact di sana

5:10Gak melibir ke IKN

5:12Sekalian

5:14Jauh Mas

5:16Siapa tahu

5:20Aku tadi mikirnya sampai Pontianak

5:22Berarti ngajarinya di IKN ini

5:24Itu kayaknya

5:26Kalau diundang di IKN itu

5:28Mix feeling ya

5:30Bisa lihat itu

5:32Bisa lihat tugular yang ipsum loh

5:34Tugular yang ipsum itu

5:36Nggak tahu gimana

5:38Tugu placeholder

5:40Masih loading

5:42Terus gimana

5:46Animo

5:48Teman-teman yang

5:50Penonton di sana

5:52Terhadap perkembangan AI

5:54Mereka menggunakannya itu sudah sejauh mana sih

5:56Legal workshop ya

5:58Di sana

6:00Yang ditargetkan itu sebenernya

6:02Malah bukan yang punya background

6:04Teknik informatika

6:06Atau IT

6:08Tapi yang ikut itu kayak

6:10HI

6:12Kemudian ilmu komunikasi

6:14Di sana

6:16Wokshopnya tentang apa

6:18Wokshopnya itu tentang

6:20Yang pertama itu adalah

6:22Bagaimana perspektif dari penggunaan AI

6:24Dalam kehidupan saya

6:26Yang pertama, yang kedua itu

6:28Pengenalan sederhana machine learning

6:30Pake teachable machine

6:32Oh

6:34Oke, jadi bukan hanya penggunaan

6:36Chat

6:38Transfer learning maksudnya

6:40Transfer learning, oh bukan

6:42Teachable machine itu

6:44Adalah produk dari Google

6:46Yang dimana kita bisa melatih

6:48Machine learning

6:50Hanya menggunakan browser

6:52Di sana

6:54Yang tensorflow.js itu bukan kan

6:56Yang bisa dieksport

6:58Ke tensorflow.js

7:00Oh iya iya

7:02Waktu itu sempat dengar

7:04Waktu masih main sama tensorflow.js

7:06Udah lama sih

7:082018

7:102018

7:12Waktu baru-baru

7:14Baru muncul

7:16Iya lagi height

7:18Oke menarik menarik menarik

7:20Ya, jadi malam ini

7:22Kita akan bahas tentang

7:24Scaling database, ini adalah topik

7:26Diminta oleh Mas Triad Moko

7:28Di github

7:30Discussion kita

7:32Iya, udah lama

7:34Mintanya dari April

7:36Tahun lalu

7:38Tahun lalu lagi

7:40April nya bukan April tahun ini

7:42April nya tahun lalu

7:44Yang minta dibahas tentang database scaling

7:46Nah, saya ingat pas

7:48Mas Donny sempat sharing

7:50Cukup banyak kan ya di ex ya

7:52Di twitter, tentang database kan

7:54Kayak best practice

7:56Wah ini kayaknya cocok nih, dicolek aja

7:58Ternyata gayung bersambut

8:00Jadi malam hari ini kita akan bahas

8:02Apa sih bedanya

8:04Horizontal scaling sama vertical scaling

8:06Secara gampangnya dulu, gak usah dalam

8:08Kalau vertical itu

8:10Menambahkan

8:12Spesifikasi dari

8:14Misalkan 2 CPU ke 4 CPU

8:16Jadi nambah

8:18Upgrade

8:20Upgrade device

8:22Kalau horizontal itu menambahkan

8:24Device

8:26Open dengan spek yang sama

8:28Untuk bisa membagi

8:30Cluster

8:32Oh replication

8:34Replication lebih tepat

8:36Oke

8:38Oke

8:42Oke kalau gitu, kita mulai

8:44Dari mana, kalau misalkan

8:46Apa

8:48Nah ini pertanyaan penting

8:50Yang pertama

8:52Kenapa topik database ini penting

8:54Oke

8:58Kalau ada yang kemarin minta ya di githubnya

9:00Itu githubnya Mas Riza ya

9:02Githubnya ngobrolin web

9:04Githubnya ngobrolin web

9:06Nah kalau kita

9:08Dari pertanyaan itu, oh minta dong

9:10Bagaimana pembahasan replikasi dari

9:12Radical punggung horizontal

9:14Sebenernya kalau kita ngomong

9:16Pentingnya dimana, itu adalah

9:18Di back-end, di sisi back-end

9:20Kebanyakan kita itu akan

9:22Selalu berinteraksi dengan database

9:24Di sana

9:26Dan biasanya bottleneck aplikasi

9:28Itu bukan di bahasa

9:30Pemogramannya

9:32Hmm, selalu database pasti ya

9:34Puslim itu database disana

9:36Katakanlah sederhananya

9:38Pakai

9:40JavaScript, Node.js

9:42Atau pakai Rails, pakai PHP

9:44Gitu kan

9:46Atau pakai Rust, gitu ya

9:48Pakai Rust, pakai Zig

9:50Yang blazingly flash

9:52Blazingly fast

9:54Iya blazingly fast, gitu kan ya

9:56Terus 100x kecepatannya

9:58Tetapi in the end, kalau misalnya

10:00Dia terkoneksi dengan database

10:02Dan database itu

10:04Pembutuhkan waktu 5 detik

10:06Untuk memproses, mau pakai

10:08Rust, mau pakai Laravel

10:10Tetap aja 5 detik ya

10:12Ya, 5 detik plus sekian

10:14Disana

10:16Sehingga pemahaman-pemahaman kita

10:18Mengendal kapasitas

10:20Dan skalabilitas dari database

10:22Itu jadi menarik

10:24Penting

10:26Itu kayak never ends

10:28Pembahasannya, dan sangat luas sekali

10:30Ya, oke

10:34Yang paling sering bikin

10:36Lambat itu apa sih biasanya

10:38Query, load

10:40Atau IO

10:42Apa semua

10:44Sebenernya

10:46Kalau kita mau

10:48Apa sih yang membuat lambat, gitu kan

10:50Yang membuat lambat itu

10:52Sebenernya adalah bagaimana

10:54Kita mengakses data ini, gitu kan

10:56Kalau kita ketahui

10:58Database itu adalah

11:00Banyak struktur data yang

11:02Digunakan untuk kita menyimpan data

11:04Dan data itu disimpan di dalam storage

11:06Bayangin dulu jamannya kita ya

11:08Jamannya kita, tahun 2000an

11:10Itu kan SST belum

11:12Belum secepat sekarang

11:14Belum murah sekarang, dan belum semurah sekarang

11:16Murah dan cepat sekarang

11:18Disana, sehingga kerasa itu

11:20Bottle lag nya untuk menang sesetengah itu

11:22Dan RDBMS

11:24Data business ini adalah

11:26Most of the time ada RDBMS

11:28Relational Data Management System

11:30Jadi MySQL, Postgres

11:32Dan Oracle

11:34Atau apapun itu yang berbayar

11:36Itu mereka pasti akan

11:38Ada tabel-tabel

11:40Yang berrelasi satu dengan yang lainnya

11:42Ketika berrelasi

11:44Berarti kita harus menggabungkan

11:46Menjoin tabel-tabel tersebut

11:48Nah, ketika kita melakukan join

11:50Itulah kalau kita tidak

11:52Carefully mengatur

11:54Desain dari data business itu

11:56Maka proses pencarian datanya

11:58Akan menjadi lambat

12:00Disana

12:02Jadi yang membuat lambat itu

12:04Adalah skema nya

12:06Dan cara kita mengambil

12:08Datanya

12:10Query

12:12Plus seberapa besar data

12:14Tersebut

12:16Mungkin dalam tabel bisa giga-giga

12:18An gitu ya

12:20Terapai kalau yang udah di level

12:22Besar sekali

12:24Disana, itu berpengaruh

12:26Oke

12:28Kalau ngomongin

12:30Query

12:32Berarti ada pengaruh

12:34Penggunaan ORM juga dong ya

12:36Oh, itu yang

12:38Kayaknya rame ya

12:40Rame ya

12:42Kita bahas

12:44Di

12:46Di forum

12:48Dan di kalangan

12:50Ada tim puris ya

12:52Tim puris SKLRO

12:54Ada yang tim apatis

12:56Tim ORM

12:58Tidak ada yang lebih baik

13:00Tapi itu tergantung kondisi dan konteks

13:02Iya

13:04Kita juga semua ORM

13:06Itu support

13:08raw SKL kan ya

13:10Harusnya iya

13:12Jadi ORM itu sebenarnya

13:14Gak ini ya

13:16Bukan sesuatu yang

13:18Sangat support gitu

13:20Bahkan mereka itu bisa

13:22Dan raw query

13:24Kalau misalkan ada masalah

13:26Kalau kita pakai ORMnya langsung

13:28Kita mau lebih efisien itu sebenarnya

13:30Bisa tuh

13:32Pakai raw query

13:34Bagi penonton yang berasal dari

13:36Dunia front-end

13:38Kalau database query itu

13:40Antara

13:42Query langsung atau ORM

13:44Itu sama dengan main CSS

13:46CSS vanilla

13:48Pake tailwind

13:50Ya itu lah

13:52Perbandingan apple to apple nya

13:54Iya itu

13:56Analogi yang bisa dipahami ya

13:58Iya

14:00Khusus penonton nanti yang

14:02Ini orang front-end apa ya

14:04Kalau tailwind kayaknya masih

14:08Agak low level ya

14:10Kurang lebih lah begitulah ya

14:12ORM itu object

14:14Relational mapper

14:16Dan

14:18Mungkin ada

14:20Beberapa istilah

14:22Juga

14:24Kalau kita mau berinteraksi

14:26Dengan database maksudnya

14:28Aplikasi atau kode kita mau berinteraksi

14:30Dengan database

14:32Maksudnya

14:34Kalau pakai ORM kan gampang

14:36Bisa koneksi

14:38Terus bisa query pakai

14:40API atau SDK nya dia

14:42Masing-masing ya

14:44Mau pakai drizzle atau pakai

14:46Action

14:48Action apa

14:50Kalau rails lupa namanya pokoknya

14:52Semua ORM ya

14:54Terus

14:56Juga sebenernya

14:58Ada library yang

15:00Di tengah-tengah namanya itu

15:02Query builder

15:04Kalau di node.js itu namanya ada

15:06Dulu ya gak tau sekarang ya ada namanya

15:08Next.js k-n-e-x

15:10Nah itu dia hanya

15:12Hanya membuat

15:14Query aja

15:16Jadi dia

15:18Tidak

15:20Tidak merelasikan antara

15:22Object oriented ya

15:24Object oriented programming dengan

15:26Table atau

15:28Di database gitu jadi dia hanya query

15:30Builder aja

15:32Tapi pengalaman ya

15:34Misalnya kalau bagi kita yang bisa

15:36Langsung SQL query

15:38Dan

15:40Diketemukan sama orang yang

15:42Gak pernah menentu database

15:44Dan taunya hanya main di front-end

15:46Memang susah memahami

15:48Memahami SQL

15:50Query itu loh

15:52Karena harus paham matematika

15:54Dan

15:56Paham itu kan diagram

15:58Dan segala macam kan diagram

16:00Oh join-join

16:02Join-join dan grouping

16:04Itu sebenernya

16:06Kalau

16:08Pada namanya konsep berpikirnya

16:10Sangat berbeda

16:12Untuk lakukan SQL query

16:14Kalau dari sisi

16:16Seberang ya bukan susah

16:18Menjago backend tapi sisi seberang

16:20Itu sulit loh

16:22Karena beda konsep berpikir

16:24Makanya adalah ORM untuk

16:28Mempermudah hip

16:30Tapi dulu saya waktu awal

16:32Awal karir banget

16:34Itu sempat

16:36Ditandemin dengan ada role yang namanya

16:38DBA database administrator

16:40Memang masih ada sampai sekarang

16:42Dia yang bikinin query kita tinggal

16:44Minta doang

16:46Nanti dia bikinin viewsnya kita tinggal

16:48Tinggal select

16:50Tinggal select dari view yang dia buat ya

16:52Enggak select malah udah dikasih

16:54Kayak snippet-snippetnya ini untuk select ini untuk insert

16:56Ini untuk apa gitu

16:58Udah disediain jadi enak banget

17:00Merasa dimanjakan

17:02Gitu

17:04Karena view beda lagi

17:06View itu bisa bikin subset dari table

17:08Betul-betul jadi dia bikinin

17:10Khusus misalkan oh saya mau join

17:12Table ini sama table ini namanya table student

17:14Mungkin subjek gitu ya

17:16Dia bikinin itu view student subjek

17:18Jadi kita gak perlu join

17:20Kayaknya sekarang role nya udah gak ada ya

17:24Atau mungkin role untuk itu

17:26Tapi DBA masih

17:28DBA masih

17:30Kalau yang enterprise itu

17:32DBA itu penting

17:34Karena urusannya

17:36Itu tadi scaling

17:38Scaling

17:40Replication

17:42Backup

17:44Restore disaster recovery

17:46Semua kayaknya penting deh

17:48Tugas DBA itu

17:50Orang

17:52Di dunia modern ini mulai jarang

17:54Mencari DBA

17:56Pada akhirnya kemampuan

17:58Ini itu dibebankan ke temen-temen

18:00Devops, SRI

18:02Dulu Devops, SRI

18:06Padahal itu kayak

18:10Ada art

18:12And science nya sendiri

18:14Aku coba untuk belajar

18:16Database internalnya tuh

18:18Even kayak

18:20How it works itu aku harus tahu

18:22Tentang tree

18:24Tree base data structure gitu

18:26Bagaimana parser dari SKL

18:28Dari kita ngeparser

18:30SKL query supaya jadi execution

18:32Disana itu kayak

18:34Bisa satu semester sendiri

18:36Itu membahas itu semua

18:38Oke

18:40Kalau gitu kita omongin

18:42Gimana caranya

18:44How to start

18:46Gimana mulai untuk

18:48Misalkan udah punya

18:50Database nya

18:52Untuk optimize nya itu mulai dari mana

18:54Mungkin ini berhubungan

18:56Ini ya introdasinya ada

18:58Salah satu pertanyaan di youtube ya

19:00Mas tabel saya pas SKLnya ukurannya

19:02Kurang lebih 300 giga tuh

19:06Mereka nyoba tambah index

19:08Solusinya terbagi gimana

19:12Jadi ini ada step by step

19:14Ya untuk kita mengetahui

19:16Dan nanti

19:18Akan semakin kompleks

19:20Bagaimana kita bisa

19:22Optimize nya

19:24Yang pertama ketika kita mengetahui adanya

19:26Kelambatan dari aplikasi kita

19:28Itu terkadang majoritas

19:30Di Indonesia atau di perusahaan

19:32Indonesia itu belum punya

19:34Monitoring atau observability yang

19:36Cukup oke

19:38Untuk bisa mengetahui blockways

19:40Bagaimana

19:42Jadi definisi lambat itu

19:44Harus ditentukan tidak semua

19:46Proses lambat kan

19:48Misalnya kalau ada select

19:50Select data limit 5

19:52Itu kan enggak lambat

19:54Yang bikin lambat itu adalah query

19:56Yang beri impact ke

19:58Semuanya

20:00Berarti yang harus diketahui adalah

20:02Tahu enggak ada yang slow query

20:04Ini digunakan

20:06Yang namanya ada

20:08Observability tools

20:10Jadi kalau misalnya kamu kebetulan

20:12Kami di siruan group itu

20:14Expertisnya di Postgres ya

20:16Jadi apakah yang cerita dari Postgres

20:18Ada tabel

20:20Kalau pakai PSPL

20:22Aja itu ada tabel namanya

20:24PG stat statement

20:26PG statistic statement

20:28Gimana kita bisa tahu query yang

20:30Lambat

20:32Jadi kalau misalnya

20:34Mas data bisaya lambat

20:36Yang mana yang bikin lambat

20:38Jadi temukan dulu

20:40Querynya

20:42Yang lambat

20:44Atau kalau misalkan

20:46Ada yang punya Grafana

20:48Kalau ada yang pakai

20:50Kalau di Google ya, ada yang namanya Cloud SQL

20:52Itu ada beberapa

20:54Ada beberapa

20:56Metric yang kalian bisa access

20:58Slow query

21:00Itu bisa disediakan

21:02Jadi ada nggak tools

21:04MySQL, ada MySQL slow query kan

21:06Bisa dibuat locknya

21:08Ada

21:10MySQL bisa diaktifkan konfigurasi nya

21:12Untuk lock

21:14Slow query

21:16Nanti query yang lebih dari

21:18700 milliseconds

21:20Atau 1 second itu akan di lock

21:22Betul, disana

21:24Dan setiap engineer itu punya channel

21:26Bisa sendiri untuk mengetahui

21:28Bagaimana slow query itu

21:30Di sana

21:32Jalan Postgres sendiri itu

21:34Kalau kami, biasanya kami pakai

21:36Prometheus ya, untuk irim Metrics

21:38Ini mungkin agak sedikit detail

21:40Ke infra, tapi intinya adalah

21:42Gunakan tools yang mampu untuk bisa

21:44Mengakses statistiknya

21:46Even phm admin aku nggak tahu ya

21:48Phm admin itu ada nggak tools

21:50Untuk mengetahui itu

21:52Karena gpg admin

21:54Itu juga ada beberapa tools untuk

21:56View, jadi tabel itu bisa

21:58Diview di dalam GUI nya

22:00Sehingga GUI nya tahu bahwa ini

22:02Ada beberapa slow query

22:04Yang muncul disana

22:06Jadi itu dulu mas Jejen

22:08Yang pertama gitu kan

22:10Kita lanjutin yang kedua gitu kan

22:12Nah ketika ada

22:14Sudah tau nih, ada

22:16Top 5 gitu kan, top 5 atau top 10

22:18Kita bisa

22:20Investigate, mulai dengan

22:22Ada

22:24Ada salah satu SQL namanya

22:26Bila Explain Analyze

22:28Ini yang mungkin

22:30Jarang ya

22:32Diajarin di kampus juga

22:34Disana

22:36Dan

22:38Orang itu nggak ngah kalau ini tuh

22:40Ada fiturnya, jadi

22:42Explain Analyze

22:44Query

22:46Yang dimana, kalau mungkin

22:48Mas Riza bisa bantu

22:50Untuk mencari ya

22:52Disana

22:54Itu ada, bagaimana kita

22:56Tahu bahwa query tersebut

22:58Yang

23:00Ada atau image ya

23:02Untuk bisa melihat

23:04Repersentasi maksudnya apa

23:06Gak ada, kita cari yang

23:08Lain

23:10MySQL

23:12Reading

23:14Postgre Query Plan

23:16MySQL juga

23:18Punya tuh

23:20Itu kan yang di Postgre ya

23:22Jadi ada, mungkin yang ini aja

23:24Stop disini aja Mas Riza, yang ada hasil

23:26Plan

23:28Misalkan disitu kan

23:30Ada Explain Analyze

23:32Ada selectnya gitu kan ya

23:34From dari

23:36Dari tabel mana

23:38Ada filternya tuh disitu

23:40Nah

23:42Itu akan memberitahu bagaimana

23:44Kiranya, planningnya

23:46Eksekusi itu akan berjalan

23:48Disana, jadi disitu ada

23:50Beberapa

23:52Beberapa detail

23:54Bahwa

23:56Di dalam query itu akan melakukan sesuatu

23:58Di databasenya

24:00Dan

24:02Untuk memahami ini

24:04Itu kita harus belajar

24:06Bagaimana penyimpanan data

24:08Di dalam database, kalau kita

24:10Bisa lihat disitu yang

24:12Yang paling gampang aja, yang paling sering terjadi

24:14Kita nggak usah lihat

24:16Joint condition, total-total

24:18Harusnya ada total ini ya

24:20Ada planning, execution time itu

24:22Lapan, itu lapan

24:24Lapan millisecond

24:26Lapan ribu

24:28Lapan millisecond

24:30Ini koma ya

24:32Iya itu lapan millisecond

24:34Aku lupa bahasanya gimana

24:36Di disana, tapi

24:38Tapi intinya ini nanti akan

24:40Disitu ada salah satu kunci

24:42Namanya sequential scan

24:44Sequential scan disitu

24:48Berarti dia itu akan mencari

24:50Di seluruh data yang ada

24:52Di dalam data table tersebut

24:54Jadi worst case scenario-nya

24:56Berarti end ya

24:58End of data, disana untuk

25:00Menemukan disitu

25:02Dan itu yang kita

25:04Bisa lakukan adalah mengimprove bagaimana

25:06Logika

25:08Data itu disimpan dan ditemukan

25:10Kembali

25:12Jadi basicnya disini

25:14Pemahaman, pembacaan

25:16Explanation, planningnya

25:18Disana

25:20Jadi intinya sebenarnya

25:26Yang pertama adalah

25:28Di-measure ya

25:30Diukur, lambat itu seberapa lambat

25:32Cepat itu seberapa cepat

25:34Karena itu kan relatif ya

25:36Jadi bisa diukur pakai

25:38Apa namanya?

25:40PG-Stat

25:42Terus

25:46Habis itu bisa pakai

25:48Slow query juga kalau di MySQL

25:50Atau lewat APM

25:52Juga bisa kan kelihatan kan ya

25:54Bisa, bisa APM

25:56Tapi biasanya mayoritas

25:58Ini ya

26:00Maksudnya apa kan pekerjaannya

26:02Banyak menghandle

26:04Legacy code dari

26:06Legacy line

26:08Itu jarang punya APM yang bagus

26:10Biasanya

26:12Jadi

26:14Kalau nggak punya

26:16Apalagi kalau yang melihat ini

26:18Malah di luar gitu kan

26:20APM itu kan tidak apa-apa

26:22Disana

26:24Kita bisa langsung akses database-nya

26:26Kalau mau pakai

26:28De-beaver gitu ya

26:30Bisa juga

26:32Sayang-sayang

26:34Sayang-sayang aku udah lama nggak hands-on ya

26:36Jadi aku nggak bisa

26:38Nge-bisa demo-in

26:40Di sini, tapi intinya

26:42Kalian tuh bisa hanya menggunakan

26:44CLI doang untuk mengetahui

26:46Query mana yang lambat

26:48Disana

26:50Boleh mungkin di-spill

26:52Sedikit ya, APM yang bagus itu

26:54Standarnya Mas Donny apa sih?

26:56APM yang bagus adalah

27:00Tergantung budget

27:02APM itu mahal ya

27:04New Relic

27:06Iya, New Relic

27:08Iya, New Relic

27:10Tapi mahal

27:12Kalau punya budget New Relic

27:14Data drop ya

27:16Data drop juga mahal

27:18Tapi kalau mau tahu

27:20Zero One Group pakai apa

27:22Prometheus ganti dashboardnya

27:24Di Grafana

27:26Tapi kami lagi main ekspor namanya

27:28Prometheus

27:30Back-endnya Elastic Stress

27:32Kenapa?

27:34Prometheus back-endnya

27:36Prometheus itu

27:38Stack yang berbeda

27:40Kalau Elastic Stress itu LK

27:42Elastic Log Test

27:44Kibana

27:46Elastic sama Kibana

27:48Betul-betul

27:50Kalau yang Grafana itu biasanya LGTM

27:52Loki

27:54Grafana Tempo

27:56Mimian

27:58Open Source Solution

28:00Kalau misalnya ya

28:06Enterprise, on-premise

28:08Gak perlulah

28:10Kamu bisa akses sendiri lah database

28:12Query gitu

28:16Langsung SSA

28:20Langsung masuk ke ini ya

28:22Atau database-nya di-dump dulu

28:24Coba-coba di lokal gitu ya

28:26Jadi kalau mau start gitu

28:28Kalau mau pakai APM

28:30Kami pakai LGTM

28:32Dan kami lagi eksporasi Cygnos namanya

28:34Cygnos, oke

28:36Sentry mahal by the way

28:38Apa mahal?

28:40Sentry

28:42Sentry mahal ya

28:44Mahal untuk di-running self-host

28:46Jadi dia butuh 4 CPU

28:484 CPU

28:506 dan 3

28:52Oh yang self-hostednya ya

28:54Ya, tapi untuk buat start up itu ya murah-murah aja

28:58Tapi dia juga startnya udah yang 4 CPU juga gak murah kan ya

29:05Kalau dihitung per bulannya lumayan ya

29:07Oh iya, lumayan

29:09Jadi makanya APM apa yang paling terbaik tergantung budget

29:12Semakin mahal semakin baik

29:16Ya maksudnya kan tadi

29:18Menyebutin APM-nya kurang gitu kan

29:21Ternyata memang, berarti budgetnya memang kurang

29:25Nah ini Nur Holid ini mantep nih

29:29Sering pakai explain analyze semenjak ada isu query

29:31Ternyata karena order by

29:33Kalau short order dari join gak pake indexing

29:37Ya dia sekuensial

29:39Jadi mungkin kasih gembaran umum ya

29:42Sena yang tadi kan bahwa

29:44Ketika kalian anak back-end itu

29:46Akan sangat bermanfaat

29:48Menginvestasikan waktunya bagi mana tetap sepekerja

29:50Di sana

29:52Nah proses indexing itu adalah

29:54Sebenernya adalah membagi pencarian

29:56Dengan melalui struktur data tree

29:58Gitu

30:00Jadi kita tidak perlu menge-scan semuanya

30:02Data yang ada

30:04Ada yang paling populer itu adalah

30:06B-tree namanya

30:08B-tree index

30:10Di situ yang secara umum sering digunakan

30:12Jadi kalau

30:14Kalau tidak di indexing gitu kan ya

30:16Dia akan langsung nge-scan semua

30:18Yang tadi aku bilang di awal

30:20Nge-scan semua row untuk mencari data

30:22Di sana

30:24Dan itu bisa kayak

30:2610-100x ini

30:28Waktunya

30:30Even seribu

30:32Untuk bisa nyari data

30:34Di situ

30:36Iya

30:40Perlu ya apa

30:42Harus belajar big o notation

30:44Big o notation ya

30:46Analytics good

30:48Analytics good

30:50Analytics good

30:52Sering juga

30:54Karena

30:56Keburu terekspos dengan

30:58Banyak best practice

31:00Kalau database lambat

31:02Tambahin aja indexnya

31:04Index itu kan kalau analoginya

31:06Kayak apa ya? Kayak buku gitu ya

31:08Buku ini lah

31:10Yellow Pages ada yang ngalamin ga sih?

31:12Contact deh

31:14Sebenernya kayak

31:16Sebenernya kayak liat

31:18Kalau kita ngomong

31:20Kalau kita ngomong

31:22Kamu kayaknya terlalu

31:24Marketnya generasi

31:26Yang lebih muda kayaknya ga pernah

31:28Pilih-pilih baju

31:30Daftar isi

31:34Daftar isi tebel o konten

31:36Nah itu

31:38Ini

31:40Langsung gue tunjukin nih

31:42Ini butuh

31:44Buku manual mobil saya

31:46Terus kan isinya

31:48Banyak banget ya kan

31:50Gak mungkin saya baca satu-satu

31:52Yang mau saya cek dimana

31:54Tentu

31:56Kalau index di database itu

31:58Ya langsung saya langsung ke daftar isi

32:00Disini, oh masalah Oli

32:02Halaman sekian

32:04Bukan, daftar isi di depan

32:06Biasanya index di belakang, bener ga sih?

32:08Kalau buku ya

32:10Kalau buku definition indexnya beda

32:12Ya definition indexnya beda

32:14Kalau kayak ini aja lah

32:16Oh ya daftar isi, daftar isi di depan

32:18Kalau

32:20Di belakang itu index

32:22Index untuk kata-kata kan

32:24Ya

32:26Kalau yang di database itu index ini

32:28Index begini, bukan daftar isi

32:30Betul, jadi kayak apa ya

32:32Contact book lah, contact book

32:34Kalau misalkan saya mau cari

32:36Atau Mas Donny mau cari Riza kan

32:38Saya harus scroll dari A sampai R

32:40Dulu kan

32:42Jadi pencet aja huruf R

32:44Nah baru cari Riza, deket

32:46Kalau saya kan tinggal pake "Hi Google

32:48Call Riza"

32:50Woi woi woi

32:52Ini analogi digital ya

32:54Mau ngeluarin yellow pages

32:58Sudah ga punya

33:00Jadi contact book aja

33:02Gitu lah ya

33:04Dan kalau index

33:06Ini di apa ya

33:08Semuanya di index

33:10Ya jadinya sama aja

33:12Balik lagi kayak kita baca buku satu halaman

33:14Satu halaman gitu

33:16Jadi harus diperhatikan juga

33:18Jadi tidak

33:20Semua solusi adalah menambahkan index

33:22Sebenernya karena sebenernya

33:24Kalau kita lihat

33:26Kalau kita menambahkan indexnya lebih banyak

33:28Berarti ketika proses data itu dimasukkan

33:30Itu juga harus memasukkan indexnya juga

33:32Pada waktu itu

33:34Dan itu adalah rate performance

33:36Rate data base nya

33:38Bayangkan

33:40Kalau misalnya itu data

33:42Itu sering banget diisi

33:44Let's say tablet transaksi ya

33:46Yang dihajar banyak

33:48Itu jadinya bisa lebih lama banget

33:50Jadi kita harus punya ini ya

33:52Semua itu trade off ya

33:54Semua itu trade off

33:56Tidak ada solusi ini

33:58Silver bullet

34:00Dan kebanyakan index

34:02Storage nya membengkak

34:04Overhead

34:06Karena index itu kan perlu disimpen

34:08Dalam bentuk pointer

34:10Bahasanya sih pointer

34:12Menuju datanya di raw mana

34:14Jadi kita simpen

34:16Indexnya itu disimpen lagi

34:18Di table pointer

34:20Dan pointer itu memakan space

34:22Kalau data base nya membengkak

34:24Storage kita membengkak juga

34:26Jadi ada

34:28Trade off juga

34:30Yang bakal kita bahas

34:32Kalau sudah mandek disini

34:34Kita next step nya

34:36Lanjut

34:38Jadi next step nya

34:40Setelah katakan lagi

34:42Udah nih kita

34:44Udah oke nih mas

34:46Query nya udah

34:48Udah kita improve

34:50Udah kita kasih index

34:52Disana

34:54Yang dilihat dari level coding nya lagi

34:56Teman-teman disini pakai connection pooling apa enggak

34:58Disana

35:00Connection pooling itu

35:02Ketika kita melakukan connection

35:04Kedalam setelah database itu kan butuh

35:06Membuka connection

35:08Ada shake hand

35:10Ketika sudah dipakai

35:12Connection itu diputus

35:14Bayangin kalau kalian pakai connection pooling itu akan jadi terus-terusan

35:16Contoh analogi nya

35:18Karena kita selalu membahas analogi

35:20Analog analogi nya itu kayak

35:22Kamu parkir sendiri

35:24Mobil kamu

35:26Masuk ke parkiran

35:28Cari yang kosong gitu kan ya

35:30Terus keluar dan super market

35:32Nah connection pooling ini namanya pool ya

35:34Jadi mengumpulkan connection itu kayak

35:36Avali sebenarnya

35:38Jadi kita enggak

35:40Ini kita menggunakan

35:42Satu

35:44Meja yang sama gitu kan ya

35:46Untuk menaruh parkiran kita sederhananya gitu

35:48Jadi connection

35:50Yang kita gunakan untuk membuka

35:52Database

35:54Itu akan direuse untuk

35:56Request yang lain

35:58Jadi kita buka

36:00Connection

36:02Itu juga ada art

36:04Sama science nya sendiri

36:06Karena

36:08Gak bisa dibuka terus

36:10Connection itu bergantung pada RAM

36:12Bergantung pada RAM

36:14Satu connection itu

36:16Mungkin 25 MB

36:18Dan berapa aplikasi

36:20Yang kalian buka gitu kan ya

36:22Kalau misalnya aplikasinya

36:24Ini ya, pakai kube

36:26Horizontal scale, berarti

36:28Kamu harus maintain, kamu harus hitung

36:30Berapa connection pooling yang

36:32Bagus

36:34Kalau misalnya pakai container kan

36:36Container kan bisa

36:3810 kan

36:40Buka connection ke database

36:42Yang sama database nya kan

36:44Gak mungkin, gak banyak juga kan

36:46Jadi kalau misalnya

36:48Container nge scale, jadi dari 10

36:50Ke 100, kalau dia pooling

36:52Mulu, ya misalnya

36:54Masimal tadinya cuma bisa 10 pooling

36:56Ya yang lain bottleneck, nunggu

36:58Tunggu yang satu dimatikan dulu

37:00Dia baru bisa buka lagi

37:02Jadi bottleneck di

37:04Connection

37:06Jadi bukan database nya yang lambat, tetapi

37:08Jalurnya

37:10Yang penuh

37:12Jalurnya yang penuh, jadi tidak hanya database nya

37:14Harus dipikirkan bagaimana kita perinteraksi

37:16Dengan database nya

37:18Salusinya adalah

37:20Ada hitung-hitungan sederhananya

37:22Sebenarnya

37:24Kamu mau pasang

37:26Container berapa

37:28Kamu mau pasang

37:30Kalau kita ngomong ini ya

37:32Kalau kita ngomong

37:34Efficient untuk kita

37:36Bisa menggunakan RAM nya itu

37:38Kita ada hitungan kasarlah

37:40Karena

37:42Ini pengalamanku

37:44Mengerjakan software project di Indonesia ya

37:46Itu tidak

37:48Sampai ke scale nya unicorn

37:50Yang banyak banget

37:52Itu

37:54Kayak

37:56Kebanyakan database yang

37:58For CPU 8GB

38:00Setiap ada

38:02Satu container

38:04Satu container itu bisa buka berapa

38:06Connection itu sebenarnya kita bisa hitung

38:08Di situ, jadi bukan

38:10Kalau misalkan ada database tau-tau

38:12Aku pake kube supaya bisa handle banyak request

38:14Belum tentu

38:16Engga juga

38:18Engga auto scaling tapi koneksinya

38:20Di database nya

38:22Engga cukup gitu kan ya

38:24Anri pada akhirnya

38:26Kayak jalan raya

38:28Ya mobilnya banyak

38:30Tapi jalannya sedikit atau kecil

38:32Jadi ngantri tetap ngantri ya

38:34Terus terakhir dari

38:36Sepenceng apalah juga ya

38:38Terus terakhir

38:40Dari level code ya

38:42Kalau tadi kita udah bahas sedikit

38:44ORM

38:46Kita tau misalnya

38:48Ada LF1

38:50Terus active record

38:52Yang jahat

38:54Prisma ya

38:56Prisma drizzle

38:58Type ORM

39:00Terus sedikit terakhir ya

39:02Perkara ORM ya

39:04Dulu itu pernah maintain salah satu

39:06Salah satu agensi

39:08Yang trading edge ya

39:10Di enterprise

39:12Prisma versi 1

39:16Prisma engine nya masih pake skala

39:18Skala?

39:20Dulu itu Prisma

39:22Engine nya pake skala

39:24Versi 1 ya

39:26Dan itu

39:28Ada GitHub issue dibuka

39:30Salah satu caranya adalah migrasi ke versi 2

39:32Dan selalu out of memory

39:34Karena Java

39:38Karena JVM

39:40Jadi temen-temen yang

39:42Aku gak bilang kalian harus jago

39:44Ini ya SQL

39:46Karena juga tadi bener kata mas Ivan

39:48Frontend itu mungkin

39:50Tidak punya banyak waktu untuk bisa

39:52Mengerti semua yang terlihat kan

39:54ORM itu bisa mematuh

39:56Jadi sebenarnya ya gak ada salahnya

39:58Juga pake ORM

40:00Kecuali kamu di mata purist gitu kan ya

40:02Buat apa pake ORM

40:06Berlaku kebudakannya

40:08Ngapain gak mau nulis

40:10Gampang

40:14Gak produktif ya

40:16Gak produktif

40:18Yang penting ini aja sih

40:22Awareness kita tahu

40:24Kita pake ORM

40:26Jadi kalau terjadi kelambatan

40:28Kita coba cek disitu dulu

40:30Karena kita dari aplikasi

40:32Masih ada satu layer lagi

40:34Sebelum ke SQL

40:36Padahal SQL itu kan sudah layer untuk

40:38Komunikasi ke database kan

40:40Jadi ada satu layer

40:42Di atas SQL

40:44Query Vanilla

40:46Tapi ada sudut pandang yang berbeda nih

40:50Kalau Frontend, anak Frontend kan

40:52Sekarang udah terbiasa dengan

40:54Deklaratif kan

40:56Ngulis kodnya kan

40:58Deklaratif pake React lah

41:00Atau SwiftUI

41:02Sql itu kan deklaratif

41:04Jadi belajar juga harusnya lebih muda

41:06Ya mungkin belajar syntax baru

41:10Cuman kan

41:12Apalagi sekarang bisa dibantu AI

41:14Jadi mungkin cara

41:16Belajarnya sekarang jauh lebih

41:18Learning curve nya

41:20Lebih rendala dibandingkan dulu

41:22Sulit sih mas

41:26Maksudnya

41:28Saya bisa

41:30Belajar Tau SQL Query itu karena kuliah

41:32Dan saat kuliah itu

41:34Mata kuliah database itu

41:36Sampai kayaknya 2 semester deh

41:382 semester

41:40Basis data 1 sama

41:42Basis data 2

41:44Dan waktu itu

41:46Base nya Oracle

41:48Dan memang dari awal tuh

41:50Dari select, grouping, segala macem

41:52Dan nanti sudah yang basis data 2

41:54Itu lebih advanced lagi

41:56Kayak

41:58Stored procedure

42:00Fuse

42:02Itu sebenernya

42:04Banyak yang bisa

42:06Bisa didistribusikan

42:08Jadi gak perlu semuanya

42:10Di level aplikasi

42:12Stored procedure itu bisa

42:14Di level database kita bisa membuat

42:16Function nya kita sendiri

42:18Di database

42:20Jadi kita cuma tinggal panggil function itu doang sebenernya

42:22Itu bisa cuman

42:24Itu gak stored procedure saya yakin

42:26Di dunia

42:28Kalau kita

42:30Merujuk kepada dunia

42:32Frontend yang pengguna

42:34Next.js dan segala macem

42:36Pasti stored procedure itu bukan

42:38Sesuatu yang sering didengar

42:40Kalau yang sampai

42:42Yang susah juga

42:44Maintainan di dalam stored procedure nya susah

42:46Gak bisa masuk ke git lah

42:48Gitu kan susah kan

42:50Betul

42:52Dia nyantol

42:54Di database nya jadinya

42:56Jadi semuanya sekarang

42:58Semuanya di level aplikasi

43:00Dan database nya sekedar

43:02SQL query nya saja

43:04Untuk ambil dan transaksi data saja

43:06Tapi sebenernya

43:08Database is more than that

43:10Banyak lho

43:12Contoh

43:14Mungkin

43:16Kalau

43:18Melakukan

43:20Select distance misalnya

43:22Radius

43:24Kalau misalnya kita punya

43:26Mapping

43:28Lokasi warehouse

43:30Mana ya kita

43:32Mau

43:34Query jarak terdekat

43:36Dari

43:38Latitude

43:40Longitude ini

43:42Contohnya

43:44Kalau pakai

43:46Aplikasi

43:48Itu susah

43:50Misalnya kita harus query semua

43:52Warehouse

43:54Lalu pakai aplikasi untuk mencari

43:56Jarak terdekat dari latitude longitude

43:58Yang kita punya dari titik tengahnya kita

44:00Anggap aja kita punya ini ya

44:02Punya

44:04Franchise

44:06Dan punya banyak store

44:08Terus mau ditampilkan di Google Map

44:10Contohnya

44:12Terus kita mau cari

44:14Yang mana jarak terdekat dari

44:16Jakarta Barat misalnya

44:18Itu kan dia bisa

44:20Ngecari radius

44:22Kalau pakai aplikasi susah itu

44:24Tapi kalau pakai Postgres

44:26Itu tinggal select distance

44:28Postgres ya

44:30Postgres

44:32Dan bisa langsung sort by distance

44:34Gini ya

44:36Satu query

44:38Itu maksudnya

44:40Banyak hal-hal yang bisa

44:42Database itu bisa lakukan lho

44:46Yang lebih-lebih dalam

44:48Nah ini

44:52Menjawab tadi ya

44:54Rumus connection pool ya

44:56Sebenernya banyak rumus

44:58Spindles ini apa?

45:04Spindles itu

45:06Kalau misalkan

45:08Sebentar aku lagi

45:10Buka Google resource ya

45:12Di sana

45:14Jadi bisa

45:16Ada yang ngomong

45:18Ada yang ngitung itu dari CPU

45:20Ada yang ngitung dari

45:22Tadi kan aku bilang kayak satu buka connection itu

45:24Sekitar 25 megabit

45:26RAM di sana

45:28Referensi ku itu

45:30Mungkin lebih ke

45:32Cari coba cari referensi dari database engine

45:34Yang kalian pakai

45:36Yang aku ngomong RAM itu tadi

45:38Postgres

45:40Beberapa orang ngomong bahwa

45:42Ambil aja 25

45:44Ambil aja 1 connection pool adalah

45:46Di Prisma itu kayak

45:48Ngomong connection pool itu

45:50Dia ambilnya

45:52Ada CPUnya juga

45:54Di sana, hitungannya ada CPU juga

45:56Jadi menurutku kalau menjawab pertanyaan ini

45:58Coba cari database enginenya

46:00Kemudian coba cari beberapa

46:02Referensinya

46:04Aku nggak terlalu

46:06Ada hal yang sakit, karena aku kalau liat di Google

46:08Banyak banget referensi

46:10Connection poolnya

46:12Atau start default dulu deh

46:14Default itu jadi good starting point

46:18Nanti lihat pakai APM

46:20Baru nanti kita bisa lihat apakah connection poolnya itu

46:22Biasanya di APM itu

46:24Ada limit

46:26Connection biasanya

46:28Kita terlalu banyak pakai connectionnya apa nggak

46:30Masing-masing database berbeda ya

46:34Cara penanganannya ya

46:36Kita lanjut aja kali ya

46:38Kita ada beberapa tahap

46:40Di situ

46:42Nah setelah kita udah lihat nih dari keseluruhan

46:44Ternyata tidak masih bisa

46:46Mahendal, baru kita mulai untuk

46:48Bermain infrastructure di sana

46:50Yang paling populer

46:54Di selain scaling gitu ya

46:56Apakah database ini

46:58Punya kompetensi yang berat

47:00Alternatifnya adalah menambahkan layer

47:02Di atas database itu

47:06Adalah credits ya

47:08Caching, kemudian ada

47:10Gvalue store

47:12Yang bisa disimpan di ram biar lebih cepat

47:14Ada search engine

47:16Elastic search

47:18Melee search gitu kan ya untuk mencari data

47:20Ada messaging queue

47:22Jadi yang biasanya untuk

47:24Kayak Kafka

47:26Biasanya kalau data

47:28Rate-nya, call rate-nya tinggi

47:30Daripada kita harus dihajar

47:32Di satu endpoint gitu kan

47:34Kita kasih queue di sana supaya

47:36Lebih terproses dengan

47:38Berurutan

47:40Jadi writing-nya ngantri

47:42Ada queue-nya gitu ya

47:44Pake Kafka

47:46Atau Revit MQ

47:48Itu terserah lagi ya

47:50Terserah dengan familiaritas dengan

47:52Apa teknologi yang digunakan

47:54Mungkin quick lagi ya

47:56Setelah itu

47:58Ada technical scaling ya, itu udah deh

48:00Paling gampang udah

48:02Lakukan semua masih berat

48:04Naikin CPU sama

48:06RAM-nya

48:08Kenapa?

48:10Karena itu

48:12Kita masih bisa maintain dengan

48:14Ini tergantung seberapa besar tim infra-nya

48:16Atau tim monitoring-nya

48:18Paling gampang adalah naikin

48:20Kalau pakai clock enak ya

48:22Tapi kalau on-premise

48:24Kalau saya

48:26Kalau pakai on-premise

48:28Hybrid

48:30Kalau saya

48:32Cek dulu, ini hard disknya

48:34Pakai apa? Masih pakai piringan atau

48:36Itu cek dulu tuh

48:38Karena

48:40Kalau mau gimana pun

48:42Dinaikin, kalau masih piringan

48:44Tetep aja lambat

48:46Dan ini ada

48:48Beberapa pembahasan ya

48:50Salah satunya DHH itu adalah

48:52Yang bikin Rails ya

48:54Oh

48:56Anumayar Hansen

48:58Ya itu

49:00DHH

49:02DHH

49:04Dengan

49:06Kecepatan storage CPU itu

49:08Bahkan sekarang banyak perusahaan

49:10Besar itu masih bisa handle single note

49:12Tetap di sana

49:14Jadi vertical itu

49:16Jadi solusi disitu

49:18Ketika vertical sudah gak bisa gitu kan ya

49:20Terlepas dari budget dan kawan-kawan

49:22Muncul horizontal scale

49:24Yang paling gampang horizontal itu

49:26Bahkan read replica

49:28Jadi

49:30Ketika ada satu database

49:32Kamu bisa tambahkan database kedua

49:34Untuk hanya

49:36Mencari budget database

49:38Disitu

49:40Jadi ada write

49:42Write db

49:44Ada read db, kalau jaman dulu

49:46Yang bahasanya tidak

49:48Inclusive itu

49:50Ada master slave

49:52Jaman gue

49:54Jaman yang gak sudah inclusive

49:56Jadinya harus write sama

49:58Read

50:00Bisa primary replica atau worker manager

50:02Itu tergantung

50:04Ya

50:06Tapi horizontal

50:08Scale juga ada masalahnya juga gitu kan ya

50:10Horizontal scale itu

50:12Replikasi menambahkan

50:14Sesuatu

50:16Latensi

50:18Kemudian kalau misalnya kita membaca

50:20Tapi belum di replikasi

50:22Out of sync

50:24Delay

50:26Itu sudah busing

50:28Out of sync itu

50:30Itu adalah salah satu teori

50:32Yang kita sebut dengan cap theorem ya

50:34Cap theorem itu adalah

50:36Konsistensi, availability

50:38Ataupun partition

50:40Kita gak bisa dapatin ini semuanya

50:42Di sana, jadi kalau kamu mengejar

50:44Konsistensi, berarti ada masalah

50:46Availability, out of syncnya lebih

50:48Lebih ini, lebih

50:50Kerasa

50:52Tapi kalau katakanlah

50:54Ini apa contohnya

50:56Financial application

50:58Kan gak boleh itu misalnya

51:00Ngirim apa

51:02Ngirim uang

51:04Tapi waktu

51:06Orang baca lagi gitu kan ya

51:08Di request kedua kalinya, aku masih pakai saldo yang lama

51:10Bahaya ya

51:14Harus konsisten di semua replica yang ada

51:16Tapi itu berimpak

51:18Sehingga sampai availability

51:20Orang itu gak banyak bisa handle request

51:22Secara concurrent

51:24Availability yang diutamakan

51:26Konsistensi gak perlu

51:28Itu contohnya social media

51:30Kan gak perlu amat kamu harus melihat

51:32Exkut yang terbaru

51:34Terbaru

51:36Yang berubah

51:38Konsisten ke semuanya

51:40Gak harus

51:42Dan banyak tools ya

51:44Banyak tools yang

51:46Di gunakan

51:48Kalau di Postgres itu ada nama Patroni

51:50Patroni untuk bikin

51:54Streaming

51:56Blaster, Postgres

51:58Kalau di MySQL itu Vitesse

52:00Ataupun Proxy SQL

52:02Di sana

52:04Vitesse bukan Vitesse JS ya

52:06Bukan, bukan Vitesse

52:08Bukan Vitesse pakai buat view itu ya

52:10Bukan, bukan

52:12Intinya adalah dia itu

52:14Ada Proxy nya

52:16Yang Patroni itu intinya adalah

52:18Ada Proxy di depan database itu

52:20Yang dia nanti ngatur

52:22Oh ini adalah query read

52:24Dia yang mengatur

52:26Menatur jalannya

52:28Query, jadi di depan itu ada

52:30Load balancer namanya Haproxy

52:32Haproxy

52:34Haproxy

52:36Terus data

52:38Data key value store yang disimpan

52:40Dalam cluster itu pakai etcd

52:42Di sana

52:44Oke

52:46Kayaknya kalau ngomongin Load balancer

52:48Satu topik sendiri lagi kayak Load balancer

52:50Itu, itu

52:52Round-robin

52:54Ada banyak poin ya, algoritma

52:58List connection, layer

53:00Berapa Load balancernya

53:02Panjang ceritanya ya

53:06Jadi kalau

53:08Database vertical horizontal itu kan

53:10Harus ada Load balancernya kan

53:12Jadi yang ngatur

53:14Kan dari aplikasi koneksinya

53:16Cuma tau satu, tapi dari Proxy

53:18Yang ngatur mau ke database yang mana

53:20Yang mungkin cara jadulnya itu adalah

53:24Kalau misalnya tidak ada Load balancernya

53:26Di depan itu kayak

53:28Di dalam code nya ada dua koneksi

53:30Oh ini, ini yang buat

53:32Ada array, ada array

53:34Ngecek ini write apa write

53:36Jadi manual, itu pun bisa dilatukkan

53:38Di sana ya

53:40Jadi ya cuman bikin replika aja

53:42Kamu nggak ada Load balancernya di depan

53:44Itu masih bisa aja, tapi ya

53:46Ribet di aplikasinya

53:48Untuk handle itu ya

53:50Di sana

53:52Mungkin dua lagi tentang scaling ini

53:54Yang selanjutnya itu adalah partisi

53:56Jadi tabel yang gede banget misalkan

53:58Itu bisa dipartisi

54:00Jadi beberapa, kita memacah

54:02Kayaknya ada data structure lagi

54:06Ada 1TB itu kan tabel itu dibagi

54:08250GB supaya lookupnya

54:10Lebih gampang

54:12Di sana, dan yang terakhir

54:14Itu adalah sharding yang di mana

54:16Kita bagi tabel

54:18Semua tabel

54:20Di berbagai macam

54:22Notes

54:24Di server yang berbeda

54:26Itu lebih kompleks

54:28Tapi ada open source yang dibuat oleh Microsoft

54:30Untuk membantu mempermudah

54:32Sharding di Postgres namanya

54:34Cetus

54:36Cetus

54:38Gimana?

54:40Aku nggak tahu saya ngomongnya gimana nih

54:42Cetus, mi apa?

54:44Nggak ada yang relate lho

54:50Kita yang ketawa doang

54:52Last thing

54:56Perkara scalingnya

54:58Kalau kamu mau nggak berepot, ada yang namanya serverless

55:00Data base sekarang lagi rame

55:02Ini planet scale ya?

55:04Planet scale

55:06Planet scale

55:08Itu planet scale ya?

55:10Kalau di Postgres namanya neon

55:12Neon

55:14Jadi dia mau memisahkan

55:16Compute engine nya dengan storage nya

55:18Jadi itu

55:20Another things lagi

55:22Jadi itulah

55:24Sedikit ini ya, macem-macem

55:26Gimana kita bisa nge scale data base

55:28Iya, sempat penasaran juga

55:30Ini serverless data base ini

55:32Gimana kan? Sebelumnya kan kita

55:34Aplikasi yang serverless

55:36Ini data base juga serverless juga ya

55:38Yang diserverless

55:40Kan itulah secara teori

55:42Sederhananya adalah pemisahan

55:44Storage dengan compute nya

55:46Di sana

55:48Jadi

55:50Compute nya yang di scale

55:52Auto scale

55:54Compute nya yang di auto scale

55:56Compute nya yang di auto scale

55:58Di situ

56:00Secara dalam nya aku belum dalam lagi

56:02Tapi itu yang bisa membuat pada akhirnya

56:04Bisa serverless

56:06Jadi disana

56:08Oke

56:10Ini buat MySQL yang tadi neon buat

56:12Postgres ya

56:14Siap

56:16Mantap

56:18Itu untuk

56:20Serverless

56:22Tapi

56:24Dalam sampai tahap apa sih kita

56:26Perlu mendata base scaling

56:28Karena ada juga ide

56:30Kayak apa itu

56:32Situs besarnya masih pakai

56:34Eskialight

56:36Sanggup-sanggup aja gitu

56:38Discord ya

56:40Enggak salah eskialight ya

56:42Bukan

56:44Eskialight

56:46Enggak tahu ya apa ya

56:50Aku lupa

56:52Eskialight itu yang sebenarnya

56:54Unique selling point nya

56:56Adalah dia embedded kan

56:58Jadi yang paling banyak dipakai adalah

57:00Ya HP Android

57:02iOS ya

57:04Windows, HP, Handphone ya

57:06Itu eskialight semua kan

57:08Ya

57:10Tapi kalau untuk

57:12Product web

57:14Ini ada yang kayak aku share ke mana ya

57:16Share ke private chat

57:20Private chat

57:22Docs juga boleh

57:24Ada itu tuh

57:26Kayak berapa terah itu eskialight

57:28Yang mana yang mana

57:30Oh ini private chat ya

57:32Ada

57:386 terabyte

57:42Searchcode.com

57:44Searchcode.com

57:46Wow

57:48Gede loh itu

57:506 terabyte

57:52Nah kalau

57:54Eskialight itu gimana

57:56Gimana scalingnya

57:58Gak bisa

58:00Satu file kan

58:02Filebase kan

58:04Enggak usah

58:06Scaling nya dulu deh

58:08Deploy nya gimana kalau deploy

58:10Kalau pakai docker kan harus stateless kan

58:12Gak bisa ya

58:14Saya juga baru belajar kemarin harus pakai volumes

58:16Kalau kita ngomong mungkin aku secara detail

58:20Aku belum baca ini ya

58:22Bagaimana cara dia bisa ngasih scale sebesar

58:24Tapi kita coba untuk

58:26Apa sih benefitnya eskialight

58:28Daripada rdbms engine yang lain

58:30Ya boleh

58:32Jadi

58:34Jadi nilai tambah dari eskialight itu

58:38Adalah kemampuan untuk performance

58:40Query datanya itu sendiri

58:42Di sana

58:44Jauh lebih cepat dari

58:46Apapun rdbms engine yang ada

58:48Mau mysql, mau postgres

58:50Tetapi kurangnya dimana sih

58:52Kurangnya itu adalah

58:54Di dalam konkurensi

58:56User untuk akses database

58:58Asebut

59:00Karena tidak digunakan untuk

59:02Di akses dalam waktu yang bersamaan

59:04Database nya

59:06Di sana

59:08Makanya ada yang namanya Tursow ya

59:10Tursow

59:12Ada satu eskialight

59:14Kemudian direplikasi

59:16Di edge

59:18Untuk orang yang bisa

59:20Akses banyak

59:22Dia itu memanfaatkan

59:24Performance yang eskialight

59:26Kemudian cara yang nyebarnya gimana

59:28Direplikasi ke multiple edge

59:30Untuk bisa mematasi

59:32Sekian concurrent user

59:34Jadi sebenarnya benefitnya

59:36Eskialight itu disitu

59:38Dan banyak juga project-project

59:40Jadi tidak segede-gede apapun

59:42Kayak dashboard

59:44Itu kan banyak heavy di read ya

59:46Itu kita gunakan eskialight aja untuk

59:48Performance query datanya

59:50Kalau kita tidak di akses banyak orang

59:52Contoh ada satu project CMS

59:54Yang aku share di google docs

59:56Itu kan namanya PocketBase ya

59:58PocketGIS itu adalah siap

1:00:00Kayak eskialight

1:00:02Ya ya ya

1:00:04Pernah pake ini

1:00:06Pernah bahas ya

1:00:08Disitu

1:00:10Ini back-end nya go

1:00:12Terus dia kasih back office

1:00:14Kan kita bisa operasi bisa

1:00:16Insert data bisa

1:00:18Manipulasi bisa update bisa delete

1:00:20Kan ya. Terus ada

1:00:22Dia kasih rsapi nya ya

1:00:24Routes nya ya

1:00:26Betul disana dan itu pun

1:00:28Majoritas

1:00:30Mungkin orang itu cukup

1:00:32Disana untuk menggunakan eskialight

1:00:34Tapi jujur aku tidak pernah

1:00:36Melakukan komparasi

1:00:38Yang cukup komprehensif ya untuk bisa

1:00:40Berani berkata bahwa

1:00:42Ada sekala-sekala tertentu yang

1:00:44Kayak konkurensi kali ya

1:00:46Konkurensi

1:00:48Konkurensi akses

1:00:50Sebenernya

1:00:52Kalau misalnya

1:00:54Kita bikin aplikasi

1:00:56Yang dipake banyak orang kalau pake eskialight

1:00:58Mungkin bottleneck disaat read

1:01:00File nya karena dia file base kan

1:01:02Betul ya ya ya

1:01:04Sedangkan kalau

1:01:06Aplikasi yang personal

1:01:08Contohnya ya

1:01:10Misalnya mozilla thunderbird itu pake

1:01:12Eskialight

1:01:14Karena kan terisolate

1:01:16Satu user satu data

1:01:18Justru kalau pake mozilla thunderbird

1:01:20Pakainya install my eskialight lagi

1:01:22Ya susah ya kan

1:01:24Jadi efektnya pake eskialight

1:01:26Pocket base kan personal

1:01:28Atau

1:01:30Paling maksimal ya 4-5 orang

1:01:32Dalam keluarga doang kan

1:01:34Pake ini gitu

1:01:36Ya kalau misalnya

1:01:38Sudah di akses sama ratusan

1:01:40Ribuan secara

1:01:42Concurrent mungkin

1:01:44Harus pake DBMS

1:01:46Ada post read and read file nya itu

1:01:48Read and write file nya

1:01:50Yang jadi masalah

1:01:52Untuk local first juga cocok

1:01:54Mas Ari sih

1:01:56Orang dalem orang dalem

1:01:58By the way

1:02:00Ada satu kasus yang membuat

1:02:02Battle neck juga

1:02:04Kalau saat DBMS itu

1:02:06Sedang melakukan write operation

1:02:08Dia akan butuh

1:02:10Dia sedang ngerite ke table ya

1:02:12Ya blocking, dia akan blocking

1:02:14Kalau ngerite, dia akan

1:02:16Locking ya, bukan blocking

1:02:18Ada locking mekanisme kan

1:02:20Kalau satu process sedang

1:02:22Ngerite dan

1:02:24Ngerite plus

1:02:26Ngeindeks kan, jadi habis write dia

1:02:28Ngerite index, dan process itu

1:02:30Butuh waktu, nah kalau misalnya

1:02:32Ada concurrent yang sedang membaca

1:02:34Table itu di saat yang sama, dia akan

1:02:36Lock dulu, menunggu sampai process

1:02:38Write selesai, baru bisa dibaca

1:02:40Baru bisa diselect ceritanya

1:02:42Nah, ini

1:02:44Kita cerita bukan pakai cluster

1:02:46Yang ada read write

1:02:48Table ya, beda

1:02:50Satu database doang

1:02:52Ceritanya, ya itu akan terjadi

1:02:54Yang namanya locking mekanisme

1:02:56Dan karena ada locking

1:02:58Ya, kelihatannya

1:03:00Query kita yang

1:03:02Nge-select selanjutnya itu

1:03:04Kelamaan, tapi sebenarnya

1:03:06Kan nge-lock oleh

1:03:08Process yang sebelumnya

1:03:10Nah, itu bisa jadi pengalaman

1:03:12Pribadi

1:03:14Oh ya, itu sebenarnya kalau yang dibilangin

1:03:16Mas Ivan adalah

1:03:18Konsekensi dari mislifat

1:03:20DBMS yang menerapkan akit

1:03:22Mungkin kalau teman-teman

1:03:24Yang kuliah ya

1:03:26Dan aku selalu tanya

1:03:28Waktu skill test nya Zero One Group

1:03:30Kalau ada yang apply

1:03:34Di Zero One Group, itu selalu aku akan tanyakan

1:03:36Tau nggak akit itu apa

1:03:38Di sana

1:03:40Asem

1:03:42Jadi, akit itu adalah kepanjang dari

1:03:48Atomicity, konsistensi,

1:03:50Integrity, dan Durability

1:03:52Dan setiap engineer itu

1:03:54Punya caranya sendiri untuk menghandle ini

1:03:56Di dalam Postgres itu aku share

1:04:00Mas Riza di private chat

1:04:02Ataupun di Google Docs

1:04:04Ada yang HPG locks the query

1:04:06Mungkin kita lihat bareng-bareng

1:04:08Jadi, untuk menjaga

1:04:10Sebuah integritas dari sorto database

1:04:12Itu kadang-kadang kita harus nge-lock processnya

1:04:14Dan setiap query itu punya

1:04:16Skala lock nya masing-masing

1:04:18Di sana

1:04:20Di dalam ini

1:04:22Dia ngasih tau semua

1:04:24Impact dari

1:04:26Query kita itu apakah

1:04:28Table atau Room

1:04:30Di sana

1:04:32Jadi kadang-kadang

1:04:34Ini juga yang aku masalahin di beberapa project enterprise ya

1:04:36Karena kan query nya cukup jelimit

1:04:38Di sana

1:04:40Di dalam top 3 SQL itu bukan

1:04:42Yang bikin cool print

1:04:44Tapi adalah

1:04:46Impact dari locking

1:04:48Locking ini

1:04:50Nah itu ada

1:04:52Locking sendiri

1:04:54Jadi kita

1:04:56Di dalam Postgres itu ada

1:04:58Locking buat lock

1:05:00Jadi kita harus kayak

1:05:02Ini mana yang nge-lock

1:05:04Di sana

1:05:06Bisa di trace ya dari situ ya

1:05:08Di satu

1:05:10Nah locking ini lagi-lagi

1:05:12Untuk kita kadang-kadang

1:05:14Ada konsep namanya

1:05:16Seperti kayak

1:05:18Mau beli web ini, tapi di Seriwan Group kan punya live streaming juga

1:05:20Namanya Astro Office ya

1:05:22Itu waktu itu

1:05:24Salah satu engine Seriwan Group, Mbak Amel

1:05:26Itu bahas tentang ada

1:05:28Yang namanya bagaimana Postgres itu

1:05:30Menghandle integritas data

1:05:32Jadi misalkan apa yang dibaca

1:05:34Orang itu apakah data yang baru

1:05:36Atau data yang lama

1:05:38Dalam suatu transeksyen

1:05:40Ada konsep namanya ghost read

1:05:42Ghost read datanya atau gimana

1:05:44Dan setiap data based engine

1:05:46Itu punya caranya sendiri

1:05:48Untuk handle

1:05:50Bawa bawa bawa

1:05:52Bawa

1:05:54Sama itu

1:05:56Anak BE wajib tahu ajib

1:05:58Itu itu itu

1:06:00Bagaimana Postgres itu

1:06:02Integritasnya gimana

1:06:04Sebelah mana dia menjaga integritas

1:06:06Datanya supaya terjadi

1:06:08Data yang konsisten

1:06:10Di sana

1:06:12Jangan lupa di subscribe ya

1:06:14Live nya setiap

1:06:16Beberapa bulan

1:06:18Oh lagi libur

1:06:20Coba cari format live

1:06:22Oke oke

1:06:24Ini tadi

1:06:26C

1:06:28Tadi masih

1:06:30Berlanjut ngobrolin tentang

1:06:32Eskelat ya

1:06:34Ada ada apa

1:06:36Ada beberapa yang menarik juga

1:06:38Ternyata ada banyak

1:06:40Yang scaling juga

1:06:42Salah satunya apa

1:06:44Posting ini tahun berapa ya

1:06:462022

1:06:48Dia bisa sampai 200 juta

1:06:50Request per bulan

1:06:52Atau 4 juta

1:06:54Request per sekai

1:06:56Levels I/O ya

1:06:58Ya levels I/O

1:07:00Dia kalau gak salah pernah cerita

1:07:02Eee

1:07:04Lupa ya

1:07:06Buka aja opsennya levels.io

1:07:08Ini kan

1:07:10Apalagi yang

1:07:12Pinter namanya

1:07:14Ya pinter levels ya pinter levels

1:07:16Yang produknya banyak banget kan

1:07:18Kalau gak salah dia pernah cerita

1:07:20Kalau dia pake eskelat itu untuk multi tenancy

1:07:22Application

1:07:24Jadi satu tenant satu

1:07:26Satu udah habis

1:07:28Expensive

1:07:30Bukan gak tau apa namanya

1:07:32Yang jelas

1:07:34Dia pernah cerita kayak

1:07:36Ada orang yang

1:07:38Berlangganan SAS nya dia

1:07:40Dia bikin satu instant atau satu tenant

1:07:42Itu database nya satu aja

1:07:44Jadi selain aman

1:07:46Nampur sama database orang lain

1:07:48Yang kedua ya

1:07:50Udah database nya itu doang satu

1:07:52Ini beda piter

1:07:56Beda piter

1:07:58Beda tuh

1:08:00Beda

1:08:04Ya pasti kan ada kayak

1:08:06Ini ya spesifik use case

1:08:08Yang kita gak tau gimana cara

1:08:10Set up nya ya

1:08:12Tapi di websitenya eskelat.org

1:08:14Went to use ya, jadi mungkin itu ada referensi utamanya

1:08:16Went to use

1:08:18Dari eskelat.org

1:08:20Yes

1:08:22Ini ada referensinya silahkan

1:08:24Kalau ada kasus seperti itu

1:08:26Kita ke eskelat.org

1:08:30Ini juga salah satu

1:08:32Project

1:08:34Yang sangat menarik

1:08:36Karena sebenarnya dia

1:08:38Open source

1:08:40Dalam artian

1:08:42Codenya bisa dilihat

1:08:44Tapi yang bisa commit atau yang bisa nge push

1:08:46Cuma 3 orang yang punya perusahaan

1:08:48Gak menerima pull request bahasa itu

1:08:50Gak menerima pull request ya

1:08:52Jadi read only ya

1:08:54Went to use

1:08:56Ada tuh went to use eskelat itu

1:08:58Jadi kalau misalnya mau tanya apa harus pakai eskelat sih

1:09:00Itu

1:09:02Embedded device

1:09:04Ini udah pasti ya kan

1:09:06Udah umum

1:09:08Application file format

1:09:10Website

1:09:12Berarti ini web scale ya

1:09:16Kalau misalnya

1:09:18Most of system kita

1:09:20Pasal block nya Mas Riza

1:09:22Gak ada masalah pakai eskelat

1:09:24Nggak gak pakai database

1:09:28Coba bikin block pakai database

1:09:30Banyak kali ada yang mau bikin

1:09:32Kalau block nya sampai

1:09:34100

1:09:36100 artikel per hari

1:09:38Perlu Mas

1:09:40Itu bukan block itu

1:09:42Portal berita

1:09:44Internet kerjaannya Mas Ivan

1:09:48100 kata per minggu aja

1:09:52Belum tentu bisa

1:09:54Apalagi 100 artikel

1:09:58Ini

1:10:00Seru ya

1:10:02Yang nomor 2 nya

1:10:06Client server

1:10:08Application

1:10:10High volume

1:10:12High concurrency

1:10:14High concurrency

1:10:16High concurrency ya

1:10:18Yang kita bahas

1:10:20Writer nya itu

1:10:24Masalah

1:10:26Betul-betul

1:10:28Karena file base

1:10:30Jadi ada

1:10:32Locking mechanism yang berbeda kan

1:10:34Pada saat mungkin ada yang lagi

1:10:36Hanya boleh 1 orang yang boleh merubah

1:10:38Hanya boleh 1 orang

1:10:40Jadi gak

1:10:42Kongkaren

1:10:44Oke pertanyaan pertama dari saya

1:10:46Sebelum kita menjawab pertanyaan penonton

1:10:48Kalau scaling

1:10:52Scaling yang mana dulu nih

1:10:54Horizontal

1:10:56Kalau memang dibutuhkan scaling

1:10:58Vertikal dulu lebih mudah ya

1:11:02Ya vertikal sampai mentok

1:11:04Dan maksudnya vertikal itu tidak selamanya

1:11:08Jadi yang biasa

1:11:10Vertikal dulu temukan toolprint nya

1:11:12Down

1:11:14Uses nya diturun lagi

1:11:16Oh bisa

1:11:18Bisa ya

1:11:20Jadi kalau kita pakai ini ya

1:11:22Kalo kan

1:11:24Apalagi ya pakai manage ya

1:11:26Manage service

1:11:28Itu kita harus naikin

1:11:30Ada concept downtime nya

1:11:32Kita harus tau downtime nya berapa lama

1:11:34Setelah dinaikin gitu kan ya

1:11:36Kita tau nih toolprint nya

1:11:38Di mana kita work on it

1:11:40Turun

1:11:42Diturunin akhirnya

1:11:44Jadi kayak naik itu hanya untuk sepersekian

1:11:46Hari

1:11:48Sepersekian hari untuk

1:11:50Disana

1:11:52Supaya gak down

1:11:54Kapan-kapan harus

1:11:56Ini tuh gak bisa naik lagi

1:11:58Gitu adalah ketika memang

1:12:00CPU nya naik ya

1:12:02CPU nya naik tapi tidak ada

1:12:04Slow query yang

1:12:06Berarti gitu kan ya

1:12:08Tapi lebih karau banyak request

1:12:10Untuk nge handle read secara

1:12:12Secara jumlah request nya

1:12:14CPU nya naik tapi tidak ada slow query

1:12:16Tidak ada itu berarti

1:12:18Sebelah harus di replikasi

1:12:20Kalau seasonal

1:12:22Contohnya

1:12:24Kayak 11/11

1:12:269/9, 10/10

1:12:28Biasanya

1:12:30Itu disediain dulu

1:12:32Disediain dulu

1:12:34Di pre-empt ya

1:12:36Tau bahwa itu seasonal

1:12:38Ready

1:12:40Atau banyak teknik ya

1:12:42Caching nya sebelah mana

1:12:44Karena kan contoh yang bisa share ya

1:12:46Jadi akan pernah terjadi

1:12:48News media

1:12:50Quick count

1:12:52Itu kan seasonal

1:12:54Iya itu seasonal

1:12:56Jadi kalau misalnya

1:12:58Ada satu website yang perlu di read

1:13:00Caching itu adalah

1:13:02Bumper utama

1:13:04Semua di caching

1:13:06Multi level dari GraphQL nya

1:13:08Di caching, dari data

1:13:10Per item nya di caching

1:13:12Itu level caching nya

1:13:14Itu banyak dari atas sampai bawah

1:13:16Tapi kan kalau quick count di caching

1:13:18Ngamuk tuh entar

1:13:20Iya, kok nge-net naik ya

1:13:22Tapi kan quick count

1:13:24Nggak real time pak

1:13:26Masa? Oh iya ya

1:13:28Per 5 menit, per 10 menit update nya ya

1:13:30Nggak mau level lho

1:13:32Kalau kita mau real time

1:13:34Itu beda cerita webshop ya

1:13:36Ternyata iya kan

1:13:38Sekalian aja online

1:13:40Berarti bukan quick count dong namanya ya

1:13:44Periodic count

1:13:46Catching count

1:13:48Catching count

1:13:50Quick itu kan

1:13:52Relatif

1:13:54Iya

1:13:56Kalau real time count baru

1:13:58Beda, harus real time

1:14:00Iya

1:14:02Atau biasanya

1:14:04Bulan 2, bulan 3 itu kan

1:14:06Pelaporan pajak

1:14:08Tahunan kan

1:14:10Itu biasanya

1:14:12Lambat juga

1:14:14Apalagi awal tahun

1:14:16Ganti ini ya

1:14:18Ada versi baru ya

1:14:20Awal tahun ya

1:14:22Untung bisa pakai yang lama

1:14:24Untung tahun ini bisa pakai yang lama

1:14:26Aku masih pakai yang lama sih

1:14:28Aku masih pakai yang lama sih

1:14:30Karena berusaha login nggak bisa

1:14:32Yaudahlah pusing

1:14:34Kalau untuk

1:14:36Peribadi iya yang lama

1:14:38Tapi kalau untuk perusahaan nggak bisa

1:14:40Karena pakai yang ber kan

1:14:42Skortex iya

1:14:44Luar deh

1:14:46Ya ampun

1:14:48Oke

1:14:50Sebelum kemana-mana

1:14:52Ini kita jawab-jawabin ya pertanyaannya

1:14:54Saya siswa RPL kadang bosen

1:14:56Belajar database, mudah-mudahan abis dengerin ini

1:14:58Jangan nggak bosen ya

1:15:00Banyak banget yang bisa di eksplor

1:15:02Dan kebanyakan

1:15:04Database itu mahal lho

1:15:06Iya, kebanyakan developer

1:15:08Sekarang kan fokusnya belajar aplikasi

1:15:10Sedangkan database nya kan itu kayak

1:15:12Second class gitu ya

1:15:14Kalau kita punya kemampuan database yang

1:15:16Kuat kayaknya nilai tambahnya

1:15:18Lebih gede kali ya

1:15:20Udah bisa bikin app, database nya

1:15:22Kencang gitu ya

1:15:24Saya di company saya salah satu

1:15:26Engineer yang

1:15:28Mengerti banyak

1:15:30Mengenai Elasticsearch

1:15:32Jadi secara karir saya aman

1:15:34Karena masih ada beberapa klien

1:15:36Banyak klien yang pakai

1:15:38Elasticsearch

1:15:40Jadi kalau ada apa-apa

1:15:42Saya tetap masih punya pekerjaan

1:15:44Database engineer

1:15:48Dajinya menarik

1:15:50Oh iya

1:15:52Oh iya

1:15:54Yang menarik adalah

1:15:56Sekarang itu banyak AI startup

1:15:58Bisa jauh datas UMR

1:16:02Banyak AI

1:16:04Database

1:16:06Faktor database

1:16:08Lagi banyak startup

1:16:10Itu kadang-kadang

1:16:12Tahu internalnya, Postgres

1:16:14Itu sangat-sangat menarik sih

1:16:16Tapi ya

1:16:18Berat sekali untuk belajar dan musuhnya

1:16:20Berat-berat juga

1:16:22Berat-berat juga

1:16:24Ini tadi ada yang

1:16:26Ngomongin tentang

1:16:28Elasticsearch itu kan bagian dari

1:16:30NoSQL berarti ya

1:16:32Ya itu dia

1:16:34Bukan

1:16:36Bukan SQL base ya

1:16:38Bukan SQL base ya

1:16:40Search engine ya

1:16:42Search engine jatuhnya ya

1:16:44Ini ada pertanyaan tentang

1:16:46MongoDB

1:16:48Kalau MongoDB gimana scalingnya

1:16:50NoSQL

1:16:52Kalau, jadi kalau

1:16:54Sekarang sederhana ya

1:16:56RDBM itu sangat

1:16:58RDBMS itu

1:17:00Dia kan ada

1:17:02Asset compliant ya

1:17:04Dengan posisi dan rubriknya

1:17:06Most of NoSQL itu adalah

1:17:08Asset compliant tapi high scalable

1:17:10Karena

1:17:12Ini mau read write-nya itu

1:17:14Cepat banget, karena kan tidak ada skema

1:17:16Yang menggunakan satu tabel dan satu tabelnya

1:17:18Di sana

1:17:20Dia read write-nya cepat

1:17:22Di sana, tapi saya ingat

1:17:24Itu MongoDB versi terbaru

1:17:26Dia mencoba untuk menambahkan fitur

1:17:28Aku gak tahu konsepnya gimana

1:17:30Tapi itu

1:17:32Jadi mungkin ada

1:17:34Fitur di dalam Mongo

1:17:36Jadi lebih kala-kala spektrumnya NoSQL itu

1:17:38Heavy

1:17:40Highly scalable

1:17:42Tapi tidak

1:17:44Agile compliant, RDBMS

1:17:46Agile compliant tapi tidak

1:17:48Gampang di scalingnya

1:17:50Susah scalingnya ya

1:17:52Susah scalingnya ya

1:17:54Oke, ini tapi pertanyaannya

1:17:56Bukan tentang MongoDB sih

1:17:58Ada proses transaksi yang saat ini

1:18:00Displit menjadi beberapa collection

1:18:02Collection-nya, panjang banget

1:18:04Ada paca ya

1:18:06Ini database apa ini

1:18:10Ada alasan khusus

1:18:12Kenapa skema nya displit terlalu panjang

1:18:14Pertanyaannya ada gak?

1:18:16Baca lagi, isu saya sekarang untuk

1:18:20Generated Report

1:18:22Agregat data, agregat data salah satunya

1:18:24Kesulitannya di NoSQL

1:18:26Kalau non-relational

1:18:28Untuk agregasi adalah musuhnya

1:18:30Itu musuh utamanya

1:18:32Tidak bisa

1:18:34Kenapa pakai NoSQL?

1:18:36Atau kalau mau gak mau

1:18:40Cara paling gampangnya adalah

1:18:42Mas bikin tron job

1:18:44Buat masukin itu ke relational database

1:18:46Atau bikin objeknya sendiri

1:18:50Khusus untuk view

1:18:52Atau bikin collection

1:18:54Bikin collection yang dimana itu

1:18:56Ngebungkan, jadi ada summary

1:18:58Ada ITL-nya ya

1:19:00Extract

1:19:02Terus di load collection itu

1:19:04Khusus buat report itu

1:19:06Jauh lebih gampang bacanya

1:19:08Jadi bukan quitcon lagi, jadi batching

1:19:12Saya juga sering menemukan

1:19:16Beberapa hal tentang

1:19:18Biasanya terutama MongoDB

1:19:20Atau NoSQL itu

1:19:22Mindsetnya masih relational database

1:19:24Jadi design tablenya itu

1:19:28Masih relasi gitu

1:19:30Masih dipisah-pisah

1:19:32Jadi keunggulan si NoSQL

1:19:34Jadi gak kepake gitu kan ya

1:19:36Jadi harus join-join juga

1:19:38PR banget itu kalau join-join

1:19:40Aku juga waktu budget firestore dulu ya

1:19:44Itu cara

1:19:46Membuat simulasi kita kan

1:19:48ID ini

1:19:50Di beberapa collection itu

1:19:52Itu share gitu

1:19:54Jadi ketika kita punya satu ID ini

1:19:56Dia langsung ambil semuanya

1:19:58Dalam satu waktu bersama itu

1:20:00Salah satu cara mengakali simulasi

1:20:02RDPMS

1:20:04Tapi aku udah agak lupa sih

1:20:06Karena udah lama banget gak main

1:20:08Tapi jangan segera

1:20:10Mengembangkan sama SQL

1:20:12Jadi RDPMS itu salah

1:20:14Ya, justru

1:20:16Kelebihannya justru bukan disitu

1:20:18Kelebihannya adalah ya tadi

1:20:20Kencang untuk

1:20:22Nulis dan baca, tapi kalau untuk

1:20:24Join-join mah susah, SDK-nya susah

1:20:26Ada pertanyaan tentang Firebase Data Connect

1:20:30Wah, gak ngerti nih saya, Mas Donny ngerti gak?

1:20:32Aku pernah bikin inkos senang ini ya

1:20:36Di platform lain

1:20:38Intinya adalah

1:20:40Data Connect itu sebenarnya pakai Cloud SQL

1:20:42Cloud SQL?

1:20:44Oh, oke

1:20:46Ada magic happen disana

1:20:48Berarti kamu hal-hal

1:20:50Tahu bahwa

1:20:52Ya, jadi kalau kita connect your app

1:20:54To fully manage scaleable database

1:20:56Using Cloud SQL for scale-scale

1:20:58Cuman, Data Connect itu

1:21:00Interface-nya pakai GraphQL

1:21:02Itu doang sebenernya

1:21:04Oh

1:21:06Oke, oke

1:21:08Kebayang-kebayang

1:21:10Untuk saya, aku gak bakal pakai itu sih

1:21:12Kenapa?

1:21:16GraphQL, gara-gara GraphQL, bukan?

1:21:18Karena kami custom solver

1:21:20Solusinya harus jadi on-off

1:21:22Oh, karena ini ya, karena kebutuhan

1:21:24Jadi gak akan pakai, karena gak cocok

1:21:26Kalau itu cocok buat kamu

1:21:28Pakai aja nih

1:21:30Kira-kira cocoknya buat aplikasi seperti apa

1:21:32Atau perusahaan apa

1:21:34Yang bergerak di bidang apa

1:21:36Startup

1:21:38Karena dia ada

1:21:40VectorDB ya

1:21:42Vector PG Vector

1:21:44Disana, dan ada GameKit

1:21:46Firebase GameKit

1:21:48Pernah bikin blog di Google Cloud

1:21:52Indonesia ya, jadi gampang banget

1:21:54Bikin receiver sama indexer-nya

1:21:56Pakai GameKit

1:21:58Oke, oke

1:22:00Oh, berarti dia lebih ke integrasinya ya

1:22:02Kalau kita

1:22:04Real-time database-nya

1:22:06Itu connect gak ke

1:22:08Fire, apa namanya?

1:22:10Firestore ya? Firebase yang

1:22:12Real-time database itu? Beda ya?

1:22:14Beda

1:22:16Beda ya, oke

1:22:18Itu kan non-sql juga ya

1:22:20Itu non-sql juga ya, berarti ya

1:22:22Ya

1:22:24Nah, Firebase ini juga salah satu

1:22:26Database yang mungkin anak front-end

1:22:28Cukup familiar ya, dengan Firebase

1:22:30Atau supabase sekarang

1:22:32Atau tadi pocketbase, dan base-base yang lain

1:22:34Ada budi-base banyak banget

1:22:36Bagaimana budi-base?

1:22:38Itu budi-base

1:22:40Kayaknya CMS no code ya?

1:22:42Iya, budi-base itu

1:22:44Yang buat budi bukan ya orang Indonesia

1:22:46Itu kayak

1:22:48Google Cool

1:22:50Internal Tools gitu loh, Mas

1:22:52Iya, buat internal tools, kayak apa ya

1:22:54Ritual

1:22:56Ritual, ya Ritual

1:22:58Ya Ritual

1:23:00Buat dashboard internal

1:23:02Nah, Mas Rio

1:23:04Untuk lo audit trail, better

1:23:06No-sql atau rdbms?

1:23:08Audit

1:23:10Trail

1:23:12Bukan yang pakai itu ya, tadi ya

1:23:16Elasticsearch gitu ya

1:23:18Kalau logging-logging

1:23:20Siapa pernah, akses siapa

1:23:22Pernah untuk

1:23:24Nyimpan ini kan ya, lebih ke

1:23:26Apakah NTT itu dirubah

1:23:28Bentuk perubahannya apa, kemudian

1:23:30Siapa yang merubahannya

1:23:32Aku kebetulan banyak

1:23:34Kasus dimana

1:23:36Table audit logging itu di dalam

1:23:38Database yang sama

1:23:40Jadi

1:23:42Menurutku secara mayoritas

1:23:44Audit ini kayak akan jarang

1:23:46Dikunakan ya, di akses

1:23:48Dalam kondisi tertentu

1:23:50Nggak harus dipisah sih

1:23:52Mendingan pakai database yang sama

1:23:54Dan nggak perlu ada relasi, itu cuma kayak

1:23:58Dam doang

1:24:00Oke, oke, ada tips nggak

1:24:06Untuk pindahan data-database

1:24:08Dari sql server ke

1:24:10Postgre

1:24:12Dengan

1:24:14Iya ya, enak sekarang ya

1:24:18Kalau dulu kita bikin sendiri ya

1:24:20Karena

1:24:22Sebenernya jadi masalah itu adalah

1:24:24Sql itu share

1:24:26Sql1 dengan engineer itu

1:24:28Mungkin di angka 70%

1:24:30Jadi kamu nggak bisa

1:24:32Dengan query yang sama

1:24:34Itu bakal

1:24:36Mati, gitu kan

1:24:38Satu-satunya cara adalah

1:24:40Ya udah, gitu pakai

1:24:42Demini buat

1:24:44Untuk bantuan AI ya

1:24:46Bikin ini disana

1:24:50Atau pakai ORM

1:24:52Multi-dialect ya

1:24:54Data-based ya

1:24:56Disini gunanya ORM juga ya

1:24:58Itu juga benefitnya

1:25:00ORM sih, bisa pindah-pindah

1:25:02Data-based

1:25:04Jadi yang mengurus ini tuh bukan kamu

1:25:06Ya, abstraksi

1:25:08Ngomongin ORM

1:25:14Kalau project awal pakai ORM, sekarang

1:25:16Quailshare aja udah terasa latensinya

1:25:18Apakah perlu re-readdb atau

1:25:20Pake query-builder

1:25:22Ya

1:25:24Latensinya

1:25:26Di mana dulu, cari dulu

1:25:28Cari tahu dulu

1:25:30Root cause-nya

1:25:32Locking mechanism

1:25:34Atau

1:25:36Locking, atau memang

1:25:38Ada slow-query, atau ya

1:25:40Mp1 Anda itu

1:25:42Yang manggil-manggil

1:25:44Berulang kali

1:25:46Jangan-jangan aplikasinya

1:25:48Atau kodenya yang

1:25:50Four di dalam four

1:25:52Terus panggil query langsung kan

1:25:54Bisa aja, banyak ya

1:25:56Jadi harus cari tahu ini dulu

1:25:58Jangan asal

1:26:00Re-write

1:26:02Karena takutnya masalahnya bukan di situ

1:26:04Kawatirnya masalahnya

1:26:06Bukan di situ

1:26:08Ini pertanyaan internal nih

1:26:14Mas Aris

1:26:16Sampai saat ini ada perdebatan pemilihan tipe data

1:26:18Primary ke antara UID atau serial

1:26:20Atau Big Indie MySQL

1:26:22Ini nama-nama

1:26:24Nanti aja di jawab internal

1:26:28Buat yang nggak tahu

1:26:32Kalau serial itu kan

1:26:34Autoincrement kan ya

1:26:36Kalau sekarang kan sudah

1:26:40Disarankan untuk tidak menggunakan auto increment

1:26:42Karena terlalu mudah di

1:26:44Prediksi

1:26:46Bisa mudah ditebak

1:26:48Misalkan user/1/edit

1:26:50Ini user ID 1 nih

1:26:52Bisa ketahuan

1:26:54Jadi lebih disarankan menggunakan UID

1:26:56Itu kalau dari sisi awam ya

1:26:58UID sudah versi berapa sekarang?

1:27:00UID 7 ya?

1:27:04V4

1:27:06V7

1:27:08Ada lagi yang baru ulit

1:27:12Ada ulit itu sudah sendiri

1:27:14Oh ada, beneran dia

1:27:16Saya pikir

1:27:18Bedanya V7 sama V4 itu adalah

1:27:20V7 itu sudah menambahkan timestamp

1:27:22Unique timestamp

1:27:26Dalam generasinya

1:27:28Kalau di versi 4 kan

1:27:30Dia cuman random set of

1:27:32Ini ya, unique

1:27:34Tidak ada timestampnya, jadi tidak bisa dissolve

1:27:36Secara ID

1:27:38Di sana

1:27:40Perdebatannya panjang

1:27:42Atau UID

1:27:44Di sana

1:27:46Karena set of example itu

1:27:48Pasti akan mengambil storage

1:27:50Cukup lumayan

1:27:52Karena cukup panjang untuk mencari unique ya

1:27:54Unique, unique ID

1:27:56Di sana

1:27:5864 ya?

1:28:0064 karakter ya?

1:28:02Berapa banyak sih?

1:28:04128 bit

1:28:06128 bit

1:28:08Panjang ya, panjang karakternya

1:28:12Apa ulit?

1:28:1448 bit unique timestamp

1:28:204 bit versi random data

1:28:22Di sana

1:28:24Oke

1:28:30Bisa pilih salah satu ya

1:28:32Kalau pindah dari auto increment ke

1:28:34UID atau ulit gimana caranya?

1:28:36Bikin aja

1:28:38Tablebar, te kolom baru

1:28:40Generate aja UID nya

1:28:42Pindahin index nya

1:28:44Tapi gak jadi primary key

1:28:46Ya ubah aplikasinya

1:28:48Dulu

1:28:50Di alternya

1:28:52Gak mungkin diritikkan itu kalau direplace

1:28:54Mending tambah kolom baru

1:28:56Mending tambah kolom baru

1:28:58Jangan direplace ya

1:29:00Apalagi delete

1:29:02Delete kolom itu cari masalah hidup sih

1:29:08Terus dari aplikasi

1:29:10Dilarang

1:29:12Dilarang menggunakan ID

1:29:14Jangan lagi pakai kolom ID

1:29:16Pelan-pelan ya, gak langsung

1:29:20Semuanya ya, kecuali aplikasinya kecil

1:29:22Jangan dirit kolom, itu benar kata mas Tony

1:29:26Apalagi kalau sudah deplikasi

1:29:28Sekali dirit kolom gede

1:29:30Itu syncronasi lama

1:29:32Bisa out of sync

1:29:34Kalau udah out of sync sakit kepala

1:29:36Saya kalau sudah out of sync

1:29:38Mending saya matiin to server

1:29:40Generate ulang, replikasi aja

1:29:42Karena sudah susah

1:29:44Kalau udah out of sync

1:29:46Aku pernah delete database production

1:29:50Waktu magang baru 3 hari

1:29:52Serius

1:29:54Saya

1:29:56Saya belum pernah

1:29:58Delete database, tapi saya pernah

1:30:00Delete query, tapi lupa where

1:30:02Begitu liat seribu sekian

1:30:04Roll affected

1:30:06Oh oh, kalau itu pernah

1:30:08Benarnya itu jadi test dari

1:30:10Perusahaan itu sih, apakah dia punya

1:30:12Mekanisme dimana kalau ada mistake

1:30:14Dari sesuatu, bisa direcover dengan

1:30:16Udah

1:30:18Di sana, jadi itu experience

1:30:20Yang tidak akan terlupakan sih

1:30:22Kalau misalnya, by the way itu

1:30:24Pernah disini, anaknya Zero One

1:30:26Untung ada backup

1:30:28Jadi beneran literalnya, delete

1:30:32Ada para di backupnya jadi aman

1:30:34Oh, kalau Mezo

1:30:36Katanya, tadi

1:30:38Pernah delete database, tapi nggak kehapus

1:30:40Gak beneran kehapus, soft delete atau gimana

1:30:42Nggak tahu deh

1:30:46Keringet dingin

1:30:48Oh, di test kali, emang sengaja kali

1:30:50Di test, emang harus mengalami itu

1:30:52Dan itu juga bagian test dari perusahaan

1:30:56Apakah siap kalau terjadi kesalahan-kesalahan

1:30:58Itu kan kesalahan umum ya

1:31:00Kalau sesuatu yang

1:31:02Kamu kerja pernah

1:31:04Waktu kerja, pernah mengisi form

1:31:08Untuk bersedia, bekerja di bawah tekanan

1:31:10Itu paling di bawah tekanan itu kayak gitu

1:31:12Itu bekerja di bawah tekanan

1:31:16Itu

1:31:18Job description yang paling tidak

1:31:20Tidak bisa dijelaskan

1:31:22Tekanan apa dulu

1:31:24Oh iya, itu juga ya

1:31:26Makanya jangan sekali-kali

1:31:28Mengesekusi

1:31:30Sql, yang Mas Oddy itu

1:31:32Mengesekusi Sql

1:31:34Di production itu harus dilihat dua kali ya

1:31:36Kadang-kadang lupa, aware itu

1:31:38Hapus-hapus semua itu

1:31:40Betul-betul, saya juga pernah mengalami

1:31:42Ini kalau aware-nya lupa

1:31:44Bahkan bukan hanya delete, update

1:31:48Update juga bahaya kan, aware-nya lupa

1:31:50Oh iya, nggak pakai aware itu

1:31:52Makanya harus

1:31:56Mekanisme

1:31:58Production, staging

1:32:00Testing itu harus

1:32:02Ini dulu ya, harus clear dulu

1:32:04Kalau di lokal kapus ya

1:32:06Udah

1:32:08Harus jangan sendirian ya

1:32:10Kalau mau mengupdate sesuatu

1:32:12Di production jangan sendirian, harus lebih dari satu

1:32:14Orang

1:32:16Ada kuncennya

1:32:18Pak Imre kayaknya sekarang rolnya itu ya

1:32:20Kuncen, udah habis dia ya

1:32:22Kuncen

1:32:24Harus udah kuncennya, nggak boleh sendiri

1:32:26Apalagi anak magang

1:32:28Wah, ini ada sesuatu yang aneh

1:32:30Kalau anak magang bisa akses database production langsung ya

1:32:34Jadi ya gitulah

1:32:36Kalau saya pernah

1:32:40Arcing, delete

1:32:42Tetapi lupa supply

1:32:44Pathreal-nya

1:32:46Terus, kehapus dong

1:32:52Ya kehapus lah

1:32:54Production

1:32:58Harusnya path-nya itu A, B, C, D, E, E

1:33:00A, B, C, D

1:33:02Tetapi

1:33:04Waktu di concat itu C dan D-nya

1:33:06String kosong

1:33:08Jadinya A, B aja

1:33:10Jadi semua yang di belakang A, B itu

1:33:12Ke delete

1:33:14Aduh kan diwasa

1:33:16Tapi itu jalannya di GitHub Action

1:33:22Dan saat deploy

1:33:24Loh, kok ilang semua

1:33:26Hati-hati yang kalau pakai

1:33:30Siapa yang ngerubah kondisional ini

1:33:32Wah, dilihat

1:33:34Ya

1:33:38Tapi bisa recover

1:33:40Berhasil recover atau

1:33:42Tidak

1:33:44Pertanyaannya, saya nggak tahu file apa yang kehapus

1:33:48Jadi, yang penting-penting

1:33:50Berhasil recover

1:33:52Tetap ada backup-nya

1:33:56Backup file-nya itu kebetulan nggak ada

1:34:00Jadinya ada yang hilang sih, tapi ya

1:34:02Ya sudahlah

1:34:04Ya sudahlah ya

1:34:06Lesson learned

1:34:08Pendewasaan ini ya

1:34:10Tapi bukan saya

1:34:12Saya bukan, bukan saya penyebabnya

1:34:14Saya yang dipanggil untuk

1:34:16Nge-recover

1:34:18Di investigasi

1:34:20Recover

1:34:22Nggak, langsung kayak

1:34:24Kalau bahas di rumah sakit, code blue

1:34:26Kayak langsung

1:34:28Kebakaran

1:34:30Emergenci, dan saya yang ditugaskan

1:34:32Untuk merecover itu semua

1:34:34Secepat mungkin

1:34:366 jam saya, sampai jam 12 malam

1:34:38Baru bisa recover

1:34:42Berapa situs ya

1:34:4416 situs

1:34:46Banyak ya

1:34:48Itu pendewasan diri ya

1:34:50Kalau mau jadi senior engineer

1:34:52Harus melewati fase itu ya

1:34:54Harus pernah horror story

1:34:56Besok paginya

1:34:58Nulis RCA

1:35:00Postmortem

1:35:04Postmortem

1:35:06Sudoh RMRS

1:35:08Sudoh ya

1:35:10Ya bukan sudoh, arcing, arcing delet

1:35:12Itu juga masalahnya

1:35:14Bahaya, sama bahaya

1:35:16Sama RMRF

1:35:18Sama

1:35:20Menghilangkan sesuatu

1:35:22Dengan cara yang berbeda

1:35:24Kalau database

1:35:26Nggak sih

1:35:28Kalau database, rusaknya karena itu tadi

1:35:30Ya saya lakukan delet

1:35:32Tapi kebanyakan, tapi lupa

1:35:34Aplikasinya, replikasinya

1:35:36Yang lain, akhirnya terjadi

1:35:38Out of sync, database nya

1:35:40Loking, segala macam

1:35:42Ya

1:35:44Sakit kepala disitulah

1:35:46Membantu situs

1:36:00Plug Merah

1:36:02Dia juga

1:36:04bottleneck nya

1:36:06Di web server, di hujung nih

1:36:08Banyak traffic, tapi database nya

1:36:10Satu, dan nggak ada caching

1:36:12Itu juga masalahnya

1:36:14Banyaklah

1:36:16Pertanyaan terakhir

1:36:18Ini tentang trigger

1:36:20Ini mirip juga, kayak tadi kita udah bahas

1:36:22Store procedure ya, trigger juga sama

1:36:24Susah maintenance trigger

1:36:26Betul

1:36:28Preferensi ku adalah

1:36:30Mendingan di aplikasi

1:36:34Karena tidak semua orang

1:36:36Aware tentang store procedure

1:36:38Tidak semua orang mengerti

1:36:40Bagaimana membaca itu

1:36:42Kalau aplikasi kan sudah fair sama semua ya

1:36:44Mengerti tahu bahwa itu ada

1:36:46Cron job, atau ada

1:36:48Triggering suatu disitu

1:36:50Paling mentok

1:36:52Yang aku pakai di post way itu

1:36:54Adalah auto

1:36:56Out of sync

1:37:00Listen change

1:37:02Jadi ketika ada

1:37:04Kita kayak, web server itu ya

1:37:06Kalau misalnya ada suatu

1:37:08Table, kita bisa listen

1:37:10Ketika ada perubahan, dia

1:37:12Otomatis juga menghasilkan

1:37:14Data yang paling baru

1:37:16Disana, jadi ada itu di post way

1:37:18Dan digunakan sama

1:37:20Beberapa anak siruan

1:37:22Sebatas itu

1:37:24Kayak custom

1:37:26Bikin

1:37:28SPG

1:37:30SPG, PGL sendiri

1:37:32Itu terlalu

1:37:34Terlalu ini

1:37:36Terlalu susah untuk

1:37:38Dipahami

1:37:40Terlalu susah untuk dipahami, iya

1:37:42Jadi, sebar-sebar ya bisnis logicnya ya

1:37:44Lo masih live

1:37:46Mereka, lo masih live ya

1:37:48Banyak yang curhat soalnya

1:37:50Banyak yang curhat

1:37:52Ini baru mau udahan

1:37:54Udah pertanyaan terakhir

1:37:56Gimana, kita cukupkan?

1:37:58Cukup

1:38:00Kita cukupkan sampai disini, berarti kesimpulannya adalah

1:38:02Kalau mau scaling data bis

1:38:04Pertama yang dilakukan vertical scaling

1:38:06Dulu ya, sampai mentok

1:38:08Sampe mentok budgetnya

1:38:10Ya, sampai mentok

1:38:12Bukan, sebelum melakukan scaling

1:38:14Cari tahu justifikasi

1:38:16Kenapa butuh scaling

1:38:18Oh iya, ini dulu

1:38:20Measure dulu

1:38:22Lambat itu seberapa lambat

1:38:24Jadi sebelum di optimize

1:38:26Di measure dulu, oh

1:38:28Waktu sekarang ini 3 detik

1:38:30Jangan sampai

1:38:32Begitu di optimize, malah jadi

1:38:346 detik, gitu ya

1:38:36[tertawa]

1:38:38Monitoring itu penting

1:38:40Monitoring itu penting, karena kita bisa tahu

1:38:42Betul

1:38:44Sukses apa

1:38:46Term of suksesnya apa

1:38:48Kalau optimize, harusnya kan harus lebih cepat

1:38:50Kalau kita nggak tahu

1:38:52Berapa lama database

1:38:54Query-nya dijalankan

1:38:56Ya, kita nggak bisa measure

1:38:58Nggak bisa ngitung ini

1:39:00Jadi lebih baik atau lebih buruk, gitu

1:39:02Jadi harus measure dulu

1:39:04Habis itu kalau mau scaling ya

1:39:06Di check, di check ini dulu ya

1:39:08Di check query-nya satu-satu

1:39:10Indexing-nya

1:39:12Connection pool-nya

1:39:14Terus ORM-nya

1:39:16Kalau pakai ORM, di optimize

1:39:18Query-nya, kalau bisa pakai

1:39:20Query kalau udah

1:39:22Lumayan kompleks

1:39:24Terus habis itu baru

1:39:26Menuju ke infra

1:39:28Infra-nya tadi kita nggak bahas ya

1:39:30Kasing-nya dulu

1:39:32Kasing-nya dulu

1:39:34Betul

1:39:36Kalau misalkan kayak Postgre

1:39:38Atau MySQL itu kan banyak ya servisnya ya

1:39:40Ada Cloud SQL

1:39:42Ada

1:39:44Aurora

1:39:46RDS, macam-macam gitu ya

1:39:48Atau kita bisa sendiri

1:39:50Menyalahin VM

1:39:52Install Postgre

1:39:54Jadi gitu kan bisa juga

1:39:56Tapi kalau pakai yang servis kan lebih gampang ya

1:39:58Lebih sederhana

1:40:00Ada monitoring-nya juga

1:40:02Terus kalau

1:40:04Berasa masih lambat

1:40:06Vertical scaling sampai mentok ya

1:40:08Mentok, entah itu mentok mesinnya

1:40:10Atau mentok duitnya, budgetnya

1:40:12Karena

1:40:14Semakin ke atas itu

1:40:16Semakin mahal ya, jaraknya semakin tinggi ya

1:40:18Harganya

1:40:22Dan nggak linear ya

1:40:24Harga Cloud itu nggak linear

1:40:26Nggak linear

1:40:28Eksponensial mereka itu

1:40:30Eksponensial, betul

1:40:32Kalau setelah vertical scaling

1:40:34Udah mentok, baru larinya ke

1:40:36Horizontal ya

1:40:38Jadi horizontal itu adalah mesinnya dibanyakin

1:40:40Kalau vertical itu mesinnya

1:40:42Di upgrade

1:40:44Abis itu bisa dipecah

1:40:48Mau dipecah pakai

1:40:50Replika, partitioning

1:40:52Sharding

1:40:54Dan lain-lain

1:40:56Kalau SQLite beda lagi karena dia satu file

1:40:58Dan servisnya

1:41:00Kalau di Cloud-Cloud besar nggak ada ya

1:41:02Harus bikin sendiri ya, atau pakai

1:41:04Pocket base tadi

1:41:06Oke, mungkin cukup

1:41:10Ada lagi yang mau disampaikan

1:41:12Sebelum kita udah, cukup

1:41:14Terima kasih buat teman-teman

1:41:18Diskusinya seru

1:41:20Beberapa pertanyaan yang belum terjawab

1:41:22Mohon maaf belum bisa dijawab

1:41:24Nanti larinya ke

1:41:26Github aja

1:41:28Atau ke Eks

1:41:30Ke Github

1:41:32Discussion atau ke Eksnya, Mas Donny

1:41:34Eksnya apa?

1:41:36Baru aku liat

1:41:38Ternyata juga ada bagu hantam

1:41:40Sedikit informasi aja, di Eks

1:41:42Sudah ada bagu hantam tentang ORM dan

1:41:44Rockwell, aku baru liat

1:41:46Oh iya?

1:41:48Oh iya?

1:41:50Apa pas banget kita lagi ngomongin gitu

1:41:52Tiba-tiba ada bagu hantam

1:41:54Iya, bagu hantam ini

1:41:56Ya udah deh

1:41:58Mas Donny ini yang punya

1:42:00Manjalah Gatra bukan sih?

1:42:02Apa?

1:42:04Bukan!

1:42:06Sebenernya

1:42:08Sebenernya, mana ininya

1:42:10Ini

1:42:12Terima kasih

1:42:16Bukan

1:42:18Iya, Mas Donny harus mampir lagi

1:42:20Harus

1:42:22Harus sering-sering mampir ya, jangan sampai

1:42:24Ya

1:42:26Oke

1:42:28Mungkin sekian dulu

1:42:30Terima kasih buat semuanya, terima kasih juga

1:42:32Buat Mas Donny yang udah menyempatkan hadir

1:42:34Terima kasih Mas Donny

1:42:36Kita ketemu di

1:42:38Ayo Eks ya

1:42:40Ayo Eks

1:42:42Atau di manapun kita ketemu ya

1:42:46Sampai ketemu

1:42:48Buat Ivan

1:42:50Dan Eka, sampai ketemu minggu depan

1:42:52Bye-bye

1:42:54Bye-bye

1:43:16[MUSIK]

1:43:46Buat eksplorasi, kita akan mencoba.

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Komentar