Короткий ответ
Error budget — это допустимое количество "ненадёжности" (ошибок, простоя) за период, равное 100% минус целевой SLO; например, при SLO 99.9% error budget составляет 0.1% времени или запросов, которые можно "потратить" на риски и изменения.
Как это работает подробнее
SLO (Service Level Objective) задаёт целевой уровень надёжности для конкретной метрики (например, доли успешных запросов), а error budget — это оставшийся "запас" до нарушения SLO, который можно тратить на рискованные релизы, эксперименты, техдолг.
Пример / кейс
Для API с SLO 99.9% успешных запросов за 30 дней при 10 млн запросов в месяц error budget = 10 000 неуспешных запросов.
Ожидаемое поведение: если за 10 дней месяца уже "потрачено" 8000 из 10000 допустимых ошибок (например, из-за деградации одного из апстримов), команда должна снизить частоту рискованных деплоев до конца периода, чтобы не нарушить SLO.
Что использовать на практике
- Практический подход. Когда error budget израсходован, команда обычно замораживает рискованные релизы и фокусируется на стабильности, пока бюджет не восстановится в следующем периоде; если бюджет не тратится вообще, это сигнал, что SLO выставлен слишком мягко или команда слишком консервативна.
Подводные камни
- Частые ошибки. Путать error budget с SLA (SLA — это внешнее договорное обязательство, часто с юридическими последствиями); воспринимать error budget как "разрешение" игнорировать мелкие инциденты вместо инструмента принятия решений о темпе релизов.