Site Reliability Engineering — DevOps

Apa itu SRE? Site Reliability Engineering adalah disiplin yang menggabungkan software engineering dan operations. Diciptakan oleh Google untuk memastikan…

Site Reliability Engineering (SRE) adalah cara menjaga aplikasi tetap andal dengan pendekatan software engineering: keandalan diukur dengan angka, diberi target, dan sisa "jatah gagal"-nya dipakai untuk memutuskan kapan boleh merilis fitur dan kapan harus berhenti dan memperbaiki. Disiplin ini lahir di Google. Bayangin PO bus antarkota yang berjanji "99% keberangkatan tepat waktu". Mereka menghitung keberangkatan yang tepat waktu dibagi semua keberangkatan. Dari 3.000 keberangkatan sebulan, 1% atau 30 keberangkatan boleh telat. Kalau jatah 30 itu sudah habis tanggal 20, rute baru ditunda dan semua mekanik fokus memperbaiki bus. Di tiket ada janji lain lagi: telat lebih dari satu jam, uang kembali.

🧪 Tebakan cepat: dalam 30 hari terakhir, catatan-api melayani 2.506.020 request, dan 3.973 di antaranya gagal (error 5xx). Itu 99,84% berhasil. SLO-nya 99,9%. Lolos atau gak? Tebak dulu, jawabannya ada di bagian "Menghitung dari data sebulan".

SLI, SLO, SLA

Tiga istilah ini sering tertukar, padahal pertanyaannya beda:

Istilah Artinya Contoh catatan-api Bus
SLI (Service Level Indicator) metrik yang diukur request yang gak 5xx ÷ semua request keberangkatan tepat waktu ÷ semua
SLO (Service Level Objective) target internal untuk SLI 99,9% per 30 hari 99% per bulan
SLA (Service Level Agreement) kontrak dengan pelanggan, ada konsekuensinya 99,5% per bulan, kalau gagal kompensasi 10% uang kembali kalau telat sejam

Menghitung dari data sebulan

Ini data catatan-api untuk 30 hari terakhir (window SLO-nya), sama dengan di Lab. Beberapa hari penting:

Hari Request Gagal Gagal kumulatif Catatan
1 89.770 20 20 hari biasa
8 92.180 20 197 hari biasa
9 88.980 975 1.172 deploy salah ketik nama tabel, 21 menit error
18 61.400 25 1.421 hari Minggu
19 92.100 2.271 3.692 disk Postgres penuh, 35 menit down
30 94.100 28 3.973 akhir window

SLI-nya: (1 − 3.973 ÷ 2.506.020) × 100 = 99,84%. Kedengarannya tinggi, tapi di bawah 99,9%. Jadi gak lolos. Itu jawaban tebakannya. Angka 99,84% dan 99,9% kelihatan dekat, tapi yang dibandingkan adalah sisanya: 0,16% gagal berarti 1,6 kali jatah 0,1%.

Error budget

Error budget adalah jumlah kegagalan yang masih boleh terjadi sesuai SLO: 100% − SLO.

Budget yang terpakai sepanjang bulan: hari ke-8 baru 8%, setelah insiden hari ke-9 jadi 47%, hari ke-18 57%, dan insiden hari ke-19 membuatnya 147%: habis. Makin ketat SLO, makin kecil budget-nya:

SLO Error budget 30 hari Dalam request bulan ini Habis di hari ke-
99% 7 jam 12 menit 25.060 gak habis (16%)
99,5% 3 jam 36 menit 12.530 gak habis (32%)
99,9% 43 menit 2.506 19
99,99% 4 menit 250 9

Kalau budget habis

Tim menulis error budget policy sebelum ada insiden, supaya keputusannya gak diperdebatkan saat panik. Contoh policy dari buku SRE Google, diterapkan ke catatan-api:

Sebaliknya, budget yang masih banyak boleh dipakai untuk mengambil risiko: rilis lebih sering, atau coba fitur baru lewat feature flag. Error budget membuat tim produk dan tim operasional berbagi satu angka, bukan saling tarik.

Toil

Toil adalah pekerjaan operasional yang manual, berulang, bisa diotomasi, gak menambah nilai jangka panjang, dan bertambah seiring aplikasi tumbuh. Google membatasi toil maksimal 50% waktu seorang SRE; sisanya untuk engineering yang menghapus toil itu. Sepanjang track ini kita sudah menghapus beberapa:

Toil Diganti dengan
SSH ke web-1 untuk deploy dengan tangan pipeline CI/CD
Menyalakan ulang app yang crash tengah malam systemd Restart= atau restart: unless-stopped
Memperpanjang sertifikat TLS tiap 90 hari certbot dengan timer otomatis
Menjalankan pg_dump sendiri cron 0 2 * * * dan restore drill

Latihan: calculateErrorBudget

calculateErrorBudget(sloPercent, periodDays) mengembalikan { slo, errorBudgetPercent, downtimeMinutes, downtimeFormatted }. Satu jebakan JavaScript: 100 - 99.9 menghasilkan 0.09999999999999432, bukan 0.1, karena desimal disimpan sebagai biner. Bulatkan ke 2 angka di belakang koma dengan Number((100 - sloPercent).toFixed(2)). Lalu:

⚠️ Jebakan yang sering ketemu

TL;DR: SRE (Site Reliability Engineering) mengukur keandalan dengan angka. SLI adalah metrik terukur (request yang gak 5xx ÷ semua request), SLO adalah target internal (99,9% per 30 hari), SLA adalah kontrak dengan pelanggan yang lebih longgar dan punya konsekuensi. Error budget = 100% − SLO: untuk catatan-api 2.506 request atau 43 menit sebulan. Bulan ini 3.973 request gagal, SLI 99,84%, budget habis di hari ke-19. Saat budget habis, error budget policy membekukan rilis fitur sampai SLI pulih; budget yang tersisa boleh dipakai untuk mengambil risiko. Toil (pekerjaan manual berulang) diganti otomasi, maksimal 50% waktu. Di JavaScript, bulatkan 100 - SLO dengan toFixed(2).

Yang akan kamu pelajari