SLI (Service Level Indicator)

SLI (Service Level Indicator) - это реальность, конкретные числовые значения, полученные в результате измерений тех же показателей, которые мы обещали в SLO (например, процент 5xx-ошибок или latency p99). Если SLI (реальные измерения) выходит за рамки SLO (границы, которые мы себе наметили) - пора бить тревогу и разбираться.

Общая формула: SLI = количество хороших событий / количество валидных событий * 100%

Какие бывают SLI

Time based SLI

Этот индикатор основывается на временнЫх характеристиках работы сервиса: насколько быстро сервис обрабатывает запросы; насколько быстро выполняет задачи; сколько времени занимает выполнение операции и т.п. Помогает понимать производительность, обнаруживать проблемы (например, резкий рост задержки. Time-based SLI это "пульс" сервиса. Он показывает, насколько система отзывчива, и помогает принимать решения на основе данных, а не догадок.

Примеры time-based SLI:

  • Latency;
  • Время загрузки страницы;
  • Время обработки транзакции;
  • и т.п.

Events based SLI

Этот индикатор основывается на количественных характеристиках сервиса: количество или качество ("хорошие" / "плохие") событий ("Событие" - это любое действие или операция) в системе - "что" происходит, а не "как быстро" происходит (в отличие от time based SLI). Помогает понять, насколько успешно сервис выполняет свои основные функции с точки зрения пользователей, выловить паттерны сбоев. Events based SLI превращают абстрактные "проблемы" в конкретные цифры. Они помогают понять, какие части системы чаще всего подводят пользователей, и направить ресурсы на их исправление.

Примеры events-based SLI:

  • % успешных запросов;
  • % успешных загрузок файлов;
  • и т.п.

Типы events based SLI:

  • Success Rate (успешность) - доля событий, завершившихся без ошибок. Пример: 99,9% HTTP-запросов возвращают статус 20x
  • Error Rate (частота ошибок) - доля событий, завершившихся с ошибкой. Пример: ≤ 0,1% запросов к API возвращают HTTP-статус 50х
  • Throughput (пропускная способность) - количество событий за единицу времени. Пример: 10000 транзакций/час (SLO: ≥ 8000 транзакций/час).

ВременнОе окно

SLO и SLI можно подсчитывать за разные периоды. Можно использовать календарное окно ("январь") или плавающее окно ("две недели").

Плюс календарного окна: легче планировать задачи и управлять временем - "за этот месяц я достиг SLO, все хорошо", или "SLO не достиг, нужно переделать архитектуру/переписать фичу/исправить вон ту багу".

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

Короткие периоды хороши для быстрого понимания ситуации. Если не достигнут SLO за прошлую неделю, останавливаешь выкатку новых фич на прод (новая фича = падению прода :)) и приоритизируешь исправление багов на следующую и исправляешь ситуацию.

Более долгие периоды хороши для стратегического планирования. Если у тебя три крупных проекта, оценка показателей за квартал/полгода позволят правильно расставить приоритеты.

Google рекомендует начинать с четырехнедельного плавающего окна.

Как замеряют SLI

Есть несколько способов. Есть правило - чем ближе к пользователю, тем лучше. Нужно понимать, что измерение из внутренней сети облачного провайдера и измерение из офиса реального пользователя дадут разный результат!!!