Menyelaraskan performa dan anggaran data: teknik query tuning, memaksimalkan partitioning & clustering, keputusan serverless vs provisioned, prinsip FinOps untuk data, dan praktik mengurangi biaya pipeline tanpa mengorbankan SLA

Setelah di episode 21 mengoptimasi Spark, kita perluas lensanya ke seluruh platform: query tuning di warehouse, keputusan arsitektur yang menentukan biaya bulanan, dan cara berpikir FinOps untuk data. Di era lakehouse cloud, biaya bukan sekadar tagihan — ia adalah output dari setiap keputusan teknis: schema, partisi, jenis compute, dan kebiasaan query.
Episode 22 menyatukan performa dan biaya menjadi satu disiplin. Kalian akan mempelajari teknik tuning query, memilih antara serverless dan provisioned, dan menerapkan FinOps — dengan praktik nyata memangkas biaya pipeline.
Di warehouse, biaya query ≈ jumlah data yang di-scan. Prinsip pertama tuning: kurangi scan. Tiga teknik yang paling berdampak:
SELECT *.-- Boros: SELECT * tanpa filter partisi
SELECT * FROM analytics.orders;
-- Efisien: hanya kolom yang dibutuhkan, filter pada partisi
SELECT
customer_id,
SUM(amount) AS total
FROM analytics.orders
WHERE created_at >= '2026-08-01'
AND created_at < '2026-08-16'
GROUP BY customer_id;Perhatikan: kalian sudah melihat pola ini di episode 9 — dan di episode 22 kita menjadikannya disiplin biaya, bukan sekadar teknik.
Partitioning & clustering (episode 9) adalah penghemat biaya terbesar di warehouse. Tapi bukan berarti "semakin banyak semakin baik" — ini masalah trade-off:
Pedoman praktis:
| Jenis Data | Rekomendasi |
|---|---|
| Tabel fakta besar | Partisi per hari + cluster 2-3 kolom kardinalitas sedang |
| Tabel dimensi kecil | Tanpa partisi (biaya scan kecil) |
| Tabel fakta bergulir | Partisi per hari + lifecycle (hapus otomatis partisi lama) |
Keputusan compute paling fundamental untuk biaya: serverless atau provisioned?
| Aspek | Serverless | Provisioned |
|---|---|---|
| Contoh | BigQuery, Snowflake (auto-suspend), Databricks Serverless | Redshift cluster, Databricks classic clusters |
| Billing | Per query / per detik pemakaian | Per jam (walaupun idle) |
| Cocok untuk | Beban tidak terduga, banyak query kecil | Beban stabil & terus-menerus |
| Resiko | Biaya melonjak tanpa kontrol | Bayar idle saat sepi |
Beban tak terduga (analyst query acak) → serverless
Beban stabil 24/7 (pipeline streaming) → provisioned + auto-suspend saat idle
Mix (mayoritas ad-hoc) → serverless + budget alertWarning
Serverless tidak otomatis murah — ia mudah disalahgunakan. Query SELECT * yang sering dijalankan analyst bisa memakan anggaran dalam seminggu. Serverless harus selalu disertai kontrol: budget alert, quota per tim, dan materialisasi hasil query yang sering.
FinOps adalah disiplin mengelola biaya cloud sebagai tim — bukan hanya tugas finance. Tiga pilar untuk data engineer:
SELECT
job_id,
user_email,
total_bytes_processed,
total_slot_ms,
query
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE DATE(creation_time) >= CURRENT_DATE() - 7
ORDER BY total_bytes_processed DESC
LIMIT 20;Tiga pertanyaan FinOps yang wajib dijawab setiap bulan:
Studi kasus nyata: sebuah pipeline malam hari yang membengkak. Langkah pemangkasan:
SELECT * menjadi kolom eksplisit.budget:
amount: 2000000 # Rp 2 juta / bulan
alerts:
- percent: 50
channels: [slack-data-team]
- percent: 90
channels: [slack-data-team, email-oncall]
- percent: 100
channels: [slack-data-team]Hasil yang umum dicapai: biaya turun 30-50% tanpa mengubah SLA — hanya dengan disiplin scan, partisi yang tepat, dan menghilangkan idle.
Mengoptimasi biaya di tempat yang salah. Tiga query raksasa biasanya menyumbang 80% biaya. Temukan itu dulu (FinOps visibility), jangan menyisir semua.
Serverless tanpa kontrol. Budget alert dan quota per tim adalah syarat mutlak untuk serverless.
Partisi berlebihan. Partisi per jam untuk tabel 1 juta baris justru lebih mahal. Ukur, jangan asal ikut tren.
Mengorbankan SLA demi biaya. Optimasi yang memutus SLO (episode 20) bukan optimasi. Ukur keduanya.
Di episode 22 ini kalian telah menyatukan performa dan biaya:
Di episode 23 selanjutnya kita memasuki analitik kecepatan tinggi: real-time analytics (ClickHouse/Druid) — OLAP real-time, ClickHouse, dan streaming analytics, plus praktik membangun dashboard real-time. Sampai jumpa di episode 23!