Jaringan platform data TokoKita sudah beres; sekarang tim yang terdiri dari tiga engineer harus menjalankan PostgreSQL untuk pesanan, warehouse untuk analitik, dan engine query untuk data lake. Setiap sistem tersebut menuntut patch rutin, backup, monitoring, dan rencana failover — pekerjaan operasional yang memakan waktu berhari-hari per bulan. Managed data services memindahkan sebagian besar beban tersebut ke penyedia cloud dengan harga yang lebih tinggi per jam. Chapter ini membedah pertukarannya secara jujur: apa yang bergeser ke penyedia, apa yang tetap jadi tanggung jawab kita, dan kapan justru lebih baik mengelola sendiri.
Apa Itu Managed Data Service #
Managed service adalah layanan data yang operasionalnya dijalankan penyedia cloud: provisioning, patching versi engine, replikasi, backup terjadwal, hingga failover. Amazon RDS, Cloud SQL, dan Azure Database for PostgreSQL adalah contoh untuk database transaksi. Kita tetap mendapatkan PostgreSQL yang asli — SQL, driver, dan ekstensi umum tetap kompatibel — tetapi tanpa pekerjaan administrasi server.
Model serupa berlaku di lapisan analitik. Amazon Redshift dan Azure Synapse Analytics menyediakan warehouse terkelola, sementara Amazon Athena membuat kita bisa menjalankan query langsung di atas object storage tanpa mengelola kluster sama sekali — cukup bayar per data yang dipindai. Dokumentasi resmi masing-masing layanan ada di Amazon RDS User Guide dan Cloud SQL for PostgreSQL .
Shared Responsibility untuk Layanan Data #
Managed bukan berarti tanggung jawab berpindah seluruhnya. Pembagian kerjanya justru harus dipahami presisi:
| Lapisan | Penyedia cloud | Kita |
|---|---|---|
| Hardware, listrik, jaringan fisik | kelola | — |
| Patch engine database & OS | kelola (jendela maintenance) | menjadwalkan versi mayor |
| Backup otomatis & retensi | menyediakan mekanisme | menyetel frekuensi + retensi |
| High availability (multi-AZ) | menyediakan opsi | memilih dan membayarnya |
| Schema, data, dan query | — | kelola penuh |
| Akses (IAM, security group) | — | kelola penuh |
| Pembuktian restore berhasil | menyediakan tool | menguji secara berkala |
Dua baris terakhir adalah yang paling sering disalahpahami: salah konfigurasi akses dan backup yang tidak pernah diuji tetap menjadi tanggung jawab kita meskipun layanannya managed.
Pola Self-Managed vs Managed #
Perbandingan paling jelas terlihat pada tiga pola kebutuhan data TokoKita:
| Kebutuhan | Self-managed | Managed AWS | Managed GCP | Managed Azure |
|---|---|---|---|---|
| Database transaksi | VM + PostgreSQL (kelola sendiri) | Amazon RDS | Cloud SQL | Azure Database for PostgreSQL |
| Warehouse analitik | kluster Trino/Spark sendiri | Amazon Redshift | BigQuery | Azure Synapse Analytics |
| Query di atas object storage | Trino + kluster sendiri | Amazon Athena | BigQuery | Azure Synapse Analytics (serverless) |
Pola ketiga layak digarisbawahi: Athena dan BigQuery memindahkan bahkan urusan kapasitas — tidak ada instance yang harus kita ukur, hanya data yang dipindai. Pola ini bersinergi langsung dengan zona data di object storage yang dibahas pada Chapter Object Storage.
Kalkulasi TCO Mini #
Teori “managed itu mahal” hanya terbukti bila waktu engineer tidak dihitung. Mari kita hitung dengan asumsi eksplisit: satu PostgreSQL 200 GB, tarif engineer $50/jam, horizon 12 bulan, dan harga infrastruktur ilustratif.
"""Mini kalkulasi TCO: PostgreSQL self-managed di VM vs managed service.
Semua harga ILUSTRATIF (bukan harga resmi penyedia); yang nyata adalah
perhitungannya terhadap asumsi yang dinyatakan eksplisit.
"""
BIAYA_JAM = 50 # USD per jam kerja engineer
BULAN = 12
SELF_MANAGED = { # VM + PostgreSQL yang kita kelola sendiri
"infra": 70 + 20 + 10, # VM + disk 200 GB + penyimpanan backup (USD/bulan)
"jam_engineer": 6, # patch OS+DB, atur backup, monitoring, failover manual
}
MANAGED = { # managed database service kelas setara
"infra": 140 + 40, # instance DB + storage & backup otomatis (USD/bulan)
"jam_engineer": 1.5, # review metrik + uji restore berkala
}
def total_bulanan(opsi):
return opsi["infra"] + opsi["jam_engineer"] * BIAYA_JAM
print(f"Asumsi: engineer ${BIAYA_JAM}/jam, horizon {BULAN} bulan\n")
print(f"self-managed : infra ${SELF_MANAGED['infra']} + "
f"{SELF_MANAGED['jam_engineer']} jam = ${total_bulanan(SELF_MANAGED):.0f}/bulan")
print(f"managed : infra ${MANAGED['infra']} + "
f"{MANAGED['jam_engineer']} jam = ${total_bulanan(MANAGED):.0f}/bulan\n")
selisih = (total_bulanan(SELF_MANAGED) - total_bulanan(MANAGED)) * BULAN
print(f"Selisih {BULAN} bulan: ${abs(selisih):.0f} "
f"({'lebih murah managed' if selisih > 0 else 'lebih murah self-managed'})")
# titik impas tarif engineer: infra_a + jam_a*r = infra_b + jam_b*r
r = (MANAGED["infra"] - SELF_MANAGED["infra"]) / (
SELF_MANAGED["jam_engineer"] - MANAGED["jam_engineer"])
print(f"Titik impas tarif engineer: ${r:.2f}/jam")
print("(di bawah tarif itu self-managed lebih murah, di atasnya managed lebih murah)")Output yang Dihasilkan:
Asumsi: engineer $50/jam, horizon 12 bulan
self-managed : infra $100 + 6 jam = $400/bulan
managed : infra $180 + 1.5 jam = $255/bulan
Selisih 12 bulan: $1740 (lebih murah managed)
Titik impas tarif engineer: $17.78/jam
(di bawah tarif itu self-managed lebih murah, di atasnya managed lebih murah)Mari kita telaah baris-baris kode di atas:
- Baris 9-16 (dua opsi): setiap opsi memisahkan biaya infrastruktur dan jam engineer. Perbedaan 4,5 jam per bulan inilah variabel terpenting, bukan harga instance.
- Baris 19-20 (
total_bulanan): total biaya = infra + jam × tarif. Fungsi yang sama dipakai untuk kedua opsi agar perbandingannya adil. - Baris 32-34 (titik impas): persamaan linear sederhana
infra_a + jam_a*r = infra_b + jam_b*rdiselesaikan untuk tarifr. Hasil $17,78/jam membagi dua dunia: bila waktu tim lebih mahal dari itu, managed menang.
Angka pastinya berbeda di setiap organisasi, tetapi bentuk kesimpulannya konsisten: semakin kecil tim dan semakin banyak sistem yang harus dijaga, semakin besar keuntungan managed service.
Kapan Tidak Memakai Managed Service #
Tiga situasi membuat self-managed kembali menarik. Pertama, ketergantungan vendor: fitur spesifik satu penyedia (dialek SQL BigQuery, parameter khusus RDS) membuat migrasi ke platform lain mahal. Kedua, biaya pada skala ekstrem: pada volume puluhan petabyte, kapasitas reserved dan kluster yang kita kelola sendiri bisa jauh lebih murah daripada harga per-GB managed. Ketiga, kebutuhan kontrol: ekstensi PostgreSQL tertentu, akses filesystem, atau tuning kernel kadang tidak tersedia di lingkungan managed.
Keputusan managed versus self-managed menentukan siapa yang menjaga ketersediaan — tetapi bagaimanapun pilihannya, beban data TokoKita tetap berfluktuasi setiap hari. Chapter Autoscaling membahas cara fleet worker menyesuaikan diri secara otomatis terhadap beban puncak.