Process & Methodology

SLA и отказоустойчивость

Service Level Agreement — соглашение об уровне сервиса, где доступность и время реакции зафиксированы в числах и подкреплены компенсацией.

Что такое SLA

SLA (Service Level Agreement, соглашение об уровне обслуживания) — часть договора с провайдером, где качество услуги описано измеримыми числами: сколько процентов времени сервис доступен, за сколько отвечает поддержка, что провайдер платит, если обещание нарушено. Без последнего пункта это не SLA, а маркетинг.

Ключевой параметр — доступность (uptime): доля времени за расчётный период, когда сервис работал. Пишется в «девятках»: 99.9%, 99.99%. Разница между ними выглядит косметической, но на практике это разные классы инфраструктуры и разные деньги.

Сколько это в минутах простоя

В году 525 600 минут, в месяце (30 дней) — 43 200. Отсюда допустимый простой:

Доступность В год В месяц В сутки
99% («две девятки») 3,65 суток 7,2 часа 14,4 мин
99,5% 43,8 часа 3,6 часа 7,2 мин
99,9% («три девятки») 8,76 часа 43,2 мин 1,44 мин
99,95% 4,38 часа 21,6 мин 43 сек
99,99% («четыре девятки») 52,6 мин 4,32 мин 8,6 сек
99,999% («пять девяток») 5,26 мин 26 сек 0,9 сек

Что из этого следует практически:

  • 99,9% — 43 минуты в месяц. Хватает на плановую перезагрузку и одну неспешную починку руками. Типовой уровень массового хостинга и VPS.
  • 99,99% — 4 минуты в месяц. Человек не успеет даже открыть ноутбук. Такое достигается только автоматическим переключением на резерв, то есть закладывается в архитектуру, а не в регламент дежурства.
  • 99,999% — 26 секунд в месяц. Это уровень телеком-оборудования, стоит кратно дороже и почти никогда не нужен обычному веб-сервису.

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

SLA расшифровка и соседние аббревиатуры

  • SLA (Service Level Agreement) — внешнее обязательство перед клиентом с компенсацией за нарушение.
  • SLO (Service Level Objective) — внутренняя цель команды. Всегда строже SLA: если клиенту обещано 99,9%, внутри целятся в 99,95%, чтобы был запас.
  • SLI (Service Level Indicator) — сама метрика, которую меряют: доля успешных ответов, latency перцентиля 99.
  • OLA (Operational Level Agreement) — договорённость между внутренними отделами, обеспечивающая внешний SLA.

Порядок такой: меряем SLI → ставим себе SLO → продаём клиенту SLA с запасом.

Что ещё есть в SLA, кроме процентов

  • Время реакции поддержки по приоритетам: критичный инцидент — 15 минут, обычный — 8 часов. Реакция и решение — разные обязательства, не путайте.
  • Исключения. Плановые работы с предупреждением, DDoS, форс-мажор и действия самого клиента обычно из расчёта простоя вычитаются. Именно здесь красивые «99,99%» часто и растворяются.
  • Компенсация. Как правило — процент от месячной платы в виде кредита на счёт, а не возврат денег. Потолок компенсации почти всегда ограничен стоимостью услуги за период, а не вашими убытками.
  • RTO (Recovery Time Objective) — за сколько восстановимся после аварии. RPO (Recovery Point Objective) — какой объём данных допустимо потерять. RPO в 1 час означает, что резервная копия снимается не реже, чем раз в час.

Что такое отказоустойчивость

Отказоустойчивость (fault tolerance) — свойство системы продолжать работу при выходе из строя отдельных компонентов. Достигается одним способом — резервированием: любой элемент, существующий в единственном экземпляре, рано или поздно станет причиной простоя (single point of failure).

Стоит различать два уровня:

  • Высокая доступность (HA) — при отказе есть короткий перерыв на переключение (секунды-минуты). Реализуется через балансировщик, health check и failover-реплику.
  • Отказоустойчивость в строгом смысле — отказ вообще не виден пользователю, узлы работают параллельно.

Как это выглядит на слоях инфраструктуры:

Слой Единая точка отказа Резервирование
Диск Смерть накопителя RAID
Сервер Отказ железа Кластер из нескольких узлов + LB
База данных Единственный инстанс Репликация, автоматический failover
ЦОДПожар, обрыв канала Вторая площадка, Disaster Recovery
Данные Удаление, шифровальщик Резервное копирование

Резервирование не заменяет бэкап: RAID и репликация честно продублируют команду DROP TABLE на все узлы.

Как складывается доступность

Компоненты, соединённые последовательно, перемножаются — общая доступность всегда ниже самого слабого звена:

Приложение (99,9%) → БД (99,9%) → канал (99,9%)
0,999 × 0,999 × 0,999 = 0,997 → 99,7%  (≈26 часов простоя в год)

Резервирование работает в обратную сторону — перемножаются вероятности отказа:

Два независимых сервера по 99,9% за балансировщиком:
1 − (0,001 × 0,001) = 0,999999 → 99,9999%

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

SLA у провайдера: на что смотреть

  • На что именно распространяется процент — на сеть, на питание, на конкретную виртуалку или на весь ЦОД. Часто SLA даётся на доступность сети, а не вашего сервиса.
  • Уровень ЦОД. Классические ориентиры Uptime Institute: Tier I — 99,671% (~28,8 ч простоя в год), Tier II — 99,741% (~22 ч), Tier III — 99,982% (~1,6 ч), Tier IV — 99,995% (~26 мин). Подробнее — в статье про инженерию ЦОД.
  • Кто фиксирует простой. Если засчитываются только тикеты, открытые клиентом, компенсацию придётся выбивать самому.
  • Есть ли SLA вообще. У части бюджетных тарифов и почти у всех spot-инстансов гарантий нет по определению — за это и скидка.

Связанные термины

  • Disaster Recovery — восстановление после крупной аварии, RTO и RPO
  • load balancer — базовый механизм высокой доступности
  • health check — как система узнаёт об отказе узла
  • Резервное копирование — защита от потери данных, которую не заменяет репликация
  • Инженерия ЦОД — Tier и физическое резервирование площадки
  • DevOps — SRE-практика error budget вокруг SLO

Готовы запустить GPU-задачу?

Запустить GPU-сервер