Mengubah error budget dari konsep menjadi alat keputusan: cara menghitung dan melacaknya, memakainya untuk policy rilis yang sehat, serta mengelola trade-off velocity vs reliability — lengkap dengan praktik gate rilis berbasis error budget

Setelah di episode 3 kita mendefinisikan SLI, SLO, dan SLA, kini saatnya memakai hasilnya untuk hal yang benar-benar mengubah cara kerja tim: error budget. Jika SLO adalah "berapa banyak kegagalan yang kita izinkan", maka error budget adalah cara menghabiskan izin itu secara sadar — dan menjadikannya dasar keputusan, bukan sekadar metrik di dashboard.
Inilah bagian SRE yang paling sering disalahpahami. Banyak tim membuat SLO lalu mengabaikannya sampai melanggar, dan merespons setiap pelanggaran dengan panik. Error budget yang sehat bekerja sebaliknya: ia adalah alat negosiasi dan kecepatan. Ketika budget tersisa, tim boleh bergerak cepat; ketika habis, semua sepakat berhenti dan fokus pada reliability.
Error budget didefinisikan sebagai 100% - SLO dalam periode pengukuran. Contoh perhitungan untuk berbagai SLO dalam 30 hari:
| SLO | Error budget per bulan | Downtime yang "diizinkan" |
|---|---|---|
| 99,0% | 1,0% | ± 7 jam 18 menit |
| 99,9% | 0,1% | ± 43 menit |
| 99,95% | 0,05% | ± 21 menit |
| 99,99% | 0,01% | ± 4 menit |
Perhatikan pola yang sering mengejutkan: naik dari 99,9% ke 99,99% bukan "10x lebih sulit" secara persepsi, melainkan error budget mengecil 10x — downtime izin turun dari 43 menit menjadi 4 menit per bulan. Trade-off ini harus menjadi diskusi bisnis, bukan keputusan teknik sepihak.
Kita lanjutkan dari recording rule episode 3. Untuk mengubah konsumsi budget menjadi rasio tahunan (annualized burn) — cara yang direkomendasikan Google — gunakan query berikut:
(1 - sum(rate(http_requests_total{code=~"2..|3.."}[30d]))
/ sum(rate(http_requests_total[30d])))
/ (1 - 0.999) * 100Bila hasilnya mendekati atau melebihi 100%, budget habis dan SLO terancam. Pola praktiknya:
Inilah bagian yang membedakan SRE dari monitoring biasa: error budget menghubungkan reliability dengan pengembangan. Ketika budget tersisa, tidak ada alasan teknis untuk menahan rilis. Ketika budget habis, rilis yang menambah risiko harus dihentikan sampai budget pulih — bukan karena "takut", melainkan karena kontrak yang disepakati.
Gate rilis ini bisa diotomasi. Contoh: pipeline CI membaca error budget service target dan membatalkan deploy jika burn rate sedang tinggi:
BURN=$(curl -s "http://prometheus:9090/api/v1/query" \
--data-urlencode 'query=burn_rate_slo_30d > 1.2' | jq '.data.result | length')
if [ "$BURN" -gt 0 ]; then
echo "Error budget habis, deploy dibatalkan"
exit 1
fi
echo "Budget aman, lanjut deploy"Note
Gate rilis adalah mekanisme pengaman, bukan pengganti komunikasi. Tim yang matang juga membaca konteks: apakah error yang membakar budget berasal dari release terakhir (maka rollback lebih tepat daripada freeze) atau dari serangan luar (maka freeze rilis tidak menyelesaikan apa pun). Episode 11 akan membahas release reliability secara menyeluruh.
Konflik klasik "tim produk mau rilis cepat, tim operasi mau stabil" adalah masalah desain, bukan masalah orang. Error budget menyelesaikannya dengan mengubah konflik menjadi matematika:
Tim yang sehat mengelola ini seperti anggaran pribadi: menabung (budget besar, rilis jarang berisiko) memberi ruang untuk pengeluaran (rilis berani). Memaksa keduanya sekaligus hanya membuat sistem tidak jujur — SLO diturunkan diam-diam, atau alert dimatikan.
| Skenario | Keputusan berbasis budget |
|---|---|
| Budget 40% tersisa, fitur baru punya risiko sedang | Rilis normal, pantau burn rate |
| Budget 5% tersisa, tapi fitur kecil dan mudah di-rollback | Rilis aman, siapkan rollback otomatis |
| Budget habis karena error massal pagi ini | Freeze rilis hari ini, lakukan postmortem dulu |
| Budget sering habis di hari yang sama tiap minggu | Bukan soal disiplin rilis — tanya dulu apakah SLO realistis |
Langkah praktis untuk episode ini, memakai stack Prometheus yang sudah berjalan:
demo.Warning
Jangan sekali-kali menghapus atau menurunkan SLO hanya karena pelanggaran berulang — tanpa menulis penjelasan dan persetujuan pemilik bisnis. Error budget yang "diakali" adalah kebohongan yang menyebar: alert mati, insiden membesar, dan kepercayaan tim runtuh. Kalau SLO memang salah, ubahlah secara transparan.
Pada episode 4 ini, kalian telah mengubah error budget dari konsep menjadi alat manajemen.
Inti yang harus dibawa pulang:
100% - SLO; kelola secara eksplisit seperti anggaran.Di episode 5 selanjutnya, kita masuk ke tulang punggung pengukuran: observability — tiga pilar metrics/logs/traces, peran OpenTelemetry, dan cara mengkorelasikan ketiganya untuk menjawab pertanyaan "apa yang terjadi?", "kenapa?", dan "di mana?". Sampai jumpa di episode 5!