Определение

Доступность (Availability) — это способность объекта выполнять требуемые функции в определенный момент или в течение определенного промежутка времени. Простыми словами, это ответ на вопрос: "Работает ли твой сервис прямо сейчас и могут ли пользователи им пользоваться?"

Согласно ГОСТ Р ИСО/МЭК 20000-1-2013, доступность выражается отношением или процентом времени, в течение которого услуга действительно доступна заказчику для использования.

По данным исследования Ponemon Institute, средняя стоимость простоя для крупной компании составляет $5,600 в минуту. При этом 50% компаний сталкиваются с критическими инцидентами еженедельно.

График стоимости простоя

Важная характеристика доступности в том, что у неё может быть только два состояния: сервис работает или не работает с точки зрения пользователя. Деградация производительности, частичные отказы — это технические показатели, которые нужно переводить в бинарную логику для расчета метрик доступности.

Научись диагностировать инциденты как профессионал

Понимание доступности — это только начало. Когда происходит инцидент, важно быстро найти причину и восстановить сервис. В среднем IT-специалисту нужно 3+ года, чтобы научиться эффективно решать сбои. Попробуй демо-тренировку и узнай, как можно ускорить получение этих навыков на реальных сценариях.

Как начать работать с доступностью

1. Определи критические пользовательские сценарии

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

Примеры критических сценариев:

  • Авторизация в мобильном приложении
  • Оформление заказа в интернет-магазине
  • Обработка платежей в платежной системе
  • Доступ к корпоративной почте

2. Рассчитай текущее значение доступности

Настрой мониторинг доступности для критических сценариев (на основе запросов в API, на основе жалоб пользователей, на основе фоновых задач). После сбора статистики за 3-6 месяцев оцени реальный уровень доступности системы. Это поможет установить достижимые SLO (Service Level Objectives).

Формула расчета доступности:

Доступность % = (Период времени - Простой за этот период) / Период времени × 100%

3. Настрой синтетический мониторинг и автоматическое восстановление

Создай автоматические проверки доступности, которые имитируют действия реальных пользователей 24/7. Это позволит обнаруживать проблемы раньше, чем о них сообщат пользователи. Также для типичных ситуаций можно настроить полуавтоматические способы решения — рестарты, увеличение ресурсов.

Рекомендую начать с:

  1. Проверка доступности сайта/API/обработчиков задач — в том числе из различных гео-точек
  2. Проверка рабоспособности API — регулярный запуск автотестов поможет в мониторинге доступности
  3. Автоматическое масштабирование/рестарты — настройка автоматического восстановления при недоступности

4. Внедри процесс анализа инцидентов

После каждого серьезного инцидента проводи post-mortem с фокусом на влияние на доступность. Это поможет предотвратить повторные сбои и улучшить процессы.

FAQ

Чем отличается доступность от надежности?

Доступность — это метрика текущего состояния: работает сервис или нет. Надежность — более широкое понятие, включающее способность системы функционировать без сбоев в течение времени. Reliability включает availability, но также учитывает производительность, безопасность и корректность работы. Подробнее читай в статье Что такое надежность в IT.

Что означают "4 девятки доступности"?

"Девятки" — это способ выражения уровня доступности в процентах:

  • 99% (две девятки) = 3.65 дня простоя в год
  • 99.9% (три девятки) = 8.77 часов простоя в год
  • 99.99% (четыре девятки) = 52.6 минуты простоя в год
  • 99.999% (пять девяток) = 5.26 минут простоя в год

Каждая дополнительная "девятка" требует экспоненциально больше инвестиций в инфраструктуру.

Как рассчитать доступность для распределенных систем?

Для систем с несколькими компонентами используй формулу последовательного соединения:

Общая доступность = Произведение доступностей всех критических компонентов.

Например: API Gateway (99.9%) × App Server (99.9%) × Database (99.95%) = 99.75%.

Для повышения доступности добавляй резервирование и используй паттерны отказоустойчивости.