Доступность «три девятки» означает, что сервис работает 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 ₽ в месяц.