SLA vs SLO vs SLI: разница и связь

Эти три аббревиатуры — самая частая путаница в мире SRE. Даже опытные инженеры иногда используют их как синонимы. Давайте разберёмся раз и навсегда.

SLI — факт

Service Level Indicator — это просто число с датчика. То, что мы измеряем.

  • Латентность 200 мс.
  • Доступность 99,9%.
  • Количество ошибок 0,01%.

SLI — это «сколько градусов за бортом». Только факт, без оценки.

SLO — цель

Service Level Objective — это порог, который отделяет «хорошо» от «плохо». Это наша цель, наш стандарт качества.

  • «99,9% запросов должны выполняться быстрее 200 мс».
  • «Мы держим доступность на уровне 99,95%».

SLO — это «не ниже 22 градусов в квартире, иначе включаем отопление». Вы решили, что 22 — это норма, и теперь измеряете, выполняете ли её.

SLA — контракт

Service Level Agreement — это юридическое или коммерческое обещание с последствиями.

  • «Если доступность упадёт ниже 99,5%, мы вернём деньги».
  • «Время ответа поддержки — не более 4 часов. За нарушение — штраф».

SLA — это не про инженерию. Это про контракт с клиентом. Внутри SLA может быть прописано «SLO должен быть не меньше X», и если мы его нарушили — платим.

Таблица для запоминания

Понятие Суть Вопрос
SLI Что меряем «Сколько сейчас?»
SLO Какой цели хотим «Что считаем нормой?»
SLA Что обещали клиенту «За что платим штраф?»

Почему их путают?

Потому что часто SLO и SLA совпадают по числу. Компания может обещать клиенту 99,9% и внутри ставить себе цель 99,9%. Но это не одно и то же:

  • SLO — ваша инженерная цель. Вы можете её менять, ужесточать, ослаблять — это ваш внутренний процесс.
  • SLA — юридическое обязательство. Если вы нарушили SLA, вы платите деньги или теряете клиента.

SLO всегда должно быть строже, чем SLA. Если SLA = 99,9%, то ваше SLO должно быть 99,95% или 99,99%. Иначе вы будете нарушать SLA ещё до того, как заметите проблему (см. главу «Что делать при нарушении SLO?»).

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

SLO — это ваш запас прочности. Если SLO равно SLA, то любое случайное превышение SLO автоматически означает нарушение SLA. А нарушение SLA это уже не совсем инженерная проблема, а скорее всего, юридическая: штрафы, компенсации, потеря клиентов. SLO должно быть строже SLA ровно настолько, чтобы у вас было время заметить проблему и отреагировать до того, как начнутся санкции.

Аналогия с доставкой пиццы

Мы уже касались этой темы в главе «Ключевые метрики надёжности». Давайте разовьём аналогию:

  • SLI: текущее время доставки. «Сейчас среднее время = 34 минуты».
  • SLO: цель, которую вы поставили себе. «95% заказов должны доезжать за 40 минут».
  • SLA: гарантия клиенту. «Если пицца едет дольше часа — мы вернём деньги».

Вы можете измерить SLI (34 минуты). Сравнить с SLO (укладываемся — 92%, не укладываемся — надо чинить процесс). И понять, не нарушите ли вы SLA (если время упадёт до 61 минуты — поползли штрафы).

Как это связано с Error Budget?

Error Budget (бюджет ошибок) считается от SLO: 100% - SLO. SLA в этом не участвует:

  • SLO = 99,9% → Error Budget = 0,1% (~43 минуты в месяц).
  • SLA = 99,5% → это внешняя граница, за которой начинаются штрафы.

Пока вы держитесь в рамках Error Budget, SLA в безопасности. Error Budget — ваш буфер между инженерной целью и коммерческим обязательством.

Что делать с этим знанием?

На практике важно помнить три вещи:

  1. SLI измеряют инженеры — исходя из того, что можно измерить и что реально отражает качество сервиса. Подробнее — в главе «SLI: что измеряем?».
  2. SLO согласовывают инженеры с продуктом — это компромисс между скоростью фич и стабильностью. Подробнее — в главе «SLO: какой уровень надёжности хотим?».
  3. SLA — зона ответственности SRE в той же мере, что и юристов. SRE должны активно участвовать в формировании SLA, чтобы не допустить невыполнимых обещаний. Продажник может пообещать 99,99%, но если ваша архитектура тянет только на 99,9% — это проблемы на пустом месте. Ваша задача — объяснить цену каждой девятки и настоять на реалистичных цифрах.

Если вы SRE, ваше основное дело — SLI и SLO. Но закрывать глаза на SLA нельзя: плохой SLA это риск для бизнеса, который в конечном счёте ударит и по команде.