Перейти к содержанию

D-10 · Цели уровня обслуживания и их измерение#

  • Версия: 1.2 · 2026-09-22 · по мастер-шаблону v6.0
  • Известно также как: SLO, SLI, бюджет ошибок, «сколько девяток», что обещаем пользователю и чем это проверяем
  • Этап: W0 · Рамки и требования · измеритель строится на W9, его цена считается на W10
  • Стадия: гринфилд · работающая — на гринфилде измерителя ещё нет, и решение раздваивается: сначала измеритель, потом обещание
  • Профиль: дорого изменить · высокое влияние → полная форма
  • Не решает: как устроена наблюдаемость — три сигнала, их связь и их стоимость: это OPS-07 и OPS-08; что показывать пользователю, когда обещание нарушено, — D-06; обещание о неизменности интерфейса, выраженное сроком, — D-11; во что обходится отдельный контур хранения, которого требует пятый дисквалификатор, — D-01
  • Не путать с: D-06 — там решают, что делать при отказе, здесь — что мы вообще обещали и как узнаем, что обещание нарушено
  • Карточки: OPS-09 SLI, SLO и бюджет ошибок · DATA-16 целостность и сверка данных · OPS-07 observability · OPS-08 стоимость observability · PERF-02 перцентили и хвост · REL-05 health checks · REL-12 серый отказ

Документ вобрал в себя два кандидата очереди, и это результат правила, введённого в мастер-шаблон v5.0. «Состав телеметрии» стоял в очереди отдельным документом — и не устоял: OPS-07 и OPS-08 содержат все три признака карточки, делающей работу решения. Всё, что осталось от него решением, оказалось обратной стороной цели: нельзя обещать то, чего не измеряешь, и незачем измерять то, чего не обещаешь.

Предмет: что мы обещаем, чем это измеряется и сколько стоит измерение. Три части одного решения, а не три решения.

Область — один сценарий, а не система. Одна цель на всю систему означает, что её не выбирали.


1. Что выяснить#

Вопрос Где смотреть Заполняет
Какой сценарий обещаем — и с чьей точки зрения он измеряется? Продукт, основные сценарии W0 Область; дисквалификатор точки зрения
Что считается «работает»: какое событие успешно, какое нет, что не считается ни тем ни другим? Требования, коды ответов, поведение клиента Определение измерителя
Откуда цель — из того, что теряет пользователь, или из круглого числа? Продукт, деньги Дисквалификатор цены
Чем измеряется — и существует ли этот сигнал сегодня? Если нет — решение состоит из двух шагов, и раздел 3 заполняется для измерителей, а не для целей Имеющаяся телеметрия Дисквалификатор
Сколько стоит измерение и как цена растёт вместе с системой? Счёт за наблюдаемость, кардинальность Ось цены
Что происходит, когда бюджет ошибок исчерпан, и кто это решает? Договорённость с продуктом Дисквалификатор
На какой вопрос система обязана уметь ответить во время инцидента по этому сценарию? Разбор прошлых инцидентов Состав телеметрии

Четвёртый и седьмой вопросы — это и есть бывший отдельный документ#

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

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

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

Цена измерения — не накладной расход, а часть цены обещания. Расходы на наблюдаемость составляют в среднем 17 % от расходов на вычислительную инфраструктуру, медиана 10 % (Grafana Labs, опрос 2025, n = 1255; опрос проведён поставщиком средств наблюдаемости и набирался через его каналы, поэтому означает «у тех, кто этим занимается», а не «в среднем по отрасли»). Цель, требующая сигнала, которого нет, стоит столько же, сколько его постройка и содержание.

2. Оси и дисквалификаторы#

Оси сравнения. Измеримость сегодня · точка зрения измерителя · цена измерения и её рост · чувствительность цели к росту нагрузки · что следует из исчерпания бюджета · связь с деньгами или с потерей пользователя.

Дисквалификаторы.

  • Цель обещана, сигнала нет. Обещание, которое нечем проверить, не цель, а лозунг: нарушение обнаружит пользователь, а не мы. Либо сначала измеритель, либо обещание не даётся.
  • Измеряется не с точки зрения пользователя. Доступность, посчитанная по проверкам здоровья сервиса, расходится с тем, что видит потребитель: процесс исправен, отвечает на проверку и не обслуживает (Huang et al., HotOS '17). Точка зрения — свойство измерителя, а не настройка.
  • Исчерпание бюджета ошибок ни к чему не приводит. Если после исчерпания не меняется ничего — ни приоритеты, ни темп выката, — это не бюджет, а отчёт. Дисквалифицируется не цель, а способ ею пользоваться.
  • Цель выбрана без цены. Каждая девятка стоит денег: резерва, дублирования, дежурства, измерения. Цель, у которой не посчитана цена, — пожелание, и первым же сокращением бюджета она отменится.
  • Измеритель падает вместе с измеряемым. Система, считающая доступность, не должна зависеть от той, чью доступность считает (OPS-07). Иначе во время аварии не будет ни системы, ни данных о ней.

Следствие исчерпания бывает двух родов, и второй не про разработку. Третий дисквалификатор спрашивает «что изменится», но до этой версии все примеры к нему отвечали одним и тем же — темпом изменений. Это не единственный доступный ответ и не всегда доступный вообще.

Род следствия Что меняется Когда он единственный
Темп изменений — приоритеты, заморозка выката, доля работы на надёжность Что мы делаем с системой Обычный случай: выкаты в нашей власти
Режим эксплуатации и внешняя эскалация — переход в деградацию целиком, ручной режим, запрос на продление срока у того, кто его назначил Как система работает и кого мы об этом извещаем Когда темп менять нечем: выкаты запрещены извне, срок назначен не нами

Признак, что нужен второй род: обычное следствие уже в силе до всякого исчерпания. Если выкаты внутри окна и так запрещены, «остановить выкаты» — не следствие, а описание текущего положения. Дисквалификатор при этом срабатывает верно, и ловушка именно здесь: он говорит «следствия нет», но не подсказывает, где искать другое. На прогоне U-02 ответ нашёлся в режиме эксплуатации — доля подач, идущих отложенным путём, — и в эскалации наружу, вплоть до продления окна приказом.

Следствие второго рода обязано быть согласовано заранее с тем, к кому обращено. Оно затрагивает того, кем мы не распоряжаемся, и «запросим продление» — не следствие, если никто не обязался это рассматривать. Строка записи называет не только действие, но и адресата и то, что он обязался сделать; иначе третий дисквалификатор срабатывает снова, уже на втором роде.

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

Первые два отсекают обещание, третий и четвёртый — способ, пятый превращается в работу.

3. Матрица оценки#

Колонки — формы цели из раздела 4, применимые к этому сценарию.

Словарь пометок. [продукт] — ответ владельца продукта, полученный явно · [замер] · [расчёт] · [тариф] — цена измерения из счёта · [нет данных].

Пример условный. Числа выдуманы, форма настоящая.

Ось Что записывать Доля успешных запросов Окна времени По сценарию целиком
Измеримость сегодня Существует ли сигнал и что надо достроить Есть: коды ответов на периметре [замер] Есть Нет: нужна сквозная трассировка [замер]
Точка зрения Чья: сервиса, периметра, клиента Периметр — ближе к пользователю, чем сервис Периметр Клиент — единственная честная
Цена измерения Что добавится к счёту 0 — сигнал уже есть 0 +12 % к наблюдаемости [тариф]
Чувствительность к росту Что произойдёт с ценой при ×10 Не меняется Не меняется Растёт линейно, спасает сэмплирование
Следствие исчерпания Что именно меняется и кто решает Выкат новых функций останавливается [продукт] То же То же
Связь с потерей Что теряет пользователь при нарушении Запрос не прошёл — повторит Не видит разницы в пределах окна Сценарий не завершился — ушёл

Нулевой вариант — «не обещать». Он законен: сценарий, который никому не обещан, не требует ни цели, ни измерителя, ни их цены. Хуже всего — обещать, не измеряя: это нулевой вариант, которому приписали свойства первого.

4. Типовые формы цели#

Рынка здесь нет; формы не устаревают.

Форма Что измеряет Когда верна Чем оборачивается при ошибке Статус у нас
Доля успешных запросов Успешные против всех за период Операция короткая, повтор дёшев Пользователь, у которого не прошло десять подряд, для метрики неотличим от десяти разных заполняется в проекте
Окна времени Доля «хороших» минут Важна непрерывность, а не отдельный запрос Короткие частые сбои прячутся внутри хороших минут
По сценарию целиком Дошёл ли пользователь до конца Ценность в завершении, а не в отдельном вызове Дороже всех в измерении: нужна сквозная трассировка
Задержка как перцентиль с порогом Доля ответов быстрее порога Медленно = сломано Среднее вместо перцентиля прячет хвост (PERF-02)
Свежесть данных Отставание производной копии Система асинхронная, отставание допустимо Отставание измеряют на выходе, а не на входе, и не видят очередь
Корректность Доля расхождений при сверке Есть копии данных (D-07) Единственная форма, где нарушение не видно пользователю сразу
Разные цели по классам важности Своя цель на класс Классы уже введены (D-06) Классов больше трёх — их перестают различать

У формы «корректность» цена измерения не фиксирована, а выбирается — и это единственная такая форма. У остальных сигнал либо есть, либо его надо построить один раз. Здесь частота и полнота сверки — параметр решения, и точность растёт как корень из объёма выборки, то есть цена растёт квадратично к точности. Если арбитром служит не вторая копия, а внешний источник — склад, контрагент, физический мир, — цена измеряется человеко-часами и вопрос звучит как «как часто мы имеем право спрашивать арбитра» (DATA-16). На прогоне E-03 продуктовая цель отменилась именно этим расчётом: суточное измерение стоило в тринадцать раз дороже квартального.

Формы складываются, и обычно нужны две. Типовая пара — доступность плюс задержка: система, отвечающая на все запросы за десять секунд, формально доступна.

Источники раздела: Google SRE Book — Service Level Objectives · DORA — метрики поставки · OPS-09 · реестр исследования, записи P-REQ-02 и P-OPS-01

5. Эвристики#

Обещать можно только то, что уже измеряется. Если сигнала нет, решение состоит из двух шагов: сначала измеритель, потом обещание. Сделать наоборот — значит узнать о нарушении от пользователя.

Цель выводится из того, что теряет пользователь, а не из числа девяток. Вопрос не «сколько девяток принято», а «что происходит с человеком, когда не работает, и как быстро он это замечает». Из ответа число выводится само и почти никогда не бывает круглым.

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

Одна цель на систему — признак того, что её не выбирали. У чтения и у записи, у основного сценария и у отчётности разная цена отказа. Это то же правило, что для ячеек в D-04 и для форм деградации в D-06.

Цена измерения растёт быстрее системы. Метрика с меткой неограниченной кардинальности умножает объём на миллионы (OPS-08). Прежде чем обещать цель, требующую нового сигнала, посчитайте, во что обойдётся сигнал при десятикратном росте.

Вопрос «что сломалось» проверяется до инцидента. Возьмите последний разбор и спросите, отвечала ли на его главный вопрос имеющаяся телеметрия. Отрицательный ответ — часть этого решения, а не задача на потом.

«Нет данных» здесь означает «не спросили продукт». Как и в D-06: пустая ячейка [продукт] закрывается разговором, а не выгрузкой, и означает, что решение ещё не принято тем, кто должен его принимать.

6. Запись в ADR#

Поле ADR Чем заполняется
Контекст Сценарий, его ценность, точка зрения измерения, что считается успехом и неудачей
Дисквалификаторы Что отсечено; отдельно — какой измеритель пришлось построить до обещания
Рассмотренные варианты Матрица раздела 3 снимком, включая нулевой вариант «не обещать»
Решение Цель числом, измеритель, период и бюджет ошибок
Обоснование Откуда взялось число: что теряет пользователь; во что обходится цель и её измерение
Последствия Что строится ради измерения; что происходит при исчерпании бюджета и кто это объявляет
Условия пересмотра Раздел 7
Метод D-10 v<версия> · шаблон ADR v<версия> — рыночного снимка нет

Три строки обязательны: измеритель (чем именно, с чьей точки зрения) · что следует из исчерпания бюджета — и какого это рода · цена измерения. Без первой цель непроверяема, без второй бесполезна, без третьей отменится при первом сокращении расходов.

7. Условия пересмотра#

  • Бюджет ошибок не исчерпывался ни разу за несколько периодов — цель ниже фактического уровня, и обещание не стоит того, что за него платят.
  • Бюджет исчерпывается каждый период — цель выше достижимого, и её исчерпание перестало что-либо значить.
  • Появился сигнал, которого не было: измеритель можно сделать честнее, ближе к пользователю.
  • Цена измерения выросла быстрее системы — пересчитать, что из собираемого отвечает хоть на один вопрос.
  • Инцидент, главный вопрос которого не удалось закрыть имеющейся телеметрией.
  • Изменился класс важности сценария относительно соседних (D-06).

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

Источники: Google SRE Book — Service Level Objectives · Huang et al. — Gray Failure, HotOS '17 · Grafana Labs — Observability Survey 2025 · DORA — software delivery performance metrics · 00-workflow.md, шаг W0

История версий#

Версия Дата Изменение
1.2 2026-09-22 MINOR, по итогам прогона U-02, правка Р7·A плана ревизии. У следствия исчерпания бюджета назван второй род: режим эксплуатации и внешняя эскалация — рядом с прежним единственным, темпом изменений. Дан признак, по которому второй род нужен: обычное следствие уже в силе до всякого исчерпания, и тогда «остановить выкаты» не следствие, а описание положения. Добавлено требование к следствию второго рода — оно обращено к тому, кем мы не распоряжаемся, и потому называет адресата и его обязательство, иначе третий дисквалификатор сработает снова уже на нём. Дисквалификатор, оси и формы цели не изменились — изменился запас ответов на его вопрос, поэтому MINOR. Старым ADR: перепроверять нечего, и оба проверены при внесении. U-02 · ADR-0008 второй род уже применил вручную — именно это и показало, что в документе его нет. E-03 · ADR-0005 выбрал следствие первого рода (разбор расхождений в приоритет над плановыми задачами) — второй род его не задевает
1.1 2026-09-18 MINOR, по итогам прогона E-03. Четвёртый вопрос раздела 1 говорит, что делать при отрицательном ответе: раздел 3 заполняется для измерителей, цели назначаются вторым шагом — иначе матрица заполняется впустую и отменяется местной проверкой в конце. У формы «корректность» названа особенность: цена измерения выбирается, растёт квадратично к точности, а при внешнем арбитре меряется человеко-часами
1.0 2026-09-17 Первая версия. Собрана из двух записей реестра исследования — P-REQ-02 и P-OPS-01, — слитых при написании: «состав телеметрии» не устоял как отдельный документ по правилу мастер-шаблона v5.0 о карточке, делающей работу решения, и его решающая часть оказалась обратной стороной цели. 7 вопросов, 6 осей, 5 дисквалификаторов, 7 типовых форм цели, шестой пункт проверки — измеритель показывает число сегодня