Operasi TI — site reliability Model langsung

Anda siaga (on call) untuk layanan web: load balancer di depan armada instance, cache di depan database, dan target ketersediaan 99,9 %. Setiap menit model menghitung delay antrean, timeout, cache hit, dan beban database dari rumus buku teks — dan berapa biaya keputusan Anda.

Apa yang akan Anda pelajari

Simulator

Waktu 0 mnt
Permintaan 1125 · Laju galat 0,00% · Latensi p99 342 ms · Instance melayani 10 (+0) · Cache hit rate 77% · Utilisasi database 19% · Error budget tersisa (30 hari) 50,0%⇉1125 req/dtk▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msUtilisasi armada 52%Cache hit rate 77%Utilisasi database 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Instance melayani
  • Instance booting
  • Instance pada build buruk
  • Slot kosong
  • Permintaan masuk

Kontrol

Batas bawah untuk armada. Menaikkannya langsung meluncurkan instance — tetapi masih butuh jeda boot sebelum melayani.

Pelacakan target pada utilisasi; tidak ada scale-out baru selama instance masih booting. Mati = tepat minimum.

Lebih rendah = lebih banyak ruang dan biaya lebih tinggi. Utilisasi terukur tidak bisa melebihi 100 %, sehingga armada jenuh tumbuh hanya langkah demi langkah.

TTL lebih panjang = lebih banyak hit, tetapi jawaban bisa lebih tua (usia rata-rata ≈ TTL/2).

Memuat kunci panas selama 6 menit (+12 % dari cache per menit) dengan biaya 600 kueri database tambahan/dtk.

Bagian dari 30 % prioritas rendah (prefetch, batch, crawler) yang ditolak di load balancer dengan „coba lagi nanti“.

Fitur berat menambah 20 ms CPU dan satu kueri database per permintaan. Mati = degradasi mulus (graceful degradation).

Men-deploy ulang build baik terakhir pada fleet baru (5 mnt, ditagih dua kali), lalu mengalihkan trafik. Menekan lagi akan mengulang persiapan; jika tidak ada build buruk yang aktif, ini hanya menghabiskan uang.

Indikator

Laju galat
0,00%
normal
Latensi p99
342ms
normal
Error budget tersisa (30 hari)
50,0%
normal
Utilisasi armada
52%
normal
Burn rate (1 jam)0,0 ×
Permintaan1125 req/s
Instance melayani10
Instance sedang booting0
Cache hit rate77 %
Utilisasi database19 %
Lalu lintas dibuang0 %
Biaya armada4,00 $/h
Biaya sejauh ini0,00 $
Usia rata-rata jawaban ter-cache30 s
Lalu lintas pada build buruk0 %
Rekomendasi tersedia100 %

Tren

Laju galat: — %20,000,00

Skenario krisis

Level 1 · Rilis buruk

Build baru dirilis pukul 09:10. Bulan ini sudah berat: hanya 20 % error budget tersisa. Beberapa menit setelah deploy, halaman peringatan burn-rate berbunyi. Lindungi budget.

  • Error budget tersisa di akhir ≥ 18,5 %
  • Laju galat rata-rata ≤ 0,65 % setelah deploy
  • Biaya armada ≤ $9,50

Level 2 · Keramaian mendadak

Tautan ke layanan menyebar cepat dan lonjakan lalu lintas diperkirakan terjadi sekitar pagi ini — tak seorang pun tahu kapan, atau seberapa besar. Instans baru butuh 8 menit untuk menyala hari ini. Saat lonjakan datang, jaga galat dan latensi tetap rendah tanpa membakar uang untuk kapasitas yang menganggur.

  • Laju galat rata-rata ≤ 0,2 %
  • Latensi p99 rata-rata ≤ 400 ms
  • Rata-rata lalu lintas dibuang ≤ 5 %
  • Total biaya ≤ $21
  • Rekomendasi tersedia ≥ 85 % waktu

Level 3 · Cache dingin

Pada puncak tengah hari skrip pemeliharaan mengosongkan seluruh cache. Setiap permintaan kini menuju database, yang dirancang untuk hit rate 85 % biasa. Pulihkan layanan tanpa membebani database berlebih.

  • Laju galat rata-rata ≤ 1,5 %
  • Utilisasi database tidak pernah di atas 90 % setelah menit pertama
  • Usia rata-rata jawaban ter-cache ≤ 90 dtk rata-rata
  • Total biaya ≤ $9
  • Rekomendasi tersedia ≥ 80 % waktu
  • Rata-rata lalu lintas dibuang ≤ 5 %

Dasar — model di balik angka

Setiap hubungan yang dipakai simulator, beserta sumbernya. Konstanta yang ditandai sebagai asumsi adalah kalibrasi ilustratif.

Permintaan mengikuti kurva harian ditambah gangguan; jumlah per menit acak (Poisson, aproksimasi normal) dengan sedikit burstiness.
λ(t) = base × (1 + 0.25·sin(2π(t + clock − 6 h)/24 h)) × surge(t), clock = time of day at the start (peak at 12:00); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.02))[6]Asumsi: jumlah worker, waktu layanan, kapasitas database, ukuran cache, kecepatan pengisian, harga, dan laju galat build buruk adalah nilai ilustratif untuk layanan web ukuran menengah.
Erlang C: probabilitas bahwa permintaan harus menunggu worker bebas dalam sistem M/M/N.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Ekor waktu tunggu: peluang menunggu lebih lama dari t turun secara eksponensial; permintaan yang masih menunggu pada timeout 2 dtk gagal. Di atas kapasitas, kelebihannya gagal.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Latensi p99 dari kuantil waktu layanan dan waktu tunggu.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Pendekatan: menjumlahkan kuantil layanan dan antrean bukan p99 persis dari jumlah keduanya (bisa sedikit tinggi atau rendah); antrean dianggap stabil dalam setiap menit karena permintaan berlangsung dalam milidetik.
Hukum Little: worker sibuk = laju kedatangan × waktu dalam layanan.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
Cache TTL: dengan permintaan acak, setiap miss memulai periode TTL di mana permintaan mengenai (hit).
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Miss cache membebani database; delay antreannya memperlambat setiap permintaan yang menyentuhnya, yang juga mengisi worker aplikasi.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Asumsi: jumlah worker, waktu layanan, kapasitas database, ukuran cache, kecepatan pengisian, harga, dan laju galat build buruk adalah nilai ilustratif untuk layanan web ukuran menengah.
SLO dan error budget: burn rate menunjukkan berapa kali lebih cepat dari yang diizinkan budget dihabiskan.
budget = 1 − SLO = 0.1 %; burn = error rate / 0.1 %; Δbudget per min = burn / 43,200; burn (1 h) = mean error rate over the last 60 min / 0.1 % (window pre-filled with the opening minute)[1][2]
Autoscaler pelacak target dengan jeda boot dan cooldown.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Asumsi: jumlah worker, waktu layanan, kapasitas database, ukuran cache, kecepatan pengisian, harga, dan laju galat build buruk adalah nilai ilustratif untuk layanan web ukuran menengah.
Konstanta operasi lain yang dipakai model.
16 workers/instance · app time 50 ms (+20 ms and +1 query with the feature on) · 2 queries/request · DB 4,000 queries/s · 20,000 hot objects · cache refill τ = 30 min (slower while the DB is saturated) · warm-up job +12 %/min for 6 min, +600 queries/s · timeout 2 s · 30 % low-priority traffic · bad build +5 % errors, ×1.25 CPU · rollback 5 min · $0.40 per instance-hour · scale-in by ≤ 20 % of the fleet after 10 quiet minutes · up to 40 instancesAsumsi: jumlah worker, waktu layanan, kapasitas database, ukuran cache, kecepatan pengisian, harga, dan laju galat build buruk adalah nilai ilustratif untuk layanan web ukuran menengah.

Keacakan: generator mulberry32 ber-seed; distribusi yang dipakai — seragam, eksponensial (CDF invers), normal (Box–Muller), Poisson (Knuth). Seed ditampilkan dan dapat dibagikan.

Sumber

  1. Site Reliability Engineering — Ch. 3 Embracing Risk (error budgets), Ch. 4 Service Level Objectives — Beyer, Jones, Petoff, Murphy (eds.), O'Reilly, 2016
  2. The Site Reliability Workbook — Ch. 5 Alerting on SLOs (burn rate; 14.4× over 1 h = 2 % of a 30-day budget) — Beyer, Murphy, Rensin, Kawahara, Thorne (eds.), O'Reilly, 2018
  3. Teletraffic Engineering Handbook — Erlang C formula; waiting-time distribution for M/M/n, FCFS — ITU-D Study Group 2 Question 16/2 (V. B. Iversen), 2005
  4. J. D. C. Little — A Proof for the Queuing Formula: L = λW — Operations Research 9(3):383–387, 1961
  5. J. Jung, A. W. Berger, H. Balakrishnan — Modeling TTL-based Internet Caches — IEEE INFOCOM 2003, 2003
  6. M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, server farms, capacity provisioning) — Cambridge University Press, 2013

Siapa yang melakukan ini sebagai profesi

Model edukasi — bukan untuk keputusan operasional. Situs nyata mengkalibrasi setiap konstanta sesuai peralatan dan data mereka sendiri.