Отказоустойчивость — это про то, что происходит, когда что-то ломается, и решено это заранее, а не в момент инцидента. В AWS ломается всё: инстансы, зоны, изредка целые регионы. Вопрос не «упадёт ли», а «что тогда произойдёт» — и ответ задаётся архитектурой и планом восстановления, а не надеждой.
Multi-AZ против multi-region
Два уровня защиты с разной ценой:
- Multi-AZ — ресурсы в нескольких зонах доступности одного региона. Защищает от отказа зоны (датацентра). Дёшево, низкая задержка между зонами, встроено в обычную архитектуру (ASG по зонам, RDS Multi-AZ). Это база, которую делают почти всегда.
- Multi-region — копия в другом географическом регионе. Защищает от отказа целого региона (редкое, но катастрофическое событие). Дорого и сложно (репликация данных через расстояние, согласованность, переключение). Делают для критичных систем, где простой региона недопустим.
Правило: multi-AZ — почти всем; multi-region — только когда требования к доступности это оправдывают, потому что цена резко выше.
RPO и RTO
Два числа задают требования к восстановлению, и их спрашивают первым делом:
- RPO (Recovery Point Objective) — сколько данных допустимо потерять, измеряется временем. RPO = 5 минут означает «потерять не больше последних 5 минут». Определяет частоту репликации/бэкапов.
- RTO (Recovery Time Objective) — за сколько нужно восстановиться. RTO = 1 час означает «сервис снова работает в пределах часа». Определяет стратегию DR.
Чем меньше RPO/RTO, тем дороже решение. Их задаёт бизнес (что стоит простой и потеря данных), а инженер выбирает под них стратегию.
Стратегии DR
Четыре стратегии по возрастанию цены и скорости восстановления:
- Backup & restore — только бэкапы; при катастрофе разворачиваешь заново. Дёшево, но RTO/RPO большие (часы).
- Pilot light — минимальная копия ядра (например, реплика базы) работает постоянно, остальное поднимается при аварии. Меньше RTO, умеренная цена.
- Warm standby — уменьшенная, но рабочая копия всей системы в резерве; при аварии масштабируется до полной. Малый RTO, заметная цена.
- Multi-site active-active — полноценные копии работают одновременно в нескольких регионах. RTO около нуля, но самое дорогое и сложное.
Выбор — по RPO/RTO и бюджету: не строить active-active там, где хватает pilot light.
Backup — и проверка
Бэкап без проверенного восстановления — не бэкап, а иллюзия. Регулярные автоматические бэкапы (с нужной по RPO частотой и сроком хранения) обязательны, но столь же обязательны учения: периодически восстанавливаться из бэкапа и убеждаться, что это работает и укладывается в RTO. Самый частый провал DR — «бэкапы были, но не восстановились».
Где это в UCP
Отказоустойчивость и DR — это заранее принятое решение «что при отказе»: multi-AZ как база, multi-region по необходимости, стратегия DR под заданные RPO/RTO, проверенные бэкапы. Это инфраструктурная сторона resilience-паттернов (которые в коде решают отказ зависимостей). Reliability — столп Well-Architected; для backend-разработчика честный ответ на «что будет, если упадёт зона/регион и как мы восстановимся» — часть определения готового к проду сервиса, как масштабирование и наблюдаемость.