Перейти к основному содержимому

Классы доступности систем

Доступность системы (SA,Service Availability) — отношение времени, когда система работала, к общему времени.
Availability (%) = (Время работы / Общее время) × 100

Пример

Если система работала 364 дня и 6 часов в году:
Availability = (364.25 / 365) × 100 ≈ 99.79%

Классы доступности и допустимый простой

КлассДоступностьДопустимый простой / год
Basic99%~3 дня 15 часов
High99.9%~8 часов 45 минут
Fault-Tolerant99.99%~52 минуты
Continuous99.999%~5 минут

Каждая «девятка» добавляет кратно больше затрат на инфраструктуру, тестирование, процессы поддержки.

Метрики доступности

  1. Uptime / Downtime

    Uptime — сколько времени система работает
    Downtime — сколько времени система была недоступна (по любым причинам: сбои, обновления, ошибки конфигурации)
    Эти метрики логируются в большинстве APM/мониторинговых систем:
    Datadog, Pingdom, New Relic, Zabbix

  2. MTBF (Mean Time Between Failures)

    MTBF = Общее время работы / Кол-во сбоев
    Показывает, как часто происходят сбои. Чем выше MTBF — тем надёжнее система.
    Полезен для оценки стабильности инфраструктуры.

  3. MTTR (Mean Time To Recovery)

    MTTR = Общее время восстановления / Кол-во инцидентов
    Показывает, сколько времени в среднем уходит на устранение сбоя.
    MTBF и MTTR рассчитываются на основе логов событий и инцидентов.
    Prometheus + Grafana, Zabbix, Datadog позволяют автоматизировать эти расчёты.

Инструменты мониторинга доступности

ИнструментUptimeMTBFMTTRSLA-алерты
PrometheusЧерез Alertmanager
GrafanaЧерез дашборды/алерты
ZabbixДа
DatadogДа
PingdomДа
New RelicДа

Примеры под разные классы доступности

Класс 99% (базовая надёжность)

  • Один сервер, одно приложение, одна БД
  • Резервные копии раз в сутки
  • Мониторинг вручную или Zabbix/Prometheus без алертов
  • Downtime в случае обновлений или перезапуска

Класс 99.9% (высокая доступность)

  • Балансировка нагрузки: NGINX / HAProxy
  • Минимум два экземпляра приложения
  • Репликация БД (например, master-slave PostgreSQL)
  • Автоматический мониторинг и алерты (Prometheus + Alertmanager)
  • Оркестрация: Docker Compose / простейший Kubernetes кластер

Класс 99.99% (отказоустойчивость)

  • Геораспределённость: приложения и БД в разных зонах доступности
  • Active-Passive конфигурация (один сервер работает, второй на подстраховке. При сбое первый отключается, второй включается)
    или Active-Active (оба сервера работают одновременно. Нагрузка распределяется. Если один падает — второй продолжает без переключений)
  • Автопереключение при сбое: Keepalived (переключает IP на резервный сервер), Patroni для PostgreSQL (управляет кластерами PostgreSQL — автоматически назначает нового мастера), Route53 health checks (при сбое трафик уходит на живой сервер)
  • CI/CD с canary/blue-green деплоем
  • RTO/RPO* оговорены и тестируются

Класс 99.999% (непрерывная доступность)

  • Многоуровневая геораспределённая архитектура (в разных регионах и странах)
  • Реальное Active-Active с кворумами (например, CockroachDB, Spanner)
  • Самовосстанавливающийся кластер (Kubernetes)
  • Контейнерные образы протестированы и зафиксированы по версии
  • Тестирование отказов в проде (chaos engineering*)

Улучшение доступность приложений

Балансировка нагрузки (load balancing) — оптимальное распределение запросов пользователей
(отправка части запросов пользователей на менее нагруженные серверы)

Масштабируемость (scalability) — автоматическое увеличение количества серверов, когда повышается нагрузка на приложение

Отказоустойчивость (fault tolerance) — способность системы нормально функционировать даже при отказах
Происходит это так: неработающая часть сервиса временно отключается и влечёт недоступность только одной функции приложения (например, отправки сообщений), но сохраняет доступность других (чтение ленты, просмотр сообщества и так далее)

RTO и RPO

RTO (Recovery Time Objective) — за сколько времени должна быть восстановлена система после сбоя
Пример: RTO = 15 минут → система должна заработать не позже чем через 15 минут после сбоя

RPO (Recovery Point Objective) — максимальное допустимое время потери данных
Пример: RPO = 5 минут → допустимая потеря не более 5 минут данных (время с последнего бэкапа или репликации)

Эти параметры обязательно обсуждаются при выборе архитектуры и процедур восстановления

Дополнительно

Хаос-инженерия (Chaos Engineering) — целенаправленное внесение отказов в прод, чтобы проверить устойчивость
(пример: Netflix Chaos Monkey)

Практика позволяет:

  • проверить устойчивость приложения
  • выявить слабые места и скрытые проблемы в проектировании и масштабировании
  • улучшить работу системы в реальных условиях использования

Полезно знать системному аналитику

  1. Формализовать требования доступности
  2. Учитывать их при описании архитектуры
  3. Проверять, что метрики доступны и измеримы
  4. Участвовать в обсуждении RTO/RPO, SLA и сценариев отказа

Что можно обсудить с заказчиком и архитектором

  • Какие потери допустимы при отказе
  • Варианты восстановления (ручной / автоматический)
  • План реагирования и RTO / RPO
  • Кто и как будет следить за SLA

Материалы

  1. Классификация критичности информационных систем
  2. Типы информационных систем и их уровни защищённости
  3. Доступность IT-систем: поругаться или договориться?
  4. Что такое доступность? Объясняем простыми словами
  5. Доступность ИТ-сервисов как ключевой бизнес показатель, и причем тут арбуз
  6. Надежность и доступность: понимание различий
  7. Отказоустойчивые системы: зачем нужны и как построить
  8. Анатомия инцидента, или как работать над уменьшением downtime
  9. MTBF — откуда берется «миллион часов MTBF»
  10. Разбираемся с метрикой «Среднее временя между сбоями» (MTBF)
  11. RTO и RPO: что это и в чём отличия
  12. RPO и RTO: Различия в показателях резервного копирования
  13. Обеспечение доступности данных и сервисов: показатели RPO, RTO и планирование SLA
  14. Не New Relic’ом одним: взгляд на Datadog и Atatus
  15. Datadog: краткий обзор платформы для мониторинга
  16. Еще 7 сервисов для мониторинга сайтов

Наши статьи

  1. Распределенные системы: архитектурные паттерны и стили
  2. SLO, SLI, SLA
  3. Метрики, мониторинг и их реализация

Видео

  1. RTO and RPO explain | RTO and RPO in Disaster Recovery (en)
  2. RTT, RTO, RPO и синхронная репликация — Павел Конотопов, PGConf.Russia 2023
  3. MTBF, MTTR, & MTTF Explained: Understanding the Basics (en)

Книги

Site Reliability Engineering. Надежность и безотказность как в Google