Kapan satu node database tidak lagi cukup dan bagaimana mendesain sistem yang tumbuh horizontal: memahami model konsistensi dan trade-off CAP, mengenal distributed SQL seperti CockroachDB dan YugabyteDB, Vitess untuk sharding MySQL, hingga kerangka evaluasi arsitektur yang jujur agar keputusan tidak terjebak hype

Episode 21 menaikkan performa di dalam satu node; episode ini membahas batasnya. Read replicas menolong beban baca (episode 8), tapi beban tulis tetap satu titik. Saat tulis tumbuh, ukuran data menggelembung, atau aplikasi menuntut keberadaan di banyak region, kalian harus berpikir terdistribusi.
Distributed database menjanjikan banyak hal sekaligus: skala horizontal, high availability, dan konsistensi. Kenyataannya selalu ada trade-off. Episode ini memberi bahasa untuk mengevaluasi opsi — CockroachDB, YugabyteDB, Vitess — tanpa terjebak hype.
Scaling vertikal (episode 10) punya plafon: mesin terbesar mahal, dan saat mati semua mati. Read replicas menambah throughput baca, tapi tulis tetap satu titik — semua replikasi berasal dari satu primary. Jika laju tulis melebihi kemampuan satu server (misal puluhan ribu transaksi per detik), kalian harus membagi beban ke banyak node.
Ini konsep yang paling sering disalahpahami. Secara singkat:
| Model | Arti | Latensi tipikal |
|---|---|---|
| Strong (linearizable) | Baca selalu melihat tulis terbaru | Paling lambat di cluster |
| Snapshot isolation | Baca snapshot konsisten pada satu titik waktu | Sedang |
| Eventual consistency | Replica bisa sedikit tertinggal, lalu menyusul | Tercepat |
Semakin kuat konsistensi, semakin banyak koordinasi antar node — dan koordinasi memakan waktu. Di dunia nyata aplikasi jarang butuh strong consistency untuk semua data. SELECT katalog produk boleh eventual; saldo akun tidak boleh.
Kata kunci yang wajib kalian baca di dokumentasi: linearizable, snapshot isolation, dan serializable — apakah sistem benar-benar menjamin itu untuk transaksi multi-row atau hanya untuk operasi single-row.
Dua proyek utama di kategori "distributed SQL": CockroachDB dan YugabyteDB. Keduanya:
Setiap node bisa menerima baca dan tulis; data direplikasi sinkron; saat satu node mati, node lain mengambil alih tanpa failover manual (berbeda dengan episode 8 yang perlu pengelolaan failover sendiri).
Batas yang harus dipahami: konsistensi lintas region itu mahal. Menulis data yang harus konsisten ke seluruh dunia menambah latensi tiap transaksi. Solusi umum: geo-partitioning — data ditempatkan dekat usernya, dan hanya data yang benar-benar global yang ditulis lintas region.
Vitess mengambil pendekatan berbeda: bukan database baru, melainkan lapisan routing di depan MySQL yang mengelola sharding. Dikembangkan di YouTube dan dipakai banyak perusahaan dengan beban tulis MySQL raksasa.
Vitess membagi tabel menjadi banyak shard (masing-masing MySQL sendiri), dan Vtgate (query router) menerjemahkan query aplikasi ke shard yang benar. Keunggulan utamanya resharding online: menambah atau membagi shard tanpa downtime — sesuatu yang sangat sulit dilakukan manual (episode 10). Harganya: kompleksitas operasional yang tinggi dan model data harus "shardable" (ada shard key yang jelas).
| Opsi | Cocok untuk | Perhatikan |
|---|---|---|
| Single node + replicas | Beban baca besar, tulis terkendali | Batas tulis dan storage |
| Partitioning (ep. 21) | Satu tabel raksasa, data per-waktu | Terbatas satu node |
| CockroachDB/YugabyteDB | Butuh SQL + ACID + multi-region, tulis tumbuh | Konsistensi lintas region mahal, tim perlu skill baru |
| Vitess | Beban tulis MySQL raksasa, butuh resharding | Kompleksitas operasional tinggi |
Sebelum memilih, jawab lima pertanyaan:
Warning
Distributed database bukan jalan pintas menuju performa. Jika workload satu node belum optimal, memindahkannya ke cluster terdistribusi biasanya menghasilkan sistem yang lebih kompleks, lebih lambat untuk query sederhana, dan lebih mahal. Ukur dulu; distribusikan setelah terbukti perlu.
Langkah praktis yang bisa kalian lakukan tanpa membeli cluster:
Inti yang harus dibawa pulang:
Di episode 23 selanjutnya kita berbicara tentang uang: cost & resource optimization — right-sizing, storage tiering, dan FinOps database — bagaimana menurunkan tagihan cloud tanpa mengorbankan performa. Sampai jumpa di episode 23!