Mengurangi biaya cloud dan platform tanpa mengorbankan delivery: right-sizing resource, optimasi cluster dengan spot dan autoscaling, efisiensi GitOps itu sendiri, serta monitoring biaya dengan cost allocation dan deteksi anomali.

Di episode 32 sebelumnya organisasi sudah tersusun. Sekarang pertanyaan yang tidak bisa dihindari di setiap organisasi nyata: berapa biayanya? Biaya cloud tumbuh mengikuti cluster, dan cluster mengikuti aplikasi — dan tanpa disiplin, tagihan menjadi kejutan. Di dunia GitOps ada kabar baik: semua keputusan resource ada di Git, jadi optimasi biaya bisa di-review seperti perubahan kode biasa.
Episode ini membahas cost optimization dari tiga sudut: resource aplikasi, cluster, dan GitOps itu sendiri — lalu cara memantau dan mengalokasikan biaya. Ingat prinsip episode 25: ukur dulu, ubah satu hal, ukur lagi.
Pemborosan terbesar biasanya bukan aplikasi yang kekurangan resource, melainkan yang meminta jauh di atas kebutuhan. Pod yang meminta 4 vCPU tetapi memakai 0.3 vCPU membuang ruang dan uang. Data dari kubectl top dan metrik pemakaian menunjukkan ketidaksesuaian request vs utilization:
kubectl top pods -n api --sort-by=cpu
kubectl top pods -n api --sort-by=memory
kubectl describe pod api-5d4b6c7d9-8xk2m -n apiTarget yang sehat: pemanfaatan request CPU sekitar 60-80 persen dari rata-rata. Di bawah itu, kecilkan request; terus-menerus di atas 90 persen, perbesar.
Requests menentukan penjadwalan dan kuota; limits menentukan perlindungan dari throttling/OOM. Praktik baik: request yang realistis (dari pengukuran), limit yang melindungi (tidak membiarkan satu pod mengambil semuanya). Gunakan kuota namespace (episode 28) agar request yang boros tidak bisa menyebar.
Recommender dulu — biarkan ia memberi saran, lalu terapkan secara manual (mode Auto bisa mengejutkan jika langsung dipakai).apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: api-vpa
namespace: api
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: api
updateMode: "Off"Cluster dengan satu node pool homogeneous membuang uang untuk workload yang tidak cocok. Pisahkan:
on-demand.Spot instance bisa menghemat 60-90 persen biaya compute — dengan syarat workload tahan eviction. Di Kubernetes, spot node harus diberi label dan aplikasi yang memakainya harus sanggup restart: Deployment multi-replika dengan topologySpreadConstraints, disruptionBudget, dan state di luar pod (database tetap di node on-demand).
spec:
template:
spec:
nodeSelector:
node.kubernetes.io/lifecycle: spot
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostnameCluster autoscaler menambah node saat pod Pending karena resource, dan menghapus node yang menganggur. Ini jaring pengaman yang membuat optimasi aman: request yang terlalu kecil tidak lagi menyebabkan outage karena cluster menyesuaikan. Pasangkan dengan HPA untuk hasil terbaik: HPA mengatur replika, autoscaler mengatur node.
Satu cluster multi-tenant (episode 28) lebih murah daripada banyak cluster kecil: node idle terisi workload lain. Kerugiannya adalah kompleksitas isolasi — trade-off yang harus dihitung per organisasi, bukan diasumsikan.
ArgoCD juga menelan resource. Optimasinya (episode 25) adalah optimasi biaya:
--depth 1).ARGOCD_GIT_CONCURRENCY) agar repo server tidak over-provisioned.metadata:
annotations:
argocd.argoproj.io/reconcile-period: 20m
spec:
...Biaya yang tidak diukur tidak bisa dioptimalkan. Empat lapis monitoring:
Label resource adalah dasar semuanya — sejak awal (episode 28): team=, environment=, tenant=, app=. Cloud provider membaca label ini untuk laporan biaya. Label yang tidak disiplin = biaya yang tidak bisa diatribusikan.
Integrasikan metrik Kubernetes dengan data biaya. Tools seperti OpenCost membaca resource request dan pemakaian aktual, lalu menghitung biaya per namespace/deployment dari harga provider. Kombinasikan dengan metrik ArgoCD (episode 22) untuk melihat biaya per aplikasi.
Anomali biaya biasanya pertanda masalah: aplikasi yang stuck CrashLoopBackOff (restart terus = compute terbuang), node pool yang tidak pernah menyusut, atau sync yang menggila. Alert sederhana bisa menyelamatkan ribuan dolar:
groups:
- name: cost
rules:
- alert: DailyCostSpike
expr: sum(increase(cost_daily[1d])) / sum(increase(cost_daily[7d])) > 1.5Warning
Hati-hati dengan optimasi yang hanya menggeser biaya. Menurunkan request pod berarti cluster lebih padat — bagus. Tetapi jika dilakukan tanpa kuota dan autoscaler, justru memicu eviction dan degradasi. Optimasi biaya harus diverifikasi dengan SLO: biaya turun tetapi error rate ikut naik bukanlah kemenangan.
Episode ini memetakan optimasi biaya: right-sizing aplikasi dengan data pemakaian nyata, request/limit yang disiplin, HPA dan VPA, strategi node pool dengan spot instance dan cluster autoscaling, efisiensi multi-tenancy, efisiensi GitOps melalui tuning sync frequency, ukuran repo, cache, dan jaringan, serta monitoring biaya dengan cost allocation tags, usage tracking, showback/chargeback, dan deteksi anomali.
Poin yang harus kalian bawa:
Recommender memberi saran; terapkan setelah diverifikasi.Biaya sudah terkendali. Saatnya memastikan semua siap sebelum benar-benar meluncur ke produksi. Di episode 34 selanjutnya kita membahas production deployment checklist — checklist pra-produksi, praktik operasional, jebakan umum, dan operasi hari-ke-dua. Sampai jumpa di episode 34!