De lange staart lezen
Latentie leeft op een curve, niet als getal
Een gemiddelde latentie verbergt wat gebruikers ervaren. Echte diensten produceren een verdeling: een curve die aangeeft hoeveel verzoeken hoe lang duurden.
Drie punten op die curve dragen het meeste operationele betekenis:
- p50 (mediaan): het midden van de verdeling. De helft van de verzoeken eindigt sneller, de helft langzamer. Beschrijft de typische ervaring.
- p99: het 99e percentiel. Slechts 1% van de verzoeken duurde langer dan dit. Beschrijft de slechtste ervaring voor gebruikers.
- p99.9: slechts 0,1% van de verzoeken duurde langer. Beschrijft de slechtste ervaring voor zeer actieve gebruikers.
Geometrisch inzicht: latentiedistributies hebben bijna altijd een lange rechterstaart. De curve rijst snel tot een piek rond de mediaan, daalt dan langzaam naar rechts, vaak met een kleine bump ver van het gemiddelde. Die bump vertegenwoordigt de traagste gebruikers: degenen die boos kaartjes schrijven.
Waarom gemiddelden misleiden: een dienst met mediaan 50 ms en p99 van 5000 ms heeft een verschil van 100x tussen typische en staart-ervaringen. Het rekenkundig gemiddelde ligt misschien op 100 ms en verbergt de ramp volledig. Het rekenkundig gemiddelde is een enkele-punt projectie van een 2D-vorm: bijna alle informatie van de vorm verdwijnt.
Het percentielverveelvoudigingsprobleem: een verzoek dat 10 backend-diensten aanraakt, elk met een p99 van 100 ms, heeft een p99 van ruwweg 600 ms (niet 100 ms). De trage staarten vermenigvuldigen. Dit is waarom het SRE-boek waarschuwt: 'pas op voor de traagste van N'. Naarmate N groeit, verslechtert uw staart-latentie snel.
Staartlatentie-wiskunde
Dienst A heeft een verzoekstroom die naar 5 backend-diensten uitwaaiert in parallel & wacht op alle antwoorden. Elk backend heeft een p99-latentie van 100 ms.
Budgetuitputting als helling
Het budget in de tijd uitzetten
Een foutbudget uitgezet op 2D-assen (tijd op x, resterend budget op y) openbaart servicegezondheid in één oogopslag. De vorm van de uitputtingscurve bevat dezelfde informatie als tien individuele dashboards bij elkaar.
Drie referentievormen:
- Gezonde lineaire uitputting: het budget daalt in een rechte lijn evenredig met verstreken tijd. Op dag 14 van een 28-daags venster zou de helft van het budget over moeten blijven. Dit is het SLO-doel zichtbaar gemaakt.
- Snelle brand: een steile helling naar beneden. Duidt op een actief betrouwbaarheidsprobleem. Als de helling steil genoeg is, raakt het budget op voordat het venster reset, waardoor het foutbudget-beleid wordt geactiveerd.
- Genezen curve: een plat of stijgend segment. De dienst presteert beter dan het SLO. Het resterend budget groeit in de tijd, wat ruimte biedt voor riskante releases.
Brandsnelheid is de helling van de uitputtingslijn, genormaliseerd: een brandsnelheid van 1 betekent dat het budget precies even snel op gaat als tijd verstrijkt (perfect afgestemd op SLO). Een brandsnelheid van 10 betekent 10x sneller opbranden dan toegestaan: het hele maandelijkse budget zou in 2,8 dagen opgebrand zijn bij dit tempo.
Multi-venster multi-brandsnelheid-waarschuwing: het SRE-werkboek van Google raadt aan waarschuwingen in te stellen op gecombineerde voorwaarden zoals 'brandsnelheid boven 14,4 in het afgelopen uur ÉN boven 14,4 in de afgelopen 5 minuten'. De meetkunde: een aanhoudende steile helling, niet alleen een korte piek. Deze vorm filtert voorbijgaande storingen weg terwijl echte uitputtingsrisico's worden onderschept.
Een brandsnelheid lezen
Het SLO van je team is 99,9% over 28 dagen. Op dag 7 heb je al 60% van je foutbudget gebruikt. De huidige brandsnelheid over de afgelopen 24 uur is 8.
Diensten als gerichte grafiek
Productie als een DAG
Moderne diensten draaien als een grafiek van afhankelijkheden. Elke dienst is een knooppunt. Elke oproep van dienst A naar dienst B is een gerichte rand van A naar B. Het volledige beeld vormt een gerichte grafiek (soms een DAG, soms met cycli via asynchrone herhalingen).
Kritieke geometrische eigenschappen:
- Out-degree: hoeveel diensten een knooppunt van afhangt. Hogere out-degree betekent meer upstream-foutmodi. Een dienst die van 12 backends afhangt, faalt als een van die 12 faalt.
- In-degree (fan-in): hoeveel diensten van dit knooppunt afhangen. Hogere in-degree betekent dat een enkele fout hier breed cascade. Een database met 30 afhankelijke diensten heeft de grootste explosiestraal.
- Betweenness centrality: hoeveel kortste routes door een knooppunt gaan. Knooppunten met hoge betweenness zijn de knelpunten. Authenticatiediensten & kern-API's scoren meestal hoog.
- Sterk verbonden componenten: groepen diensten die cycli vormen. Als A B aanroept en B roept A aan, heb je een cykel. Cycli bemoeilijken het herstel na fouten: het starten van een dienst vereist dat de ander al werkt.
Explosiestraal is het geometrische concept dat betrouwbaarheidsinvesteringen stimuleert. De explosiestraal van een fout is de subgraaf van afhankelijke diensten die het beïnvloedt. Betrouwbaarheidstechnici investeren zwaar in knooppunten met de grootste explosiestraal. De goedkoopste manier om de algehele systeembetrouwbaarheid te verbeteren is vaak redundantie of graceful degradation toe te voegen bij knooppunten met de hoogste betweenness.
Explosiestraal-redenering
Een consumentendienst is afhankelijk van: AuthService, UserDB, ProductCatalog, PaymentGateway, RecommendationEngine, EmailService, AnalyticsService. AuthService heeft 47 andere diensten die ervan afhangen. EmailService heeft 3 andere diensten die ervan afhangen. RecommendationEngine heeft 2 andere diensten die ervan afhangen.
Informatiemeetkunde van een dashboard
Pixels zijn vastgoed
Een dashboard is een 2D-oppervlak met eindig oppervlak. Elke pixel toegewezen aan één signaal is een pixel die niet aan een ander signaal wordt toegewezen. Dashboardontwerp is een meetkundeprobleem: rangschik de meest beslissingsgerelateerde informatie in het kleinste visuele gebied terwijl je ruimtelijke relaties bewaart die herkenning helpen.
Leeziggingpatronen: westerse lezers scannen F-vormig (top-links eerst, dan dwars, dan omlaag). De belangrijkste signaal hoort in de top-links. De onderkant-rechts krijgt de minste aandacht.
Gestalt-groepering: signalen van dezelfde dienst behoren in dezelfde visuele groep. Latentie, verkeer, fouten, & verzadiging voor één dienst behoren in een 2x2-grid, niet verspreid over het scherm. Visuele nabijheid codeert logische relatie.
Kleurcodering: rood voor fouten, geel voor verzadiging, groen voor gezonde bereiken. Kleurkeuzes zijn conventies, niet willekeurig. Ze omkeren kost cognitieve belasting bij elke blik tijdens incidenten.
Y-as schaling: een grafiek geschaald 0-100% ziet er kalm uit zelfs tijdens een verdubbeling van verkeer. Een grafiek automatisch geschaald naar recente waarden ziet er alarmerend uit tijdens normale variatie. Beide keuzes hebben passende uses; de keuze is geometrisch, niet cosmetisch.
Informatiedichtheid: te weinig signalen laten het team blind voor wat mis is. Te veel begraven het signaal in ruis. Edward Tufte's data-ink-ratio is van toepassing: maximaliseer de verhouding van inkt die informatie overbrengt tot inkt die versiering is. Sparkline-stijl minimalisme wint op een blik tegen rommelige widgets.
Ontwerpen voor eerste blik
Je team ontwerpt één primair dashboard voor een dienst met 8 kritieke SLI's over 4 backend-afhankelijkheden. Het dashboard moet de eerste vraag van de on-call-ingenieur beantwoorden om 3 uur 's nachts in minder dan 5 seconden: 'brandt iets, & zo ja, waar?'
Meetkunde van SRE: Afronding
Vormen die productie besturen
Je hebt vier geometrische structuren doorlopen die onder SRE-praktijk liggen:
- Latentiedistributies als lange-staartcurven waar percentielwaarden meer waarheid dragen dan gemiddelden
- Foutbudget-kegels waar de helling van uitputting servicegezondheid beter openbaart dan het resterend getal
- Afhankelijkheidsgraphen van diensten waar explosiestraal en zentraliteit betrouwbaarheidsinvestering sturen
- Dashboardlay-outs als 2D-vastgoed waar pixeltoewijzing een meetkundeprobleem is met operationele gevolgen
Geometrisch denken is wat SRE onderscheidt van generiek bedrijfswerk. Een bedrijfsmedewerker leest getallen. Een SRE leest vormen. De vormen coderen informatie die geen enkel getal kan vastleggen: de helling van een brandsnelheid, de dikheid van een staart, de zentraliteit van een knooppunt, de Gestalt van een dashboardpanel.
De begeleiding les over SRE zelf behandelde de praktijken. Deze les behandelde de meetkunde eronder. Samen vormen ze het visuele & conceptuele ondersteuningswerk van moderne betrouwbaarheidstechnieken.