SLO — это количественные цели для надежности сервиса, выраженные в процентах за определенный промежуток времени. Они основываются на метриках SLA (Service Level Agreement), но представляют собой внутренние цели, к которым команда разработки стремится в первую очередь для улучшения качества сервиса, а не для юридических обязательств перед пользователем.
Примеры SLO:
- Доступность (Availability): 99.9% успешных запросов HTTP за последние 30 дней.
- Латентность (Latency): 95% запросов HTTP должны выполняться менее чем за 100 мс за последние 5 минут.
- Пропускная способность (Throughput): Не менее 1000 обработанных сообщений в секунду за последний час.
Ключевые компоненты SLO:
- Metrics: Измеряемые показатели (например, время ответа, процент ошибок).
- Target: Целевое значение для метрики (например, < 100 мс, 99.9%).
- Time Window: Период, за который достигается цель (например, за 30 дней, за 5 минут).
SLO помогает:
- Установить четкие ожидания по надежности сервиса.
- Сфокусировать усилия команды на наиболее критичных аспектах работы сервиса.
- Определять, когда следует инвестировать в надежность, а не в новые функции (и наоборот), используя концепцию "бюджета ошибок" (Error Budget). Budget — это разница между 100% и SLO. Например, для SLO 99.9% бюджет ошибок составляет 0.1%. Если сервис превышает этот бюджет, команда должна приостановить разработку новых фич и сфокусироваться на повышении надежности.
В отличие от SLA, нарушение SLO не обязательно приводит к юридическим последствиям, но служит сигналом для улучшения сервиса и пересмотра приоритетов.