Membandingkan mengelola database sendiri versus memakai managed database cloud: multi-AZ dengan synchronous replication dan automatic failover, hingga SQL terdistribusi cloud-native, lengkap dengan komparasi RDS, Aurora, Cloud SQL, Spanner, Azure SQL, dan Azure Database for PostgreSQL.

Di episode 6 kalian belajar menjalankan dan membayar VM, di episode 7 menyimpan data, dan di episode 8 membuat aplikasi selalu tersedia dan bisa men-scalable. Namun semua itu berpulang pada satu komponen yang paling sensitif: database. Aplikasi boleh saja crash dan di-restart, tetapi kehilangan data adalah bencana yang tidak bisa di-undo.
Episode 9 ini membahas relational managed database: kenapa memilih managed daripada self-managed, bagaimana high availability multi-AZ bekerja (synchronous replication dan automatic failover), apa itu SQL terdistribusi cloud-native, serta peta komparasi layanan di AWS, GCP, dan Azure.
Ada dua cara menjalankan database relasional di cloud. Cara pertama: install sendiri PostgreSQL atau MySQL di VM (self-managed). Cara kedua: pakai layanan terkelola seperti RDS atau Cloud SQL (managed).
| Aspek | Self-managed | Managed database |
|---|---|---|
| Patching dan update | Manual, harus dijadwalkan | Otomatis oleh provider |
| Backup dan restore | Setup dan uji manual | Otomatis, mendukung point-in-time recovery |
| High availability | Setup manual (mirror, replication) | Built-in, cukup satu pengaturan (misalnya Multi-AZ) |
| Biaya | Murah di awal, mahal di biaya operasional | Ada premium, tapi menghemat waktu dan risiko |
Tip
Analoginya seperti beli mobil versus naik taksi. Membeli mobil (self-managed) memberi kontrol penuh, tetapi kalian sendiri yang urus servis, pajak, dan perbaikan. Naik taksi (managed) berarti kalian fokus ke perjalanan — dalam konteks ini, fokus ke aplikasi. Untuk produksi, mulai dari managed database; self-managed sebaiknya hanya untuk belajar, lab, atau kebutuhan kustomisasi yang benar-benar ekstrem.
Yang sering tidak dihitung orang saat membandingkan biaya adalah biaya operasional self-managed: waktu untuk patch, on-call saat database turun di tengah malam, dan risiko kehilangan backup. Managed database menambahkan sedikit premium harga, tetapi menghapus hampir seluruh biaya tersembunyi itu.
Keunggulan utama managed database adalah high availability yang "tinggal nyalakan". Konsepnya: satu database utama (primary) di satu AZ, satu replika standby di AZ lain, terhubung dengan replikasi sinkron.
Client aplikasi
| (terhubung ke satu endpoint saja)
v
[ Endpoint / DNS ]
|
+------------+------------+
| |
v v
PRIMARY (AZ-a) STANDBY (AZ-b)
PostgreSQL PostgreSQL
+------ synchronous replication ------+Replikasi sinkron berarti setiap transaksi harus ditulis ke primary dan standby sebelum dianggap sukses. Jika primary mengalami kegagalan — crash, atau seluruh AZ-a padam — endpoint yang sama otomatis diarahkan ke standby dalam hitungan menit. Aplikasi tidak perlu tahu ada pergantian; ia hanya perlu reconnect ke endpoint yang sama.
Important
Perhatikan satu detail yang sering disalahpahami: di RDS Multi-AZ, standby bukanlah "read replica". Semua traffic baca tetap dilayani primary; standby hanya bertugas menyimpan salinan untuk failover. Jika kalian ingin membagi beban baca, buat read replica terpisah — itu tujuan yang berbeda dan diaktifkan dengan pengaturan yang berbeda pula.
Inilah alasan mengapa database managed bisa mencapai uptime tinggi: failover otomatis, backup otomatis, dan perbaikan replika otomatis disediakan oleh provider, sehingga kalian tidak lagi bangun tengah malam untuk mempromosikan replika manual.
Selain database relasional klasik, muncul kelas baru: SQL terdistribusi cloud-native yang dirancang sejak awal untuk skala cloud. Perwakilannya adalah Amazon Aurora (kompatibel MySQL dan PostgreSQL), Google Cloud Spanner (SQL global dengan konsistensi kuat), dan Azure SQL Database (termasuk tier Hyperscale).
Ciri khasnya:
Note
Kapan memakai distributed SQL? Jangan otomatis. Untuk aplikasi yang datanya cukup ditampung satu instance dengan read replica, RDS atau Cloud SQL sudah sangat memadai dan lebih sederhana. Distribusi otomatis baru terasa manfaatnya ketika aplikasi punya traffic baca-tulis global, kebutuhan uptime sangat tinggi, atau data tumbuh melampaui batas satu instance.
Peta layanan di tiga provider besar:
| Kebutuhan | AWS | GCP | Azure |
|---|---|---|---|
| Managed PostgreSQL/MySQL | RDS | Cloud SQL | Azure Database for PostgreSQL/MySQL |
| SQL terdistribusi cloud-native | Aurora | Spanner | Azure SQL Database (Hyperscale) |
| Engine didukung | MySQL, PostgreSQL, MariaDB, Oracle, SQL Server | PostgreSQL, MySQL, SQL Server | SQL Server, PostgreSQL, MySQL |
Kabar baiknya, RDS, Cloud SQL, dan Azure Database for PostgreSQL mendukung engine open-source yang kalian kenal. Artinya, kalian bisa pindah antar-provider tanpa mengganti ORM atau menulis ulang query — migrasi cukup ekspor data dan impor ke layanan baru.
Praktik langsung: aws rds create-db-instance membuat database PostgreSQL terkelola:
aws rds create-db-instance \
--db-instance-identifier prod-postgres \
--db-instance-class db.t3.medium \
--engine postgres \
--engine-version 16.1 \
--allocated-storage 100 \
--multi-az \
--master-username admin \
--master-user-password 'S3cure!Pass' \
--db-subnet-group-name prod-db-subnets \
--vpc-security-group-ids sg-0abc123Penjelasan singkat flag penting:
--multi-az menyalakan high availability sekaligus — primary dan standby otomatis tersebar di dua AZ.--db-subnet-group-name menunjuk grup subnet yang membentang di beberapa AZ; inilah tempat replika standby akan hidup.--vpc-security-group-ids membatasi siapa yang boleh terhubung — idealnya hanya security group aplikasi, bukan internet.Caution
--master-user-password 'S3cure!Pass' pada contoh di atas hanyalah ilustrasi. Jangan pernah menaruh kredensial database dalam command line, skrip, atau repository. Simpan di Secrets Manager atau parameter store, lalu biarkan aplikasi mengambilnya saat runtime dengan temporary credentials — persis prinsip IAM yang kita bahas di episode 4.
Pada episode 9 ini, kalian sudah memahami kenapa managed database lebih masuk akal untuk produksi daripada self-managed, bagaimana high availability multi-AZ bekerja lewat synchronous replication dan automatic failover, serta apa itu SQL terdistribusi cloud-native dan kapan layak dipakai. Kalian juga melihat peta layanan RDS, Aurora, Cloud SQL, Spanner, Azure SQL, dan Azure Database for PostgreSQL beserta contoh perintah aws rds create-db-instance.
Kunci yang harus dibawa pulang:
Data relasional hanyalah satu bentuk data. Di episode 10, kita akan membahas NoSQL & In-Memory Databases — DynamoDB, Redis, dan kawan-kawan — untuk kebutuhan yang tidak cocok dengan tabel kaku: skema fleksibel, latency milidetik, dan cache yang mempercepat aplikasi ribuan kali.