Определение
Доступность (Availability) — это способность объекта выполнять требуемые функции в определенный момент или в течение определенного промежутка времени. Простыми словами, это ответ на вопрос: "Работает ли твой сервис прямо сейчас и могут ли пользователи им пользоваться?"
Согласно ГОСТ Р ИСО/МЭК 20000-1-2013, доступность выражается отношением или процентом времени, в течение которого услуга действительно доступна заказчику для использования.
По данным исследования Ponemon Institute, средняя стоимость простоя для крупной компании составляет $5,600 в минуту. При этом 50% компаний сталкиваются с критическими инцидентами еженедельно.
Важная характеристика доступности в том, что у неё может быть только два состояния: сервис работает или не работает с точки зрения пользователя. Деградация производительности, частичные отказы — это технические показатели, которые нужно переводить в бинарную логику для расчета метрик доступности.
Научись диагностировать инциденты как профессионал
Понимание доступности — это только начало. Когда происходит инцидент, важно быстро найти причину и восстановить сервис. В среднем IT-специалисту нужно 3+ года, чтобы научиться эффективно решать сбои. Попробуй демо-тренировку и узнай, как можно ускорить получение этих навыков на реальных сценариях.
Как начать работать с доступностью
1. Определи критические пользовательские сценарии
Опиши ключевые функции, от которых зависит бизнес. Не пытайся измерять доступность всего подряд — сфокусируйся на том, что приносит деньги или критично для репутации, на что получаешь наибольшее количество жалоб.
Примеры критических сценариев:
- Авторизация в мобильном приложении
- Оформление заказа в интернет-магазине
- Обработка платежей в платежной системе
- Доступ к корпоративной почте
2. Рассчитай текущее значение доступности
Настрой мониторинг доступности для критических сценариев (на основе запросов в API, на основе жалоб пользователей, на основе фоновых задач). После сбора статистики за 3-6 месяцев оцени реальный уровень доступности системы. Это поможет установить достижимые SLO (Service Level Objectives).
Формула расчета доступности:
Доступность % = (Период времени - Простой за этот период) / Период времени × 100%
3. Настрой синтетический мониторинг и автоматическое восстановление
Создай автоматические проверки доступности, которые имитируют действия реальных пользователей 24/7. Это позволит обнаруживать проблемы раньше, чем о них сообщат пользователи. Также для типичных ситуаций можно настроить полуавтоматические способы решения — рестарты, увеличение ресурсов.
Рекомендую начать с:
- Проверка доступности сайта/API/обработчиков задач — в том числе из различных гео-точек
- Проверка рабоспособности API — регулярный запуск автотестов поможет в мониторинге доступности
- Автоматическое масштабирование/рестарты — настройка автоматического восстановления при недоступности
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%.
Для повышения доступности добавляй резервирование и используй паттерны отказоустойчивости.