Что такое high availability (HA)?

Что такое high availability (HA)

High Availability (HA) — это свойство системы оставаться работоспособной и доступной для пользователей при нормальных и форс-мажорных условиях. Цель HA — минимизировать время простоя и максимально сократить влияние отказов на бизнес-функции.

Как измеряют

Основная метрика — доступность (availability) в процентах за период. Примеры допустимого простоя:

  • 99% → ~3 дня/год;

  • 99.9% → ~8.76 часа/год;

  • 99.99% → ~52.6 минуты/год;

  • 99.999% → ~5.26 минуты/год.
    Связанные показатели: RTO (сколько времени разрешено на восстановление) и RPO (сколько данных можно потерять).

Ключевые принципы

  • Избыточность — дублирование компонентов (N+1, active-active, active-passive).

  • Отсутствие single point of failure — никакой элемент не должен полностью выводить систему из строя.

  • Автоматический failover — мгновенная или быстрая замена упавшего узла/сервиса.

  • Зоны отказа (fault domains) — разделение инфраструктуры по зонам/локализациям (rack/AZ/region) для изоляции сбоев.

  • Мониторинг и детекция — раннее обнаружение деградации и автоматическая реакция.

  • Graceful degradation — при проблемах часть функционала может быть ограничена, но критичные операции сохраняются.

  • Оркестрация обновлений — rolling updates, canary, blue/green для минимизации простоя при релизах.

Архитектурные паттерны

  • Active-Active — несколько узлов одновременно обрабатывают нагрузку; преимущества: масштабирование и мгновенная замена; сложность: согласованность состояния.

  • Active-Passive — резервный узел готов, но не обрабатывает трафик; при отказе происходит переключение. Проще реализовать согласованность, но переключение может занимать время.

  • Replication & clustering — БД/сервисы с репликацией (синхронная/асинхронная) и кластерными алгоритмами (Raft, Paxos).

  • Load balancing — распределение трафика по здоровым узлам; health checks для выявления плохих инстансов.

  • Geo-redundancy (multi-region) — копии в разных регионах для защиты от региональных катастроф.

Statefulness vs Stateless

Stateless-сервисы проще масштабировать и восстанавливать. Для stateful-компонентов (БД, очереди, файловые хранилища) нужны дополнительные механизмы: внешние session stores, репликация, согласованные транзакции, snapshot- и WAL-репликация.

CAP и компромиссы

При распределённых системах приходится выбирать между согласованностью, доступностью и устойчивостью к разделению сети. HA часто требует компромиссов: ради доступности можно ослабить строгую согласованность (eventual consistency).

Операция и тестирование

  • Регулярные испытания: failover drills, chaos engineering (симуляция отказов).

  • On-call и runbooks: готовые шаги для быстрого восстановления.

  • Автоматизация recovery: скрипты, orchestration, IaC.

  • Мониторинг SLI/SLO и error budget: предупреждение о сжигании бюджета до SLA-нарушения.

Ограничения и стоимость

Повышенная доступность увеличивает сложность и затраты (дублирование, сеть, согласованность, операционные расходы). Балансирует бизнес-требования: критичные системы требуют больших вложений, менее важные — разумный компромисс.

Практические проверки при проектировании HA

  • какие компоненты являются single point of failure;

  • как работает failover и сколько он занимает;

  • где хранятся состояния и как их синхронизировать;

  • как тестировать recovery и проверять RTO/RPO;

  • какие уровни доступности задать в SLO/SLA и как отслеживать.