Как спроектировать систему с SLA 99.9%? Что такое failover?
Подробный ответ
Что означает 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 не считается рабочим.
Оцени свой прогресс