IT eragiketak — guneen fidagarritasuna Modelo bizia

Web-zerbitzu baten guardian zaude: instantzia-flota baten aurrean karga-orekatzaile bat, datu-base baten aurrean cache bat, eta % 99,9ko erabilgarritasun-helburua. Minutu bakoitzean ereduak ilara-atzerapena, denbora-mugak, cache-hitak eta datu-basearen karga kalkulatzen ditu testuliburuko formuletatik — eta zure erabakiek zer kostatzen duten.

Zer ikasiko duzu

Simulagailua

Denbora 0 min
Eskaerak 1125 · Errore-tasa 0,00% · p99 latentzia 342 ms · Zerbitzatzen ari diren instantziak 10 (+0) · Cache-aren hit-tasa 77% · Datu-basearen erabilera 19% · Geratzen den errore-aurrekontua (30 egun) 50,0%⇉1125 eskaera/s▶▶▶▶▶▶▶▶▶▶······························▶ 10 · ⚙ 0 · 52% · p99 342 msFlotaren erabilera 52%Cache-aren hit-tasa 77%Datu-basearen erabilera 19%⚠ 0,00% · 🔥 0,0×50%$ 4,00/h · Σ $0,00
  • Instantzia zerbitzatzen
  • Instantzia abiatzen
  • Build txarreko instantzia
  • Zirrikitu librea
  • Sartzen ari diren eskaerak

Kontrolak

Flotaren zorua. Igotzeak instantziak berehala abiarazten ditu — hala ere abiatze-atzerapena behar dute zerbitzatu aurretik.

Erabileraren araberako helburu-jarraipena; ez da eskala-handitze berririk instantziak oraindik abiatzen ari diren bitartean. Itzalita = gutxienekoa zehazki.

Baxuagoa = tarte gehiago eta kostu gehiago. Neurtutako erabilera ezin da % 100 gainditu, beraz asetutako flota urratsez urrats bakarrik hazten da.

TTL luzeagoa = hit gehiago, baina erantzunak zaharragoak izan daitezke (batez besteko adina ≈ TTL/2).

6 minutuz gako beroak kargatzen ditu (cache-aren +% 12 minutuko) 600 datu-base kontsulta/s gehigarriren prezioan.

Lehentasun baxuko % 30aren (aurrekarga, batch, crawlerrak) zati bat, karga-orekatzailean “saiatu berriro geroago” mezuarekin baztertua.

Funtzio astunak 20 ms CPU eta datu-base kontsulta bat gehitzen dizkio eskaera bakoitzari. Itzalita = degradazio samurra.

Azken build ona berriro zabaltzen du flota berri batean (5 min, bi aldiz fakturatzen da), eta gero trafikoa aldatzen du. Berriro sakatzeak prestaketa berrabiarazten du; build txarrik martxan ez badago, dirua bakarrik kostatzen du.

Adierazleak

Errore-tasa
0,00%
normala
p99 latentzia
342ms
normala
Geratzen den errore-aurrekontua (30 egun)
50,0%
normala
Flotaren erabilera
52%
normala
Erreketa-tasa (1 h)0,0 ×
Eskaerak1125 req/s
Zerbitzatzen ari diren instantziak10
Abiatzen ari diren instantziak0
Cache-aren hit-tasa77 %
Datu-basearen erabilera19 %
Baztertutako trafikoa0 %
Flotaren kostua4,00 $/h
Orain arteko kostua0,00 $
Cacheko erantzunen batez besteko adina30 s
Build txarreko trafikoa0 %
Gomendioak eskuragarri100 %

Joera

Errore-tasa: — %20,000,00

Krisi-agertokiak

1. maila · Kaleratze txarra

Build berri bat 09:10ean kaleratzen da. Hilabetea dagoeneko gogorra izan da: errore-aurrekontuaren % 20 baino ez da geratzen. Zabaldu eta minutu gutxira erreketa-tasaren alerta jotzen du. Babestu aurrekontua.

  • Amaieran geratzen den errore-aurrekontua ≥ % 18,5
  • Zabaltzearen ondoren errore-tasaren batezbestekoa ≤ % 0,65
  • Flotaren kostua ≤ $9.50

2. maila · Bat-bateko jendetza

Zerbitzurako esteka azkar zabaltzen ari da eta trafiko-gorakada bat espero da goiz honetan noizbait — inork ez daki noiz, ez zein handia izango den. Gaur instantzia berriek 8 minutu behar dituzte abiatzeko. Iristen denean, mantendu erroreak eta latentzia baxu, ahalmen ez-aktiboan dirua erre gabe.

  • Errore-tasaren batezbestekoa ≤ % 0,2
  • p99 latentziaren batezbestekoa ≤ 400 ms
  • Baztertutako trafikoaren batezbestekoa ≤ % 5
  • Kostu osoa ≤ $21
  • Gomendioak denboraren ≥ % 85ean eskuragarri

3. maila · Cache hotza

Eguerdiko gailurrean mantentze-script batek cache osoa husten du. Eskaera guztiak orain datu-basera doaz, ohiko % 85eko hit-tasarako neurtuta zegoen datu-basera. Berreskuratu zerbitzua datu-basea gainkargatu gabe.

  • Errore-tasaren batezbestekoa ≤ % 1,5
  • Datu-basearen erabilera inoiz % 90 gainetik ez lehen minutuaren ondoren
  • Cacheko erantzunen batez besteko adina ≤ 90 s batez beste
  • Kostu osoa ≤ $9
  • Gomendioak denboraren ≥ % 80an eskuragarri
  • Baztertutako trafikoaren batezbestekoa ≤ % 5

Oinarria — zenbakien atzean dagoen eredua

Simulagailuak erabiltzen duen erlazio bakoitza, bere iturriarekin. Hipotesi gisa markatutako konstanteak kalibrazio ilustratiboak dira.

Eskaerak eguneko kurba bati eta perturbazioei jarraitzen diete; minutuko kopurua aleatorioa da (Poisson, hurbilketa normala) eta pixka bat eztandatsua.
λ(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]Hipotesia: langile-kopuruak, zerbitzu-denborak, datu-basearen ahalmena, cache-aren tamaina, betetze-abiadura, prezioak eta build txarraren errore-tasa web-zerbitzu ertain baten balio ilustratiboak dira.
Erlang C: eskaera batek langile libre baten zain egon behar izateko probabilitatea M/M/N sistema batean.
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
Itxaron-denboraren isatsa: t baino gehiago itxaroteko probabilitatea esponentzialki jaisten da; 2 s-ko denbora-mugan oraindik itxaroten ari diren eskaerek huts egiten dute. Ahalmenetik gora, soberakinak huts egiten du.
P(W > t) = C·e^(−(N/S − λ)·t); timeouts = P(W > 2 s); a ≥ N ⇒ failed share = 1 − N/a[3]
p99 latentzia zerbitzu-denboraren eta itxaron-denboraren kuantilen bidez.
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]Hurbilketa: zerbitzu- eta itxaron-kuantilen batura ez da haien baturaren p99 zehatza (apur bat altuagoa edo baxuagoa izan daiteke); ilara egonkortzat hartzen da minutu bakoitzean, eskaerek milisegundoak irauten baitute.
Littleren legea: langile okupatuak = iritsiera-tasa × zerbitzu-denbora.
busy workers L = λ·S ⇒ utilization = λ·S / N[4]
TTL cache-a: eskaera aleatorioekin, huts bakoitzak TTL aldi bat hasten du, eta bitartean eskaerak hit egiten dute.
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
Cache-hutsegiteek datu-basea kargatzen dute; bere itxaron-atzerapenak ukitzen duen eskaera bakoitza moteltzen du, eta honek aplikazio-langileak ere betetzen ditu.
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]Hipotesia: langile-kopuruak, zerbitzu-denborak, datu-basearen ahalmena, cache-aren tamaina, betetze-abiadura, prezioak eta build txarraren errore-tasa web-zerbitzu ertain baten balio ilustratiboak dira.
SLO eta errore-aurrekontua: erreketa-tasak esaten du zenbat aldiz azkarrago gastatzen ari den aurrekontua onartua baino.
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]
Helburu-jarraipeneko autoeskalatzailea, abiatze-atzerapenarekin eta hoztegi-denborarekin.
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]Hipotesia: langile-kopuruak, zerbitzu-denborak, datu-basearen ahalmena, cache-aren tamaina, betetze-abiadura, prezioak eta build txarraren errore-tasa web-zerbitzu ertain baten balio ilustratiboak dira.
Ereduak erabiltzen dituen beste funtzionamendu-konstante batzuk.
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 instancesHipotesia: langile-kopuruak, zerbitzu-denborak, datu-basearen ahalmena, cache-aren tamaina, betetze-abiadura, prezioak eta build txarraren errore-tasa web-zerbitzu ertain baten balio ilustratiboak dira.

Ausazkotasuna: hazi bidezko mulberry32 sorgailua; erabilitako banaketak — uniformea, esponentziala (alderantzizko CDF), normala (Box–Muller), Poisson (Knuth). Hazia erakusten da eta partekatu daiteke.

Iturriak

  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

Nork egiten du hau lanbide gisa

Hezkuntza-eredua — ez eragiketa-erabakietarako. Benetako guneek konstante guztiak beren ekipamenduari eta datuei egokitzen dizkiete.