Цели уровня обслуживания

Что это такое

Показатель уровня обслуживания — это измерение того, что важно пользователям. Цель уровня обслуживания — ориентир для этого измерения за период. У ориентира должны быть число, окно и область: доля запросов, которые завершаются успешно, за тридцать дней, для названного сервиса. Цель — это бизнес-утверждение, выраженное измеримо, а не описание внутреннего здоровья системы.

Почему это важно

Ориентир — это то, как надёжность становится решением, а не мнением. Без него вызов в три часа ночи оправдывается тем, кто поставил оповещение, а вопрос «выпускать функцию или чинить базу данных» превращается в состязание характеров. С ним ответ — арифметика, и спор переходит к куда более продуктивному вопросу: правильный ли это ориентир. Назвать ориентир — значит ещё и заставить команду решить, что на самом деле чувствуют пользователи, а это часто не то, что измеряют внутренние панели.

Ключевые идеи

Измеряйте то, что чувствует пользователь, а не то, что сообщает система

Показатель должен быть долей успеха, задержкой или доступностью в том виде, как их воспринял бы пользователь, измеренными в самой близкой к пользователю точке, какая практична. Сервис, который быстро отвечает, но возвращает ошибки, имеет хорошее здоровье системы и плохой результат для пользователя. Сервис, который работает, но невыносимо медленный, подводит пользователя так же полно.

показатель: доля запросов, обслуженных успешно за 300 мс
цель:       99,9% за скользящие 30 дней
область:    сервис checkout, без внутренних проверок здоровья

Ориентир — это выбор о стоимости, а не измерение качества

Переход с 99,9 на 99,99 процента обычно стоит куда больше, чем десятикратные усилия, потому что он отнимает свободу развёртывать без репетиции и падать, а потом восстанавливаться. Ориентир должен быть тем уровнем, который пользователи замечают, и не выше, и его следует согласовывать с теми, кто зависит от сервиса, а не устанавливать в одностороннем порядке силами эксплуатации. Многие продукты вполне успешны при куда меньшем числе.

Усреднение прячет интересные случаи

Среднее по всем запросам прячет самые медленные и самых невезучих пользователей. Средние от средних по нескольким экземплярам прячут экземпляр, который отказывает. Ориентиры по задержке следует формулировать как долю в пределах порога, а не как среднее, чтобы длинный хвост шёл в счёт ориентира, а не усреднялся.

Новый сервис начинает с чужого ориентира

Выбирать ориентир для чего-то без пользователей — гадание. Практичный подход — взять ориентир платформы или соседнего сервиса, измерять фактическое поведение какое-то время, а затем установить свой, опираясь на это. Ориентир — живая договорённость, которую пересматривают по мере взросления сервиса, а не число, зафиксированное на этапе проектирования.

Цель должна измеряться по реальному сигналу

Если показатель нельзя вычислить из данных, которые уже собираются, за ним не будут следить. Здесь и связь с наблюдаемостью: цель, требующая измерения, которое никто не ведёт, — это желание. Это же довод в пользу выбора показателей, которые уже выражаются имеющимися метриками.

Меньше целей, и у каждой явный владелец

Одной-двух на видимое пользователю взаимодействие достаточно. Список из двадцати целей — это описание системы, а не набор обещаний, и никто по нему не будет действовать. У каждой цели должен быть названный владелец, отвечающий и за её достижение, и за изменение, когда меняется договорённость.

Практика

Напишите одну цель для реального сервиса

Выберите знакомый сервис и напишите его показатель, ориентир, окно и область одним предложением, затем проверьте, что метрика существует.

Готово, когда: вы можете назвать показатель, число, период и область и показать данные, которые его вычисляют.

Найдите слепое пятно показателя

Возьмите существующую цель и опишите видимый пользователю отказ, который она не поймает.

Готово, когда: вы можете назвать хотя бы один режим отказа, который цель пропускает, и решить, приемлемо ли это.

Частые ошибки

  • Измерять внутреннее здоровье вместо опыта пользователя — панель зелёная, а пользователи терпят отказы; исправить: формулируйте показатель так, как его воспринял бы пользователь.
  • Ставить ориентир односторонне и очень высоко — цена огромна, а ценность не доказана; исправить: согласуйте ориентир с потребителями и ставьте тот, что им нужен.
  • Использовать средние — самые медленные запросы и самые невезучие пользователи исчезают; исправить: измеряйте долю в пределах порога.
  • Писать много целей, у которых нет владельца — список не обещание; исправить: одна-две цели, у каждой названный владелец.
  • Выбирать показатель, за которым нет данных — цель никогда не измеряется; исправить: выбирайте метрики, которые стек наблюдаемости уже собирает.

Что читать дальше