PRO

Как спроектировать систему с SLA 99.9%? Что такое failover?

SLA 99.9% означает допустимую недоступность около 43 минут 50 секунд за 30-дневный месяц. Чтобы приблизиться к такому уровню, нужно устранять единичные точки отказа, использовать несколько реплик и зон доступности, health checks, мониторинг, проверенный failover, backup и реалистичные SLO/SLI.
Подробный ответ

Что означает 99.9%

Доступность 99.9% часто называют «три девятки». За 30-дневный месяц это оставляет около 43 минут 50 секунд допустимой недоступности. Важно заранее определить, что именно измеряется: успешность HTTP-запросов, доступность критичного сценария, latency ниже порога или доступность конкретного региона.

SLA, SLO и SLI

  • SLI — измеряемый индикатор, например доля успешных запросов;

  • SLO — целевое значение, например 99.9% успешных запросов за месяц;

  • SLA — внешнее обязательство перед клиентом, часто с последствиями при нарушении.

Базовая HA-архитектура

Clients
  |
Highly available Load Balancer
  |
+--------------------------+
| API replicas in Zone A   |
| API replicas in Zone B   |
+--------------------------+
  |
Replicated database
  |
Backups and disaster recovery

Что такое failover

Failover — автоматическое или ручное переключение трафика, роли или нагрузки с неисправного компонента на резервный. Например, load balancer перестаёт направлять запросы на unhealthy API-instance, а база переключается с primary на standby после подтверждённого отказа.

Что нужно для 99.9%

  • несколько stateless application replicas за load balancer;

  • размещение критичных компонентов в нескольких availability zones;

  • readiness и liveness checks, connection draining и graceful shutdown;

  • репликация БД, регулярные backup и проверка восстановления;

  • централизованные метрики, логи, tracing и actionable alerts;

  • rate limiting, circuit breaker и деградация некритичных функций;

  • runbooks, on-call процесс и регулярные failover drills.

RTO и RPO

RTO, Recovery Time Objective, определяет допустимое время восстановления. RPO, Recovery Point Objective, определяет допустимый объём потери данных. Эти параметры определяют требования к репликации, backup и процедуре восстановления.

Как ответить на собеседовании

Для SLA 99.9% сначала определяю SLI и error budget, затем устраняю single points of failure: несколько реплик приложения за HA load balancer, multi-AZ размещение, реплицируемая БД, health checks и мониторинг. Failover — это переключение с неисправного компонента на резервный. Я также фиксирую RTO/RPO и регулярно тестирую восстановление, потому что непроверенный failover не считается рабочим.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге