IT-Operatiounen — Site Reliability Live-Modell

Dir sidd op Bereetschaft fir e Webservice: e Load Balancer virun enger Flott vun Instanzen, en Cache virun enger Datebank, an en Disponibilitéitsziel vun 99,9 %. All Minutt rechent de Modell Waardeschlaangverzögerung, Timeouts, Cache-Treffer an Datebankbelaaschtung aus Léierbuchformelen aus — a wat Är Decisiounen kaschten.

Wat Dir léiere wäert

Simulator

Zäit 0 min
Ufroen 1125 · Feelerrate 0,00% · p99-Latenz 342 ms · Instanzen am Service 10 (+0) · Cache-Trefferquote 77% · Datebank-Auslaaschtung 19% · Iwwreg Feelerbudget (30 Deeg) 50,0%⇉1125 Ufro/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msFlott-Auslaaschtung 52%Cache-Trefferquote 77%Datebank-Auslaaschtung 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Instanz bedéngt
  • Instanz bootet
  • Instanz um schlechte Build
  • Fräie Slot
  • Erakommend Ufroen

Reegler

Ënnergrenz fir d'Flott. Eropsetzen start Instanzen direkt — si brauche awer nach d'Boot-Verzögerung, ier se bedéngen.

Zilverfolgung vun der Auslaaschtung; keng nei Hochskaléierung, solaang Instanzen nach booten. Aus = genee de Minimum.

Méi niddreg = méi Reserv a méi Käschten. Déi gemoosse Auslaaschtung kann 100 % net iwwerschreiden, also wiisst eng gesättegt Flott nëmme Schrëtt fir Schrëtt.

Méi laang TTL = méi Treffer, awer d'Äntwerte kënne méi al sinn (mëttlert Alter ≈ TTL/2).

Lued 6 Minutten laang heefeg Schlësselen (+12 % vum Cache pro Minutt) zum Präis vun 600 zousätzlechen Datebank-Ufroen/s.

Undeel vun de 30 % mat niddregem Prioritéit (Prefetch, Batch, Crawler), déi um Load Balancer mat „méi spéit nach eng Kéier probéieren“ ofgewise ginn.

De schwéiere Feature füügt 20 ms CPU an eng Datebank-Ufro pro Ufro derbäi. Aus = graduell Degradéierung.

Deployt de leschte gudde Build op engem frëschen Fleet nei (5 min, zweemol berechent), dann schalt et den Traffic ëm. Nach eng Kéier drécken fänkt d'Virbereedung nei un; ouni e schlechte Build am Live kascht et just Geld.

Indikatoren

Feelerrate
0,00%
normal
p99-Latenz
342ms
normal
Iwwreg Feelerbudget (30 Deeg)
50,0%
normal
Flott-Auslaaschtung
52%
normal
Burn-Rate (1 h)0,0 ×
Ufroen1125 req/s
Instanzen am Service10
Instanzen, déi booten0
Cache-Trefferquote77 %
Datebank-Auslaaschtung19 %
Ofgewise Traffic0 %
Flottekäschten4,00 $/h
Käschte bis elo0,00 $
Mëttlert Alter vun den Cache-Äntwerten30 s
Traffic um schlechte Build0 %
Empfehlungen disponibel100 %

Tendenz

Feelerrate: — %20,000,00

Kriszeszenarien

Niveau 1 · Schlecht Release

Um 09:10 geet e neie Build eraus. De Mount war schonn haart: et sinn nëmmen nach 20 % vum Feelerbudget iwwreg. Minutten nom Deploy geet de Burn-Rate-Alarm lass. Schützt d'Budget.

  • Feelerbudget um Enn iwwreg ≥ 18,5 %
  • Duerchschnëttlech Feelerrate ≤ 0,65 % nom Deploy
  • Flottekäschten ≤ 9,50 $

Niveau 2 · Flash Crowd

E Link zum Service verbreet sech séier, an iergendwann haut de Moien gëtt eng Verkéiersspëtzt erwaart — keen weess, wéini, nach wéi grouss. Nei Instanze brauche momentan 8 Minutten, fir ze starten. Wann et kënnt, haalt Feeler a Latenz niddreg, ouni Geld fir ongenotzt Kapazitéit ze verbrennen.

  • Duerchschnëttlech Feelerrate ≤ 0,2 %
  • Duerchschnëttlech p99-Latenz ≤ 400 ms
  • Duerchschnëttlech ofgewise Traffic ≤ 5 %
  • Gesamtkäschte ≤ 21 $
  • Empfehlungen ≥ 85 % vun der Zäit disponibel

Niveau 3 · Kale Cache

An der Mëttesspëtz läscht e Wartungsskript de ganze Cache. All Ufro geet elo an d'Datebank, déi fir déi üblech Trefferquote vun 85 % dimensionéiert war. Bréngt de Service zréck, ouni d'Datebank ze iwwerlaaschten.

  • Duerchschnëttlech Feelerrate ≤ 1,5 %
  • Datebank-Auslaaschtung ni iwwer 90 % no der éischter Minutt
  • Mëttlert Alter vun de Cache-Äntwerten ≤ 90 s am Duerchschnëtt
  • Gesamtkäschte ≤ 9 $
  • Empfehlungen ≥ 80 % vun der Zäit disponibel
  • Duerchschnëttlech ofgewise Traffic ≤ 5 %

Basis — de Modell hannert de Zuelen

All Relatioun, déi de Simulator notzt, mat hirer Quell. Konstanten, déi als Annahme markéiert sinn, si Beispillkalibréierungen.

D'Ufroe follege Dagesverlaf plus Stéierungen; d'Zuel pro Minutt ass zoufälleg (Poisson, Normalapproximatioun) mat enger klenger 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]Annahm: Worker-Zuelen, Servicezäiten, Datebankkapazitéit, Cache-Gréisst, Opfëllgeschwindegkeet, Präisser an d'Feelerrate vum schlechte Build sinn illustrativ Wäerter fir e mëttelgrousse Webservice.
Erlang C: d'Wahrscheinlechkeet, datt eng Ufro op e fräie Worker muss waarden an engem M/M/N-System.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Waardezäit-Schwanz: d'Chance, méi laang wéi t ze waarden, fält exponentiell of; Ufroen, déi beim 2-s-Timeout nach waarden, schléie fehl. Iwwer der Kapazitéit schléit de Surplus fehl.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
p99-Latenz aus de Quantile vun der Servicezäit a Waardezäit.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Approximatioun: d'Quantile vu Bedéngung a Waarden ze addéieren ass net de genaue p99 vun hirer Zomm (e kann e bëssen ze héich oder ze niddreg sinn); d'Schlaang gëtt a jidder Minutt als stabil behandelt, well Ufroe Millisekonne daueren.
Little'scht Gesetz: beschäfteg Worker = Ukomme-Rate × Zäit am Service.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL-Cache: bei zoufälligen Ufroe fänkt all Fehltreffer eng TTL-Period un, an där Ufroen treffen.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Cache-Fehltreffer belaaschten d'Datebank; hir Waardeschlaangverzögerung verlangsamt all Ufro, déi se beréiert, wat och d'App-Worker fëllt.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Annahm: Worker-Zuelen, Servicezäiten, Datebankkapazitéit, Cache-Gréisst, Opfëllgeschwindegkeet, Präisser an d'Feelerrate vum schlechte Build sinn illustrativ Wäerter fir e mëttelgrousse Webservice.
SLO a Feelerbudget: d'Burn-Rate seet, wéi vill Mol méi séier wéi erlaabt d'Budget ausginn gëtt.
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 mat Zilverfolgung, Boot-Verzögerung an engem Cooldown.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Annahm: Worker-Zuelen, Servicezäiten, Datebankkapazitéit, Cache-Gréisst, Opfëllgeschwindegkeet, Präisser an d'Feelerrate vum schlechte Build sinn illustrativ Wäerter fir e mëttelgrousse Webservice.
Aner Betribskonstanten, déi am Modell benotzt ginn.
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 instancesAnnahm: Worker-Zuelen, Servicezäiten, Datebankkapazitéit, Cache-Gréisst, Opfëllgeschwindegkeet, Präisser an d'Feelerrate vum schlechte Build sinn illustrativ Wäerter fir e mëttelgrousse Webservice.

Zoufall: e Mulberry32-Generator mat Seed; benotzt Verdeelungen — uniform, exponentiell (invers CDF), normal (Box–Muller), Poisson (Knuth). De Seed gëtt ugewisen a kann deelt ginn.

Quellen

  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

Wien dëst beruflech mécht

Edukativ Modell — net fir operationell Decisiounen. Richteg Anlagen kalibréieren all Konstant op hiren eegenen Equipement an hir eege Daten.