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.




