Konrad Kowalski (rootsher)Principal Platform & Reliability Architect001010100000100100111010010000111100101001010001

Po recovery: zielone wykresy to nie koniec

data
kategoria
Reliability Engineering
także w
Incident Management
czytanie
2 min / 447 słów

Najłatwiej zakończyć incydent za wcześnie.

Wykresy wróciły do zielonego.

Aplikacja odpowiada.

Ruch idzie do właściwej bazy.

Ktoś pisze na kanale, że "już działa".

To ważny moment.

Ale to nie jest koniec pracy.

To jest koniec najostrzejszej fazy.

Najpierw potwierdzić stan

Po recovery trzeba sprawdzić, czy system naprawdę wrócił do działania.

Nie tylko czy endpoint odpowiada 200.

Trzeba sprawdzić ścieżki, które były dotknięte awarią.

text
zapisy
odczyty
workery
kolejki
cron jobs
integracje
cache
raporty
alerty

Jeżeli przełączaliśmy bazę, trzeba potwierdzić, że wszystkie klienty używają nowego endpointu.

Jeżeli zatrzymaliśmy workery, trzeba je świadomie włączyć.

Jeżeli zamroziliśmy zapisy, trzeba wiedzieć, kiedy zostały odmrożone.

Jeżeli porzuciliśmy dane po target time, trzeba zapisać, co dokładnie zostało utracone.

Bez tego zespół ma tylko poczucie ulgi.

Nie ma potwierdzonego stanu systemu.

Odtworzyć timeline

Postmortem zaczyna się od osi czasu.

Nie od winnego.

Nie od jednej wielkiej przyczyny.

Najpierw trzeba zbudować chronologię.

text
kiedy zaczęła się awaria
kiedy system ją wykrył
kiedy człowiek ją zobaczył
kiedy podjęto decyzję
kiedy zatrzymano pogłębianie szkody
kiedy rozpoczęto recovery
kiedy przywrócono działanie
kiedy potwierdzono poprawny stan

Timeline ujawnia prawdę o RTO.

Jeżeli samo odtworzenie trwało 25 minut, ale decyzja zajęła godzinę, procedura nie mieści się w 25 minutach.

Jeżeli alert pojawił się po 40 minutach, recovery techniczne mogło być dobre, ale detekcja była słaba.

Jeżeli zespół czekał na dostęp do sekretów, problemem jest operacyjna gotowość, nie baza danych.

Sprawdzić RPO

Po recovery trzeba policzyć realną utratę danych.

text
jaki był target time
kiedy zatrzymano zapisy
jakie dane powstały między tymi momentami
co udało się odzyskać
co trzeba odtworzyć ręcznie
co uznajemy za utracone

To powinno trafić do notatki z incydentu.

Nie po to, żeby dramatyzować.

Po to, żeby sprawdzić, czy deklarowane RPO było prawdziwe.

Jeżeli organizacja mówiła o RPO 15 minut, a realnie straciła dwie godziny danych, to nie jest drobna różnica.

To informacja o architekturze, backupach, detekcji albo decyzjach.

Poprawić runbook

Runbook po incydencie zwykle wygląda inaczej niż przed incydentem.

To normalne.

Podczas recovery wychodzą rzeczy, których nie dało się zobaczyć w dokumencie.

text
brakowało komendy
link prowadził do starego panelu
uprawnienia miała tylko jedna osoba
walidacja była nieprecyzyjna
nie było listy workerów
nie było decyzji, kto przełącza ruch
nie było planu dla danych po target time

Te poprawki trzeba zrobić szybko.

Nie za miesiąc.

Pamięć operacyjna paruje bardzo szybko po incydencie.

Najlepszy moment na poprawienie runbooka jest wtedy, kiedy zespół nadal pamięta, gdzie bolało.

Dodać test odtworzeniowy

Backup, którego nikt nie odtworzył, jest hipotezą.

Po incydencie warto dopisać najprostszy test:

text
weź ostatni backup
odtwórz do wskazanego momentu
uruchom aplikację testowo
sprawdź kilka krytycznych zapytań
zmierz czas
zapisz wynik

To nie musi być od razu pełny drill disaster recovery.

Lepszy mały, powtarzalny test niż wielki dokument, którego nikt nie uruchamia.

Z czasem można dodać więcej:

text
test sekwencji
test integralności
test logowania
test zapisu zamówienia
test workerów
test przełączenia endpointu

Recovery jest umiejętnością.

Umiejętności nie powstają od samego posiadania instrukcji.

Postmortem bez teatru

Dobry postmortem powinien odpowiedzieć na kilka pytań.

text
co się stało
jaki był wpływ
jak to wykryliśmy
co zrobiliśmy
co zadziałało
co nie zadziałało
co zmieniamy
kto jest właścicielem zmian
do kiedy

Nie chodzi o to, żeby znaleźć osobę, która kliknęła zły przycisk.

Chodzi o to, żeby system był mniej zależny od idealnych ludzi.

Jeżeli jedna komenda mogła usunąć produkcyjne dane bez blokady, problemem nie jest tylko osoba.

Problemem jest brak guardrail.

Jeżeli decyzja o PITR trwała godzinę, problemem nie jest tylko stres.

Problemem jest brak wcześniejszych progów decyzyjnych.

Koniec serii, początek praktyki

Proste recovery składa się z kilku nudnych elementów:

text
znane pojęcia
kompatybilne migracje
backup, który da się odtworzyć
WAL albo binlog
lista klientów bazy
plan przepięcia ruchu
runbook
test odtworzeniowy
postmortem

Żaden z tych elementów nie jest spektakularny.

Razem robią różnicę między improwizacją a kontrolowanym powrotem do działania.

To jest cała magia.

Czyli żadna.