Доступность «три девятки» означает, что сервис работает 99,9 процента времени за выбранный период. В месяц из тридцати дней это не более 43,2 минуты недоступности, в год около 8,8 часа. Цифра имеет смысл только вместе с ответами на три вопроса: что считается недоступностью, чем и за какой период это измеряется, что происходит, если цель не достигнута.
Без этих ответов «три девятки» остаются красивым обещанием, которое нельзя ни проверить, ни выполнить. Как проектировать систему под такую цель, описано на странице «Микросервисы и высоконагруженные системы», здесь только арифметика и проверка.
Сколько простоя допускает каждая цель
Доступность считается как доля времени, в которое сервис работал. Оставшаяся доля — допустимый простой за период. Ниже месяц взят в тридцать дней, год в 365.
| Цель по доступности | Допустимый простой в месяц | Допустимый простой в год | Как это воспринимается |
|---|---|---|---|
| 99 процентов («две девятки») | 7,2 часа | около 3,7 суток | Заметные остановки в рабочее время |
| 99,5 процента | 3,6 часа | около 43,8 часа | Сбой за месяц, который вы запомните |
| 99,9 процента («три девятки») | 43,2 минуты | около 8,8 часа | Одно короткое происшествие в месяц |
| 99,95 процента | 21,6 минуты | около 4,4 часа | Один небольшой сбой в месяц или реже |
| 99,99 процента («четыре девятки») | около 4,3 минуты | около 52,6 минуты | Человек не успевает вмешаться, нужна автоматика |
| 99,999 процента («пять девяток») | около 26 секунд | около 5,3 минуты | Самовосстанавливающаяся система, дублированная целиком |
Видно, что между «тремя девятками» и «четырьмя» простой падает с 43 минут до четырёх. Человек за четыре минуты не успеет даже прочитать оповещение, поэтому такая цель требует автоматического переключения на резерв, а не дежурного. Ближе к концу таблицы расходы растут быстрее пользы.
SLI, SLO, SLA: три разные вещи
Обещание по доступности складывается из трёх понятий. Путаница между ними — частая причина споров с подрядчиком.
| Термин | Что это | Пример | Кто использует |
|---|---|---|---|
| SLI | Измеряемый показатель: что именно мы считаем | Доля запросов, на которые сервис ответил успешно за разумное время | Инженеры, мониторинг |
| SLO | Внутренняя цель по показателю | Не менее 99,9 процента успешных запросов за календарный месяц | Команда продукта и разработки |
| SLA | Договорное обязательство с последствиями | Если за месяц доступность ниже 99,9 процента, исполнитель делает то-то | Заказчик и исполнитель, юристы |
Внутреннюю цель разумно ставить жёстче обязательства: если SLA обещает 99,9, внутренней целью становится 99,95, чтобы запас сработал до нарушения. Формулировки обязательства и ответственность сторон проверяет юрист заказчика, мы юридических консультаций не даём.
Что считать недоступностью
Самое важное решение в SLA — определение сбоя. «Сервис упал» очевиден, но большинство споров возникает вокруг промежуточных состояний. Запишите их заранее:
| Ситуация | Считать недоступностью? | Как записать в SLI |
|---|---|---|
| Сервис не отвечает совсем | Да | Запрос завершился ошибкой или не завершился за предел ожидания |
| Отвечает, но с ошибками для части запросов | Зависит от доли и важности операции | Доля успешных запросов по ключевым операциям, порог считается сбоем |
| Работает, но очень медленно | Да, если медленнее заранее названного предела | Предел времени ответа для ключевых операций |
| Плановые работы по согласованному окну | Обычно нет | Окно названо заранее, ограничено по длительности и числу в год |
| Недоступна чужая система (платёжный провайдер, 1С, почта) | Решается договором | Отдельно записывается, чьи сбои считаются, а чьи исключены |
| Недоступна одна из функций, остальные работают | Зависит от функции | Перечень критичных функций и вес каждой |
| Сбой на стороне клиента: сеть, браузер | Нет | Измерение идёт с серверной стороны и независимой проверки |
Без такого списка спор «упало» или «просто тормозило» решается не по таблице, а по силе сторон.
Как измерять доступность
Измерение должно быть независимым от самого сервиса: система, которая сообщает о собственном здоровье, ошибается именно тогда, когда падает. Надёжная схема из трёх уровней:
- Внешняя проверка. Робот из другой сети раз в минуту выполняет ключевые операции, например входит и открывает список заказов. Это самый честный источник времени простоя.
- Статистика обработки. Доля успешных ответов и время ответа по журналам балансировщика и приложения: показывает ошибки, которые робот не заметил.
- Обращения пользователей. Если жалоб много, а приборы тихи, значит, измеряется не то.
Формула для периода: доступность равна времени работы, делённому на общее время периода. Для SLI по запросам: успешные запросы, делённые на все запросы за период. Вторая формула справедливее для сервисов с неравномерной нагрузкой, где десять минут ночью и десять минут в час пик весят по-разному.
Фиксируются период (календарный месяц удобнее скользящего окна), источник времени, правила округления и порядок пересмотра. Результат записывается в ежемесячный отчёт, из которого видно каждый простой, его причину и принятые меры.
Почему цепочка доступна хуже каждого звена
Если сервис для ответа обращается к нескольким системам по очереди, их доступности перемножаются. Три компонента с доступностью 99,9 каждый дают вместе около 99,7 процента, то есть уже не «три девятки», а почти 2,2 часа простоя в месяц. Пять звеньев по 99,9 дают около 99,5.
| Схема | Как считается | Итог по доступности | Что делать |
|---|---|---|---|
| Три звена подряд по 99,9 | Перемножение: 0,999 в третьей степени | около 99,7 процента | Убирать звенья из основного пути, переносить в фоновые задачи |
| Пять звеньев подряд по 99,9 | Перемножение в пятой степени | около 99,5 процента | Деградация: основной сценарий живёт без второстепенных звеньев |
| Два одинаковых экземпляра параллельно | Недоступны только когда сломаны оба | в теории намного выше, на практике ограничена общими причинами | Разнести по разным серверам и источникам питания, проверять переключение |
| Внешний сервис в основном пути | Ваша доступность не выше его доступности | не выше внешнего звена | Очередь, повтор позже, тайм-аут, режим «принято, обработаем» |
Поэтому для высокой цели важнее сократить число обязательных звеньев и продумать поведение при отказе, чем купить более дорогой сервер. Дублирование помогает, только если отказы независимы: два экземпляра на одной машине или в одной сети ломаются вместе. Выбор между единым приложением и несколькими сервисами влияет на длину цепочки, см. статью «Микросервисы или монолит».
Что стоит за каждой девяткой
Девятки считаются арифметикой, а достигаются устройством системы и эксплуатацией. Ниже ориентиры по составу работ, а не по ценам: стоимость зависит от вашей системы и назвать её без обследования нельзя.
| Цель | Что нужно в системе | Что нужно в эксплуатации | Ограничение |
|---|---|---|---|
| 99 процентов | Один сервер или копия, резервные копии, мониторинг доступности | Разбор сбоев в рабочее время, обновления по графику | Подходит внутренним системам, где простой в несколько часов допустим |
| 99,9 процента | Несколько копий приложения за балансировщиком, база с резервной копией и репликой, проверенное восстановление, плановые обновления без остановки | Оповещение о сбоях, реакция в рабочее время, ежемесячный отчёт, регламент обновлений | Не покрывает ночные и праздничные сбои, если реакции в эти часы нет |
| 99,99 процента | Автоматическое переключение на резерв, разнесённые площадки, обновления без остановки, проверка отказов | Дежурство в любое время, учения по отказам, разбор каждого инцидента | Требует людей и инфраструктуры, которых у небольшой команды обычно нет |
Из таблицы видно, что «три девятки» достижимы без круглосуточного дежурства, если сбои бывают редко и короткими, а происшествия в нерабочее время допустимо разбирать утром. Если же сбой в три часа ночи недопустим, нужна не девятка, а дежурная смена, и её надо заводить отдельно.
Что проверить до подписания SLA
Прежде чем подписывать обещание или принимать его от подрядчика, пройдите по списку. Каждый пропущенный пункт превращается в спор после первого сбоя.
| Вопрос | Зачем нужен | Признак плохой формулировки |
|---|---|---|
| Что именно считается сбоем и кто это определяет | Единые правила для обеих сторон | Определяет исполнитель по своим журналам |
| Чем и откуда измеряется | Независимость измерения | Измеряет сам сервис изнутри |
| За какой период считается | Месяц, квартал или год дают разные результаты | Период не назван |
| Какие работы исключены и сколько их | Окна не должны быть бесконечными | Исключения без ограничения длительности |
| Что происходит при нарушении | Мотивация и компенсация | Последствий нет или они не связаны с тяжестью |
| Кто реагирует и в какие часы | Цифра без реакции пуста | Реакция «по возможности» |
| Как проверяется восстановление из копии | Копия, которую не восстанавливали, не считается | Копии есть, проверок нет |
О других вопросах подрядчику читайте в статье «Как выбрать подрядчика на разработку ПО», а о том, как считать расходы на эксплуатацию, — в статье о стоимости владения ИТ-системой.
Что делаем мы и с чего начать
Начинаем с обследования: 200 000 ₽ и 2–3 недели за один контур, 350 000 ₽ и 3–4 недели, если вокруг несколько систем. На выходе нагрузочная модель, список слабых мест, определение сбоя и измеримая цель по доступности, которая достижима в вашем окружении, и вилка бюджета. Стоимость вычитается из первого этапа, если продолжаете с нами.
Дальше пилот одного шага: например, мониторинг с внешней проверкой и отчётом (150 000–400 000 ₽, 2–8 недель). Мы проектируем систему под цель и измеряем её, но не имеем круглосуточной дежурной смены: сопровождение помесячное, 20 000 / 60 000 / 120 000 ₽ в месяц на 4, 12 или 25 часов, сверх пакета 5 000 ₽ в час. Реакция по пакетам: до конца следующего рабочего дня, в течение рабочего дня и приоритет по обращениям. Если вам нужно круглосуточное обязательство, скажем об этом до договора. Цены и сроки — на странице «Тарифы», описание услуги — на странице «Микросервисы и высоконагруженные системы».
Частые вопросы
Что значит «три девятки»?
Доступность 99,9 процента за выбранный период. За месяц из тридцати дней допускается около 43 минут простоя, за год около 8,8 часа. Цифра имеет смысл только вместе с определением сбоя, способом измерения и периодом.
Сколько минут простоя в месяц при 99,9 процента?
При тридцати днях в месяце 43,2 минуты. Для 99,95 процента это 21,6 минуты, для 99,99 около 4,3 минуты, для 99 процентов 7,2 часа.
Чем отличаются SLA, SLO и SLI?
SLI — измеряемый показатель, например доля успешных запросов. SLO — внутренняя цель по нему. SLA — договорное обязательство с последствиями при нарушении. Цель разумно ставить жёстче обязательства, чтобы был запас.
Считаются ли плановые работы простоем?
По договорённости. Обычно плановые окна исключают из расчёта, но записывают их длительность и допустимое число в год. Без ограничения окон цифра теряет смысл.
Почему при трёх звеньях по 99,9 общая доступность ниже?
Потому что запрос должен пройти через все три, а доступности перемножаются: получается около 99,7 процента, то есть почти 2,2 часа простоя в месяц. Чем длиннее обязательная цепочка, тем ниже итог.
Можно ли получить три девятки без круглосуточного дежурства?
Да, если сбои редки и коротки, система умеет переключаться на резерв автоматически, а происшествия вне рабочего времени допустимо разбирать утром. Если сбой ночью недопустим, нужна дежурная смена, которую надо организовывать отдельно.
Вы гарантируете доступность 99,9 процента?
Мы не обещаем цифру безусловно и не имеем круглосуточной дежурной смены. Мы проектируем систему под цель, измеряем доступность независимой проверкой и показываем ежемесячный отчёт. Условия и ответственность в договоре проверяет юрист заказчика.
Сколько стоит работа по обеспечению доступности?
Начинается с обследования: 200 000 ₽ за один контур (350 000 ₽ при нескольких системах). Дальше пилот 150 000–400 000 ₽ или 400 000–1 200 000 ₽, вывод в эксплуатацию от 1 500 000 ₽ этапами по 300 000–700 000 ₽, сопровождение от 20 000 ₽ в месяц.