Доля времени в рабочем состоянии
Uptime — время, в течение которого сервис был доступен, обычно выраженное в процентах за период. SLA (Service Level Agreement) — соглашение об уровне услуг, где провайдер указывает целевую доступность, порядок измерения и компенсацию при нарушении.
Это разные вещи: uptime описывает факт, SLA — обещание. Реальный показатель может быть выше или ниже указанного в документе.
Для пользователя вопрос обычно сводится к простому: работает ли сервис, когда он им нужен. Формальные показатели помогают сравнить обещания провайдеров и заранее понять, насколько допустимы простои для вашего проекта.
Девятки и допустимый простой
Доступность принято выражать числом девяток. Значение 99% допускает около 3,65 суток простоя в год. Значение 99,9% — примерно 8,76 часа в год. Значение 99,99% — около 52,6 минуты в год, а 99,999% — примерно 5 минут.
Расчёт простой: год содержит порядка 525 600 минут, и допустимый простой равен доле от них. Каждая следующая девятка сокращает допустимый простой в десять раз и заметно удорожает реализацию, поскольку требует резервирования на всех уровнях.
Формула простая: доступность равна отношению времени работы ко всему времени за период, умноженному на сто процентов; отсюда легко пересчитать любое обещание в минуты.
Полезно понимать и месячный пересчёт: при доступности 99,9% на календарный месяц из тридцати дней приходится около сорока трёх минут допустимого простоя, а при 99% уже более семи часов.
Что не входит в учёт
Внимательно читайте исключения. Плановые работы обычно не считаются простоем. Не учитываются сбои по вине клиента, форс-мажор и проблемы вне сети провайдера, например у вашего оператора. Кроме того, SLA часто относится к отдельному компоненту, скажем, к доступности виртуальной машины, а не к работе всего вашего приложения.
Метод измерения тоже важен: провайдер может считать доступность с внутренних проверок, а пользователь проверяет из внешней сети.
Кроме того, в SLA может быть указано время реакции поддержки и время восстановления, которые характеризуют не доступность, а скорость устранения проблем.
Компенсация и реальность
При нарушении SLA обычно предусмотрена компенсация: возврат части суммы за услугу в виде кредита, часто по шкале в зависимости от глубины нарушения, и то по заявке клиента. Она не покрывает убытки от недоступности сервиса, которые обычно исключаются из ответственности.
Поэтому SLA — не гарантия работы, а количественное обязательство с ограниченной ответственностью. Для критичных систем на него не опираются: строят архитектуру, где отказ одной площадки не останавливает сервис.
Кредиты за нарушение обычно нужно запрашивать самостоятельно в установленный срок, и без обращения клиента они не начисляются.
Как посмотреть и оценить
Общая доступность цепочки равна произведению доступностей звеньев. Два компонента по 99,9% последовательно дают около 99,8%, а параллельное резервирование, наоборот, повышает итог. Заблуждение: 100% достижимы. На практике никто честно не обещает сто процентов.
Проверить свой сервис можно внешним мониторингом, который опрашивает адрес с нескольких точек и ведёт журнал сбоев. О физической основе доступности читайте на странице про дата-центры.
Как измерять доступность самому
Самый простой способ — внешний мониторинг: сторонний сервис или собственный скрипт раз в минуту обращается к странице сайта и записывает код ответа и время. Важно проверять не только открытый порт, но и содержимое ответа, иначе сервис с ошибкой приложения будет считаться доступным.
Проверки лучше вести из нескольких мест, чтобы отличить локальную проблему сети от сбоя сервиса. Порог срабатывания обычно требует нескольких неудачных проверок подряд, чтобы избежать ложных тревог из-за единичной потери пакета.
Наряду с доступностью стоит отслеживать время отклика и частоту ошибок: сервис формально работает, но отвечает за десять секунд, а для пользователя это равносильно недоступности. Такие показатели описывают через SLO и SLI.