SLA облачного сервиса: метрики доступности и стандарты техподдержки после релиза
99,9% доступности оставляют сервису около 43 минут простоя в месяц. Для внутреннего back-office это может быть допустимо.

Для checkout, API авторизации, платёжного контура или B2B-кабинета с фиксированным окном операций — нет.
После релиза SLA перестаёт быть приложением к договору с облачным провайдером. Это рабочая модель эксплуатации. Она определяет, какой сбой считается инцидентом, кто фиксирует его начало, за какое время команда обязана подтвердить проблему, когда требуется workaround и каким образом измеряется выполнение обязательств.
Критерии оценки SLA для облачных сервисов должны опираться не на маркетинговую формулировку «высокая доступность», а на измеримые параметры:
- допустимый downtime;
- границы сервиса: frontend, API, k8s-кластер, managed database, интеграции;
- приоритет инцидента;
- Response Time и Resolution Time;
- исключения из расчёта;
- механизм service credits;
- источник мониторинговых данных.
Без этой конструкции SLA не управляет качеством. Он фиксирует спорные формулировки.
Математика доступности: что фактически означают «девятки»
Uptime обычно указывают в процентах. Разница между 99,9% и 99,99% визуально составляет 0,09 процентного пункта. В эксплуатации это почти десятикратное снижение допустимого времени простоя.
| Уровень доступности | Допустимый простой за 30 дней | Типовой контекст |
|---|---|---|
| 99,9% | около 43 минут | Внутренние системы, некритичные SaaS-модули |
| 99,99% | около 4,3 минуты | Публичные B2B- и B2C-сервисы, критичные API |
| 99,999% | около 26 секунд | Высоконагруженные контуры с дорогой ошибкой отказа |
Пять девяток нельзя получить добавлением соответствующей строки в контракт. Это архитектурный результат. Он требует устранения single point of failure на нескольких уровнях одновременно:
- отказоустойчивого ingress и балансировки;
- как минимум двух зон размещения для критических компонентов;
- репликации stateful-слоя;
- проверенного failover для database и очередей;
- контролируемых миграций схемы;
- rollback в CI/CD;
- наблюдаемости: metrics, logs, traces, synthetics;
- изоляции внешних зависимостей через timeout, retry budget, circuit breaker и очередь.
Если приложение развернуто в нескольких availability zones, но использует единственный внешний API без деградационного сценария, его end-to-end SLA ограничен этой интеграцией. Если k8s-кластер отказоустойчив, а база данных доступна в одном экземпляре, SLA кластера не равен SLA продукта. Если провайдер гарантирует 99,99% инфраструктурной доступности, это не гарантирует 99,99% для пользовательского пути.
Именно здесь обычно возникает ошибка в составлении соглашения об уровне сервиса: предметом договора называют «облачную платформу», а пользователю нужен работающий бизнес-процесс. Это разные объекты измерения.
SLA должен измерять доступность сервиса для пользователя, а не здоровье отдельных компонентов в dashboard провайдера.
Для зрелого сервиса нужны минимум два контура метрик.
Первый — инфраструктурный. Он показывает состояние VM, managed database, object storage, network, k8s control plane. Эти показатели нужны для работы с провайдером.
Второй — продуктовый. Он отвечает на вопрос, способен ли пользователь завершить целевое действие. Например:
- получить токен через API авторизации;
- создать заказ;
- выгрузить документ;
- сохранить запись в CRM;
- выполнить поиск;
- получить ответ в личном кабинете.
Продуктовая доступность измеряется synthetic checks и реальными транзакциями. HTTP 200 сам по себе не означает, что сервис доступен. Endpoint может вернуть успешный ответ при недоступной записи в БД, пустом результате из-за сбоя кеша или неработающей интеграции.
Для расчёта uptime заранее фиксируют формулу. Базовый вариант:
- период измерения: календарный месяц;
- доступное время: общее время периода за вычетом согласованных исключений;
- downtime: интервал, в котором критичная функция недоступна по правилам SLA;
- источник истины: независимый monitoring либо согласованная система провайдера;
- правило агрегации: по сервису целиком или по отдельным критичным операциям.
Последний пункт критичен. Среднее значение по десяти API может скрыть отказ одного endpoint, через который проходит основная выручка. В SLA не следует усреднять критичные и второстепенные операции.
Классификация инцидентов: матрица реакции и решения
Поддержка без матрицы приоритетов работает по принципу очереди. Для облачного продукта это означает, что ошибка в тексте интерфейса и полный отказ API могут получить одинаковую начальную обработку. SLA должен исключить эту ситуацию.
У инцидента есть минимум четыре временные точки:
1. Обнаружение. Мониторинг, пользователь, service desk или инженер фиксирует отклонение.
2. Регистрация. Инцидент получает идентификатор, приоритет, владельца и timestamp.
3. Acknowledgement. Поддержка подтверждает принятие обращения в работу. Это Response Time.
4. Восстановление или обход. Сервис возвращается к согласованному уровню либо вводится рабочий workaround. Это Resolution Time, если правила не разделяют временное решение и окончательное устранение причины.
Для P1 типовой ориентир Response Time составляет 15–30 минут. Resolution Time часто задают в диапазоне 2–4 часов. Эти цифры нельзя переносить в SLA автоматически. Они должны соответствовать режиму дежурств, составу команды и архитектуре сервиса.
| Приоритет | Признак инцидента | Response Time | Целевой результат |
|---|---|---|---|
| P1 | Сервис или критичный пользовательский путь недоступен для большинства пользователей | 15–30 минут | Восстановление либо устойчивый workaround в согласованное окно |
| P2 | Существенная деградация, часть пользователей не может выполнить операцию | Зависит от режима поддержки | Локализация влияния и восстановление функции |
| P3 | Ошибка с обходным сценарием, без массовой недоступности | В рабочее окно поддержки | Плановое исправление по release-процессу |
| P4 | Консультация, запрос на изменение, некритичный дефект | В рабочее окно поддержки | Ответ или включение в backlog |
Матрица не должна состоять только из времени. Нужны критерии присвоения P1 и P2. Иначе любой клиентский запрос может быть маркирован как критический, а метрика поддержки будет искусственно ухудшена.
Практичный набор правил для P1:
- недоступна авторизация для большинства пользователей;
- не проходит создание или оплата заказа;
- API возвращает ошибки на критичном маршруте выше согласованного порога;
- нарушена целостность данных;
- есть риск утечки данных или несанкционированного доступа;
- нет технического обходного пути.
Не следует объявлять P1:
- дефект в редком edge case;
- сбой в тестовом окружении без влияния на production;
- задержку в некритичном отчёте;
- запрос на изменение логики;
- проблему, вызванную изменением конфигурации на стороне клиента.
Отдельно фиксируется режим поддержки. SLA с реакцией 15 минут бессмыслен, если команда работает только в будни с 09:00 до 18:00. Для P1 требуется 24/7 on-call, rota, эскалация и доступ инженеров к production. Для P2–P4 обычно достаточно рабочего времени, если это соответствует продуктовой модели.
После каждого P1 нужен не только тикет со статусом «решено». Нужны:
- timeline инцидента;
- техническая причина;
- оценка пользовательского и бизнес-влияния;
- применённый workaround;
- corrective actions;
- preventive actions;
- владелец и срок каждого действия.
Это уже не SLA в узком смысле. Это основа для снижения MTTR и устранения повторяющихся отказов.
SLA Compliance: метрика качества техподдержки
SLA Compliance показывает не доступность продукта, а дисциплину выполнения обязательств по обращениям. Базовый расчёт простой:
SLA Compliance = количество заявок, закрытых в срок / общее количество заявок за период × 100%.
Метрика полезна, но её легко исказить. Команда может закрывать тикеты формально, переводить их в новый статус или менять приоритет после нарушения срока. Поэтому архитектурный комитет должен смотреть не на одну итоговую цифру, а на разрезы.
Минимальный набор отчётности:
- SLA Compliance отдельно по P1, P2, P3 и P4;
- доля инцидентов, уложившихся в Response Time;
- доля инцидентов, уложившихся в Resolution Time;
- количество переоткрытых заявок;
- количество нарушений по причине отсутствия данных от клиента;
- количество нарушений по причине внешнего vendor;
- aging открытых P2 и P3;
- повторные инциденты с одинаковой root cause.
Показатель в 99% может скрывать провал, если один пропущенный P1 остановил ключевой процесс, а остальные 99 обращений были P4. Приоритизация должна влиять на отчётность. P1 нельзя растворять в общем объёме service desk.
Высокий SLA Compliance не компенсирует низкую доступность. Это разные плоскости контроля.
Метрики качества технической поддержки должны быть связаны с операционной моделью. Если продукт использует внешний IdP, платёжный gateway, CDN или SaaS-интеграцию, для каждой зависимости нужен владелец эскалации. Иначе внутренний SLA окажется быстрее, чем способность команды воздействовать на реальную причину инцидента.
В такой конфигурации полезно разделить три показателя:
- SLA — договорное обязательство перед клиентом;
- SLO — внутренняя цель команды, более жёсткая, чем внешний SLA;
- error budget — допустимый объём ненадёжности до остановки рискованных изменений.
Например, внешний SLA может допускать 99,9% доступности. Внутренний SLO для критичного API устанавливается выше. Разницу команда использует как запас для deploy, миграций, экспериментов и непредвиденных сбоев. Когда error budget исчерпан, приоритет смещается с feature delivery на reliability work.
Это связывает CI/CD с эксплуатацией. Без такого правила релизы продолжаются после серии инцидентов, а SLA становится отчётом о последствиях.
Исключения: где заканчивается ответственность провайдера
В SLA почти всегда есть периоды, которые не входят в расчёт доступности. Это нормальная конструкция. Проблема возникает, когда исключения описаны шире, чем сама гарантия.
Обычно из uptime исключают:
- согласованное плановое обслуживание;
- форс-мажор;
- отказ из-за действий клиента;
- некорректную конфигурацию, которую клиент изменил вне утверждённого процесса;
- проблемы в сети или системах клиента;
- отказ внешнего поставщика, если он явно выведен за границы SLA;
- превышение согласованных лимитов использования;
- эксплуатацию неподдерживаемой версии интеграции или API.
Каждое исключение требует параметров. Формулировка «плановые работы не учитываются» недостаточна. В документе должны быть указаны:
- допустимое окно обслуживания;
- максимальная продолжительность;
- период уведомления;
- каналы уведомления;
- допускается ли перенос окна;
- какие функции могут быть затронуты;
- обязана ли команда использовать zero-downtime deployment;
- как фиксируется фактическая длительность работ.
Если maintenance window каждую неделю занимает несколько часов, формально высокий уровень доступности теряет операционный смысл. Пользователь видит недоступность. Для него нет разницы, вызвана она аварией или заранее объявленной операцией.
Отдельный риск — граница ответственности при multi-cloud и hybrid-архитектуре. Провайдер может отвечать за доступность своей managed database, но не за network path, DNS, application code, IAM-политику, контейнерные образы и данные клиента. Клиент при этом ожидает доступность конечного веб-инструмента.
Поэтому в SLA необходимо описать dependency map в текстовой форме: какие компоненты входят в услугу, кто ими управляет, какие внешние системы критичны и какая деградация считается приемлемой. Это снижает число инцидентов со статусом «не наша зона ответственности».
Мониторинг доступности веб-инструментов также нельзя полностью передавать одной стороне. Если только провайдер определяет начало и конец downtime, клиент не контролирует расчёт. Если мониторинг ведёт только клиент, возникают расхождения по методике. Рабочая схема — согласованный независимый synthetic monitoring с несколькими точками проверки и едиными правилами исключения ложных срабатываний.
Сервисные кредиты: компенсация без иллюзий
При нарушении SLA провайдер обычно предоставляет service credits: скидку или возврат части оплаты за период, в котором зафиксировано нарушение. Это не возмещение полного ущерба от простоя. Это заранее ограниченный механизм расчёта ответственности.
Процент компенсации не имеет единого рыночного стандарта. Он зависит от провайдера, тарифа, типа сервиса и условий договора. Поэтому в SLA следует фиксировать не абстрактное обещание компенсации, а процедуру.
Нужны ответы на пять вопросов:
1. Что запускает компенсацию. Факт нарушения месячного uptime, пропуск Response Time, превышение Resolution Time или только отдельные категории P1.
2. Как рассчитывается нарушение. По данным провайдера, данным клиента или согласованному источнику monitoring.
3. Кто подаёт запрос. Автоматический процесс или обращение клиента в установленный срок.
4. На что распространяется credit. На конкретный сервис, subscription, account или весь контракт.
5. Каков лимит. Максимальная сумма service credits за расчётный период.
Service credits полезны как сигнал. Они создают финансовую связь между обещанной и фактической надёжностью. Но для критичного продукта это вторичный инструмент.
Если минута простоя блокирует операции клиентов, нарушает интеграционный контур или приводит к необратимой потере данных, скидка на облачный счёт не решает проблему. Основной контроль находится в архитектуре:
- multi-AZ или multi-region размещение там, где это экономически обосновано;
- резервные каналы доставки событий;
- backup и регулярно проверяемое восстановление;
- RTO и RPO, согласованные с бизнес-процессом;
- rate limiting и защита от каскадной деградации;
- canary rollout;
- feature flags;
- runbook для P1;
- регулярные game day и проверка failover.
SLA не заменяет RTO и RPO. Доступность отвечает на вопрос, сколько времени сервис был работоспособен. RTO определяет целевое время восстановления. RPO — допустимый объём потери данных. Сервис может формально выполнить месячный uptime, но потерять критичные данные при аварийном восстановлении. Для владельца продукта это будет существеннее нескольких минут downtime.
Оптимальная конфигурация SLA после запуска
Для уже работающего облачного сервиса не требуется переписывать договор целиком. Требуется привести обязательства в соответствие с фактической архитектурой и пользовательскими путями.
Рабочая последовательность выглядит так:
1. Выделить 3–7 критичных операций, которые формируют ценность продукта. Не все endpoint одинаковы.
2. Построить карту зависимостей: application, k8s, database, cache, queue, DNS, CDN, внешние API, IAM.
3. Назначить продуктовый SLO для каждой критичной операции и проверить, способен ли текущий стек его выполнить.
4. Определить внешний SLA ниже внутреннего SLO. Это оставляет error budget для управляемых изменений.
5. Утвердить P1–P4 с признаками, Response Time, Resolution Time, режимом 24/7 или business hours.
6. Зафиксировать единый источник uptime и правила признания downtime.
7. Ограничить список исключений конкретными условиями, а не общими формулировками.
8. Настроить ежемесячный отчёт: uptime, SLA Compliance, P1/P2, MTTR, повторные root cause, service credits.
9. Проверить, что on-call, доступы, runbook и CI/CD соответствуют обещанным срокам реакции.
SLA для облачного сервиса должен быть консервативным. Обещать 99,99% при single-region database и ручном восстановлении нельзя. Указывать 99,9%, если сервис фактически требует почти непрерывной работы, также нельзя.
Корректный SLA фиксирует реальный уровень зрелости платформы, задаёт измеримые обязанности поддержки и показывает, какие архитектурные инвестиции нужны для следующей ступени доступности. Это не юридическая декорация после релиза. Это операционный контракт между продуктом, инженерной командой и пользователем.