Melengkapi platform dengan data: managed databases sebagai layanan, provisioning dan backup otomatis, serta self-service data yang membuat developer mendapatkan database dalam hitungan menit tanpa tiket dan tanpa jadi DBA

Setelah di episode 13 developer bisa deploy aplikasi tanpa menyentuh Kubernetes, pertanyaan berikutnya selalu datang cepat: kalau aplikasinya sudah jalan, datanya disimpan di mana? Data adalah kebutuhan yang paling sering diminta developer dan paling mahal dilayani secara manual. Episode ini membangun data platform — managed databases, data services, dan self-service data — supaya developer mendapatkan database dalam hitungan menit, bukan menunggu tiket berhari-hari.
Mengapa ini penting? Provisioning database dan pemberian akses data termasuk toil terbesar tim infrastruktur di hampir semua organisasi. Tanpa data platform, satu request database mempertemukan DBA, tim network, dan security dalam satu antrian. Dan ketika developer kabur ke cloud console membuat DB sendiri, platform kehilangan kontrol biaya, backup, dan keamanan. Data platform adalah cara mengembalikan kendali itu tanpa memperlambat developer.
Sebelum membangun, pahami pilihan tingkat abstraksi yang tersedia:
| Pilihan | Siapa yang merawat | Konsekuensi platform |
|---|---|---|
| Self-managed di K8s (StatefulSet + PVC) | Developer atau tim ops | Fleksibel, tapi backup, upgrade, dan tuning jadi tanggung jawab mereka |
| Managed cloud (RDS, Cloud SQL) | Cloud provider | Cepat, tapi tiap tim bisa memilih cara yang berbeda-beda |
| Data platform (DBaaS internal) | Tim platform, satu antarmuka | Konsisten, biaya terkendali, self-service |
Data platform bukan berarti "semua database harus di dalam cluster kita". Ia berarti semua permintaan database melewati satu jalur yang terstandardisasi — entah itu DB in-cluster lewat operator, atau managed DB dari cloud yang di-provisioning lewat modul yang sama. Konsistensi antarmuka itulah produknya.
Titik masuknya bisa dua: operator in-cluster (contoh CloudNativePG, KubeDB) yang mengelola PostgreSQL di Kubernetes, atau modul IaC (Terraform/Crossplane) untuk managed DB dari cloud. Pilihan keduanya diseragamkan lewat satu template — developer tidak perlu tahu bedanya.
data/
├── modules/
│ ├── postgres/ # satu antarmuka: managed cloud ATAU in-cluster
│ ├── mysql/
│ └── object-storage/
├── compositions/
│ ├── db-small.yaml # 1 vCPU, 4Gi, backup harian
│ ├── db-medium.yaml
│ └── db-large.yaml
└── policies/
├── require-backup.yaml
└── require-encryption.yamlAplikasi tidak boleh menerima connection string mentah yang berubah-ubah. Platform menyediakan pooler (PgBouncer) dan proksi yang memberi DNS stabil, dan connection string disuntikkan sebagai secret (episode 10) — bukan di-hardcode di config.
Migrasi skema adalah bagian paling menakutkan dari data. Platform menyediakan tooling migrasi terstandardisasi (pola upgrade task di app runner, atau job khusus) sehingga migrasi bisa di-review, diuji di staging, dan dijalankan dengan rollback plan — bukan psql manual ke produksi.
Backup tanpa restore yang teruji adalah ilusi. Data platform wajib punya SLO backup (RPO/RTO) dan verifikasi restore berkala otomatis — restore ke lingkungan staging setiap minggu dan biarkan test suite berjalan di atasnya.
Lapisan terakhir: data untuk analitik (warehouse, lakehouse) dengan katalog data dan akses via query engine, bukan lagi "minta dump dari DBA". Ini mencegah tiap tim membangun pipeline data sendiri-sendiri.
Mari rancang flow yang sama seperti bootstrap service di episode 12, sekarang untuk data. Developer membuka portal dan memilih "Create Database":
# Diisi developer lewat form portal
name: payments-api
engine: postgres
version: "16"
size: small # -> db-small: 1 vCPU, 4Gi, backup harian
environment: dev
enable_read_replica: falseHasilnya: developer mendapat database yang aman secara default (encryption, backup aktif, quota sesuai size) tanpa membuka cloud console. Akses lewat secret yang disuntikkan ke aplikasi — misalnya resource type: postgres di score.yaml (episode 13) yang di-resolve otomatis ke connection string.
Important
Perlakukan data sebagai produk dengan SLO yang jelas: RPO/RTO backup, retensi data, waktu provisioning, dan semuanya terekam di audit log. Database bukan resource biasa — ia menyimpan aset paling berharga, dan platform yang gagal mengamankannya akan kehilangan kepercayaan developer untuk selamanya.
Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita menaikkan skala platform dari satu cluster menjadi banyak: multi-cluster & multi-tenancy — bagaimana mengelola fleet cluster tanpa kehilangan kendali, dan bagaimana menetapkan model tenancy yang benar sebelum jumlah cluster meledak!