IT prevádzka — spoľahlivosť služieb (SRE) Živý model

Máte pohotovosť pri webovej službe: load balancer pred flotilou inštancií, cache pred databázou a cieľ dostupnosti 99,9 %. Každú minútu model počíta čakacie oneskorenie, timeouty, zásahy cache a záťaž databázy podľa učebnicových vzorcov — a koľko vás stoja vaše rozhodnutia.

Čo sa naučíte

Simulátor

Čas 0 min
Požiadavky 1125 · Miera chýb 0,00% · Latencia p99 342 ms · Inštancie v prevádzke 10 (+0) · Miera zásahov cache 77% · Využitie databázy 19% · Zostávajúci rozpočet chýb (30 dní) 50,0%⇉1125 pož./s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msVyužitie flotily 52%Miera zásahov cache 77%Využitie databázy 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Inštancia obsluhuje
  • Inštancia sa spúšťa
  • Inštancia na zlom builde
  • Voľné miesto
  • Prichádzajúce požiadavky

Ovládanie

Spodná hranica flotily. Jej zvýšenie spustí inštancie hneď — stále však potrebujú oneskorenie štartu, kým začnú obsluhovať.

Sledovanie cieľového využitia; žiadne nové škálovanie nahor, kým sa inštancie ešte spúšťajú. Vypnuté = presne minimum.

Nižšie = viac rezervy a viac nákladov. Meraná využiteľnosť nemôže prekročiť 100 %, takže nasýtená flotila rastie len krok za krokom.

Dlhšie TTL = viac zásahov, ale odpovede môžu byť staršie (priemerný vek ≈ TTL/2).

Načítava horúce kľúče 6 minút (+12 % cache za minútu) za cenu 600 ďalších databázových dotazov za sekundu.

Podiel z 30 % s nízkou prioritou (prefetch, dávky, crawlery) odmietnutý na load balanceri s „skúste neskôr“.

Náročná funkcia pridáva 20 ms CPU a jeden databázový dotaz na požiadavku. Vypnuté = kontrolovaná degradácia.

Znovu nasadí posledný dobrý build na novej flotile (5 min, účtuje sa dvakrát), potom prepne prevádzku. Opakované stlačenie reštartuje prípravu; ak nie je živý žiadny zlý build, stojí to iba peniaze.

Ukazovatele

Miera chýb
0,00%
normálne
Latencia p99
342ms
normálne
Zostávajúci rozpočet chýb (30 dní)
50,0%
normálne
Využitie flotily
52%
normálne
Miera spaľovania (1 h)0,0 ×
Požiadavky1125 req/s
Inštancie v prevádzke10
Inštancie sa spúšťajú0
Miera zásahov cache77 %
Využitie databázy19 %
Zahodená prevádzka0 %
Náklady na flotilu4,00 $/h
Doterajšie náklady0,00 $
Priemerný vek odpovedí v cache30 s
Prevádzka na zlom builde0 %
Odporúčania dostupné100 %

Trend

Miera chýb: — %20,000,00

Krízové scenáre

Úroveň 1 · Chybné vydanie

O 09:10 sa nasadí nový build. Mesiac už bol ťažký: zostáva len 20 % rozpočtu chýb. Minúty po nasadení sa spustí upozornenie na mieru spaľovania. Chráňte rozpočet.

  • Zostávajúci rozpočet chýb na konci ≥ 18,5 %
  • Priemerná miera chýb ≤ 0,65 % po nasadení
  • Náklady na flotilu ≤ 9,50 $

Úroveň 2 · Náhly nával návštevníkov

Odkaz na službu sa rýchlo šíri a niekedy dnes ráno sa očakáva nápor prevádzky — nikto nevie kedy ani aký veľký. Nové inštancie sa dnes spúšťajú 8 minút. Keď príde, udržte chyby a latenciu nízko bez míňania peňazí na nevyužitú kapacitu.

  • Priemerná miera chýb ≤ 0,2 %
  • Priemerná latencia p99 ≤ 400 ms
  • Priemerná zahodená prevádzka ≤ 5 %
  • Celkové náklady ≤ 21 $
  • Odporúčania dostupné ≥ 85 % času

Úroveň 3 · Studená cache

Pri poludňajšom vrchole skript údržby vyprázdni celú cache. Každá požiadavka teraz ide do databázy, dimenzovanej na obvyklú mieru zásahov 85 %. Vráťte službu bez preťaženia databázy.

  • Priemerná miera chýb ≤ 1,5 %
  • Využitie databázy nikdy nad 90 % po prvej minúte
  • Priemerný vek odpovedí v cache ≤ 90 s v priemere
  • Celkové náklady ≤ 9 $
  • Odporúčania dostupné ≥ 80 % času
  • Priemerná zahodená prevádzka ≤ 5 %

Základ — model za číslami

Každý vzťah, ktorý simulátor používa, aj s jeho zdrojom. Konštanty označené ako predpoklady sú ilustračné kalibrácie.

Požiadavky sledujú dennú krivku plus poruchy; počet za minútu je náhodný (Poisson, normálna aproximácia) s miernou nárazovosťou.
λ(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]Predpoklad: počty workerov, servisné časy, kapacita databázy, veľkosť cache, rýchlosť dopĺňania, ceny a chybovosť zlého buildu sú ilustračné hodnoty pre webovú službu strednej veľkosti.
Erlang C: pravdepodobnosť, že požiadavka musí čakať na voľného workera v systéme M/M/N.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Chvost času čakania: šanca čakať dlhšie než t klesá exponenciálne; požiadavky, ktoré stále čakajú pri 2-s timeoute, zlyhajú. Nad kapacitu prebytok zlyhá.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
Latencia p99 z kvantilov servisného času a času čakania.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Aproximácia: súčet kvantilov obsluhy a čakania nie je presné p99 ich súčtu (môže byť o niečo vyššie alebo nižšie); front sa v rámci každej minúty považuje za ustálený, pretože požiadavky trvajú milisekundy.
Littleov zákon: obsadení workeri = intenzita príchodov × čas v obsluhe.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
Cache s TTL: pri náhodných požiadavkách každý míňajúci zásah začne obdobie TTL, počas ktorého požiadavky zasiahnu.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Chyby cache zaťažujú databázu; jej čakacie oneskorenie spomaľuje každú požiadavku, ktorá sa jej dotkne, čím sa plnia aj aplikačné workery.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Predpoklad: počty workerov, servisné časy, kapacita databázy, veľkosť cache, rýchlosť dopĺňania, ceny a chybovosť zlého buildu sú ilustračné hodnoty pre webovú službu strednej veľkosti.
SLO a rozpočet chýb: miera spaľovania hovorí, koľkokrát rýchlejšie, než je dovolené, sa rozpočet míňa.
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 so sledovaním cieľa, oneskorením štartu a prestávkou (cooldown).
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Predpoklad: počty workerov, servisné časy, kapacita databázy, veľkosť cache, rýchlosť dopĺňania, ceny a chybovosť zlého buildu sú ilustračné hodnoty pre webovú službu strednej veľkosti.
Ďalšie prevádzkové konštanty použité v modeli.
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 instancesPredpoklad: počty workerov, servisné časy, kapacita databázy, veľkosť cache, rýchlosť dopĺňania, ceny a chybovosť zlého buildu sú ilustračné hodnoty pre webovú službu strednej veľkosti.

Náhodnosť: generátor mulberry32 so seedom; použité rozdelenia — rovnomerné, exponenciálne (inverzná CDF), normálne (Box–Muller), Poissonovo (Knuth). Seed je zobrazený a dá sa zdieľať.

Zdroje

  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

Kto to robí ako povolanie

Vzdelávací model — nie na prevádzkové rozhodnutia. Skutočné zariadenia kalibrujú každú konštantu podľa vlastného vybavenia a údajov.