Czytanie Długiego Ogona
Opóźnienie Żyje na Krzywej, Nie na Liczbie
Średnie opóźnienie ukrywa to, co doświadczają użytkownicy. Rzeczywiste usługi produkują rozkład: krzywą pokazującą, ile żądań zajęło ile czasu.
Trzy punkty na tej krzywej niosą większość operacyjnego znaczenia:
- p50 (mediana): środek rozkładu. Połowa żądań kończy się szybciej, połowa wolniej. Opisuje typowe doświadczenie.
- p99: 99. percentyl. Tylko 1% żądań zajęło więcej czasu. Opisuje najgorsze doświadczenie dla typowych użytkowników.
- p99.9: tylko 0,1% żądań zajęło więcej czasu. Opisuje najgorsze doświadczenie dla zaawansowanych użytkowników, którzy często używają usługi.
Wgląd geometryczny: rozkłady opóźnień prawie zawsze mają długo rozciągający się prawy ogon. Krzywa gwałtownie rośnie do szczytu wokół mediany, a następnie powoli spada w prawo, często z małą wypukłością daleko od średniej. Ta wypukłość reprezentuje najwolniejszych użytkowników: tych, którzy piszą rozjuszczone wiadomości.
Dlaczego średnie wprowadzają w błąd: usługa z medianą 50 ms i p99 5000 ms ma lukę 100x między typowym a doświadczeniem ogona. Średnia arytmetyczna może wynosić około 100 ms, całkowicie ukrywając katastrofę. Średnia arytmetyczna jest pojedynczą projekcją punktową kształtu 2D: prawie wszystkie informacje o kształcie znikają.
Problem mnożenia percentyli: żądanie, które dotyka 10 usług backendowych, każdy z p99 100 ms, ma p99 około 600 ms (nie 100 ms). Wolne ogony się mnożą. Dlatego właśnie książka SRE ostrzega: 'uważaj na najwolniejszego z N'. Gdy N rośnie, opóźnienie ogona szybko się pogarsza.
Matematyka Opóźnienia Ogona
Usługa A ma przepływ żądań, który rozpowszechnia się na 5 usług backendowych równolegle i czeka na wszystkie odpowiedzi. Każdy backend ma opóźnienie p99 100 ms.
Wyczerpywanie Budżetu jako Nachylenie
Wykreślanie Budżetu w Czasie
Budżet błędów wykreślony na osiach 2D (czas na x, pozostały budżet na y) ujawnia kondycję usługi na pierwszy rzut oka. Kształt krzywej wyczerpywania niesie te same informacje, które dziesięć pulpitów mogłoby przekazać indywidualnie.
Trzy kształty odniesienia:
- Zdrowe liniowe wyczerpywanie: budżet spada w linii prostej proporcjonalnej do upływającego czasu. Do dnia 14 w 28-dniowym oknie powinna pozostać połowa budżetu. To jest widoczny cel SLO.
- Szybkie spalanie: strome nachylenie w dół. Wskazuje na aktywny problem niezawodności. Jeśli nachylenie jest wystarczająco strome, budżet wyczerpuje się zanim okno się zresetuje, uruchamiając politykę budżetu błędów.
- Wygojona krzywa: segment płaski lub rosnący. Usługa osiąga lepsze wyniki niż jej SLO. Pozostały budżet rośnie w czasie, otwierając miejsce na ryzykowne uruchomienia.
Szybkość spalania to znormalizowane nachylenie linii wyczerpywania: szybkość spalania 1 oznacza spalanie budżetu dokładnie tak szybko, jak upływa czas (doskonale wyrównany z SLO). Szybkość spalania 10 oznacza spalanie 10x szybciej niż dozwolone: cały miesięczny budżet wyczerpałby się w 2,8 dnia w tym tempie.
Alertowanie z wieloma oknami i wieloma szybkościami spalania: podręcznik SRE Google rekomenduje alertowanie na połączonych warunkach takich jak 'szybkość spalania powyżej 14,4 w ciągu ostatniej godziny I powyżej 14,4 w ciągu ostatnich 5 minut'. Geometria: utrzymane strome nachylenie, a nie tylko krótki skok. Ten kształt filtruje przejściowe anomalie, jednocześnie wychwytując prawdziwe zagrożenia wyczerpywaniem się.
Odczytywanie Szybkości Spalania
SLO Twojego zespołu to 99,9% przez 28 dni. W dniu 7 już wykorzystałeś 60% budżetu błędów. Obecna szybkość spalania w ciągu ostatnich 24 godzin wynosi 8.
Usługi jako Graf Skierowany
Produkcja jako DAG
Nowoczesne usługi działają jako graf zależności. Każda usługa to węzeł. Każde wywołanie z usługi A do usługi B to skierowana krawędź od A do B. Pełny obraz tworzy skierowany graf (czasami DAG, czasami z cyklami poprzez asynchroniczne ponowne próby).
Krytyczne właściwości geometryczne:
- Stopień wyjściowy: ile usług zależy węzeł. Wyższy stopień wyjściowy oznacza więcej trybów awarii upstream. Usługa, która zależy od 12 backendów, kończy się niepowodzeniem, jeśli którykolwiek z tych 12 zawiedzie.
- Stopień wejściowy (fan-in): ile usług zależy od tego węzła. Wyższy stopień wejściowy oznacza, że jedna awaria tutaj rozprzestrzenia się szeroko. Baza danych z 30 usługami zależnymi ma największy promień wybuchu.
- Centralność pośrednicząca: ile najkrótszych ścieżek przechodzi przez węzeł. Węzły o wysokiej centralności pośredniczącej to wąskie gardła. Usługi uwierzytelniania i podstawowe API zazwyczaj uzyskują wysokie wyniki.
- Silnie połączone komponenty: grupy usług, które tworzą cykle. Jeśli A wywołuje B, a B wywołuje A, masz cykl. Cykle komplikują odzyskiwanie awaryjne: uruchomienie którekolwiek usługi wymaga, aby druga już działała.
Promień wybuchu to pojęcie geometryczne, które napędza inwestycje w niezawodność. Promień wybuchu awarii to podgraf usług zależnych, na które wpływa. Inżynieria niezawodności inwestuje dużo w węzły z największym promieniem wybuchu. Najtańszym sposobem na poprawę ogólnej niezawodności systemu jest często dodanie redundancji lub wdzięcznej degradacji w węzłach o największej centralności pośredniczącej.
Rozumowanie Promienia Wybuchu
Usługa konsumencka zależy od: AuthService, UserDB, ProductCatalog, PaymentGateway, RecommendationEngine, EmailService, AnalyticsService. AuthService ma 47 innych usług zależnych od niego. EmailService ma 3 inne usługi zależne od niego. RecommendationEngine ma 2 inne usługi zależne od niego.
Geometria Informacji Pulpitu
Piksele to Nieruchomości
Pulpit to powierzchnia 2D o skończonej powierzchni. Każdy piksel przydzielony jednemu sygnałowi to piksel nie przydzielony innemu. Projektowanie pulpitu to problem geometrii: ułóż najbardziej istotne dla decyzji informacje w najmniejszym obszarze wizualnym, zachowując relacje przestrzenne, które pomagają w rozpoznaniu.
Wzory czytania: czytelnicy zachodni skanują w kształcie F (od lewego górnego rogu najpierw, potem w poprzek, potem w dół). Najważniejszy sygnał należy do lewego górnego rogu. Prawy dolny róg otrzymuje najmniej uwagi.
Grupowanie Gestalt: sygnały z tej samej usługi należą do tej samej grupy wizualnej. Opóźnienie, ruch, błędy i nasycenie dla jednej usługi należą do siatki 2x2, a nie rozproszone po całym ekranie. Bliskość wizualna koduje logiczną relację.
Kodowanie kolorami: czerwień na błędy, żółty na nasycenie, zielony na zakresy zdrowotne. Wybory kolorów to konwencje, nie losowe. Odwrócenie ich kosztuje obciążenie poznawcze na każdy rzut oka podczas incydentów.
Skalowanie osi Y: wykres skalowany 0-100% wygląda spokojnie nawet podczas podwojenia ruchu. Wykres automatycznie skalowany do ostatnich wartości wygląda alarmująco podczas normalnej zmienności. Obie opcje mają odpowiednie zastosowania; wybór jest geometryczny, nie kosmetyczny.
Gęstość informacji: zbyt mało sygnałów pozostawia zespół ślepy na to, co jest nie tak. Zbyt wiele grzęźnie sygnałem w hałasie. Zastosowanie stosunku danych do atramentu Edwarda Tufte'a: maksymalizuj stosunek atramentu, który przekazuje informacje, do atramentu, który dekoruje. Minimalizmem w stylu sparkline bije zaśmiecone widżety na pierwszy rzut oka.
Projektowanie na Pierwszy Rzut Oka
Twój zespół projektuje jeden główny pulpit dla usługi, która ma 8 krytycznych wskaźników SLI na 4 zależnościach backendowych. Pulpit musi odpowiedzieć na pierwsze pytanie inżyniera na dyżurze o 3 rano w mniej niż 5 sekund: 'czy coś się pali, & jeśli tak, gdzie?'
Geometria SRE: Podsumowanie
Kształty, które Kierują Produkcją
Przeszedłeś przez cztery struktury geometryczne, które działają pod praktyką SRE:
- Rozkłady opóźnień jako krzywe z długim ogonem, gdzie percentyly noszą więcej prawdy niż średnie
- Stożki budżetu błędów, gdzie nachylenie wyczerpywania ujawnia kondycję usługi lepiej niż pozostały numer
- Grafy zależności usług, gdzie promień wybuchu i centralność kierują inwestycją w niezawodność
- Układy pulpitów jako nieruchomości 2D, gdzie przydział pikseli to problem geometrii o konsekwencjach operacyjnych
Myślenie geometryczne to to, co oddziela SRE od ogólnej pracy operacyjnej. Inżynier operacyjny czyta liczby. SRE czyta kształty. Kształty kodują informacje, które żadna pojedyncza liczba nie może uchwycić: nachylenie szybkości spalania, grubość ogona, centralność węzła, gestalt panelu pulpitu.
Towarzysząca lekcja samej SRE obejmowała praktyki. Ta lekcja obejmowała geometrię pod nimi. Razem tworzą wizualny i koncepcyjny rusztowanie nowoczesnej inżynierii niezawodności.