SRE w pigułce – SLI, SLO i budżet błędów dla zespołów developerskich

SRE w pigułce – SLI, SLO i budżet błędów dla zespołów developerskich

 

Site Reliability Engineering (SRE) to dyscyplina, która łączy inżynierię oprogramowania z zadaniami operacyjnymi, aby tworzyć skalowalne i niezawodne systemy. Zamiast tradycyjnego podziału na zespoły „developerskie” i „operacyjne”, SRE wprowadza inżynierów z umiejętnościami deweloperskimi do rozwiązywania problemów infrastruktury. Kluczowe dla SRE jest podejście oparte na danych, co prowadzi do trzech fundamentalnych koncepcji: SLI, SLO i budżetu błędów. Zrozumienie ich jest niezbędne dla każdego zespołu deweloperskiego, który chce budować niezawodne usługi.

SLI: Wskaźniki poziomu usług

Service Level Indicator (SLI) to metryka, która mierzy poziom usługi świadczonej przez system. Mówiąc prościej, SLI to ilościowa miara, która pozwala odpowiedzieć na pytanie: „Czy nasza usługa działa poprawnie z perspektywy użytkownika?”. Dobrze zdefiniowane SLI są:

  • Mierzalne: Można je łatwo zmierzyć i zebrać.
  • Proste: Łatwe do zrozumienia dla całego zespołu.
  • Znaczące: Odzwierciedlają to, co jest ważne dla użytkownika końcowego.

Przykładowe SLI:

  • Dostępność (Availability): Proporcja udanych żądań do całkowitej liczby żądań. Na przykład, 99.9% udanych żądań HTTP w ciągu miesiąca.
  • Opóźnienie (Latency): Czas, jaki upływa między żądaniem a odpowiedzią. Często mierzony jako percentyl, np. 99% żądań jest przetwarzanych w czasie poniżej 100 ms.
  • Wydajność (Throughput): Liczba żądań przetwarzanych na sekundę.

SLI są surowymi danymi i są podstawą do definiowania celów i granic.

SLO: Cele poziomu usług

Service Level Objective (SLO) to cel, który określa, jaki poziom SLI chcemy osiągnąć w danym okresie. SLO to cel, do którego dążymy, a jego ustalenie to kluczowy moment, ponieważ równoważy on niezawodność z szybkością dostarczania nowych funkcji. Zbyt wysokie SLO może spowolnić rozwój (wymagać będzie dodatkowych testów i konserwacji), a zbyt niskie może prowadzić do niezadowolenia użytkowników.

SLO jest zawsze zdefiniowane jako cel na podstawie SLI, np.:

  • SLO dostępności: Nasza usługa będzie dostępna w 99.9% przypadków w ciągu 30 dni.
  • SLO opóźnienia: 99% żądań do API będzie przetwarzane w czasie poniżej 150 ms w ciągu 30 dni.

SLO definiuje to, co zespół i firma uważają za akceptowalny poziom niezawodności. To umowa wewnętrzna, która kieruje decyzjami inżynierskimi. Co ważne, SLO nie jest tożsame z SLA (Service Level Agreement), które jest umową prawną z klientem, zazwyczaj o znacznie szerszym zakresie i konsekwencjach finansowych.

Budżet błędów: Pieniądze na innowacje

Budżet błędów (Error Budget) to najbardziej rewolucyjna koncepcja SRE. Jest to ilość dopuszczalnego czasu, w którym usługa może być niezgodna z SLO. Jeśli nasze SLO to 99.9% dostępności w miesiącu, to budżet błędów wynosi 0.1% czasu w tym miesiącu. Ten 0.1% to cenny zasób, który można wydać.

Budżet błędów = 100% – SLO

  • Dla SLO 99.9% dostępności w 30 dni, budżet błędów wynosi około 43.2 minuty.
  • Dla SLO 99.99% dostępności, budżet spada do około 4.3 minuty.

Główna idea budżetu błędów jest prosta: dopóki nie przekroczymy budżetu, możemy swobodnie eksperymentować, wdrażać nowe funkcje i podejmować ryzyko. Jeśli jednak budżet błędów jest bliski wyczerpania, priorytetem staje się zwiększenie stabilności systemu i wstrzymanie nowych wdrożeń, aż do momentu, gdy budżet się odnowi.

Jak to wpływa na zespoły deweloperskie?

  • Decyzje oparte na danych: Zespoły deweloperskie mają jasne kryteria, które pomagają w podejmowaniu decyzji o priorytetach. Zamiast sporu „szybciej vs. stabilniej”, mają obiektywną miarę.
  • Wstrzymanie wdrożeń: Jeśli przekroczono budżet błędów, to jest to jasny sygnał, że należy wstrzymać wdrażanie nowych funkcji i skupić się na usunięciu problemów, które doprowadziły do awarii. To zachęca zespoły do brania odpowiedzialności za jakość swojego kodu.
  • Zdrowa relacja: Budżet błędów tworzy zdrową relację między deweloperami a zespołem SRE. SRE nie jest „stróżem”, który blokuje wdrożenia, ale partnerem, który dostarcza danych, a decyzje podejmowane są wspólnie, w oparciu o ustalone cele.

SRE to więcej niż zestaw narzędzi – to filozofia pracy. SLI, SLO i budżet błędów to jej rdzeń. SLI to metryki, które mierzą, jak dobrze działa usługa, SLO to cele, do których dążymy, a budżet błędów to ilość „niedoskonałości”, na które możemy sobie pozwolić. To połączenie pozwala na zbalansowanie innowacji z niezawodnością. Zrozumienie i wdrożenie tych koncepcji w codziennej pracy zespołu deweloperskiego to klucz do tworzenia solidnych, skalowalnych i niezawodnych systemów, które zadowolą użytkowników i pozwolą na ciągły rozwój.

Face 4
Mirek Drzewiecki

Jestem programistą z wieloletnim doświadczeniem w branży IT. Od zawsze fascynują mnie nowe technologie, a moją misją jest dzielenie się wiedzą i pomaganie innym developerom w rozwoju. Na co dzień tworzę poradniki, analizuję trendy i testuję narzędzia, które ułatwiają pracę programistom. Uważam, że ciągłe doskonalenie umiejętności oraz wymiana doświadczeń to klucz do sukcesu w świecie technologii.