Короткий ответ
План DR должен включать: заранее реплицированные данные во второй регион с известным RPO, инфраструктуру во втором регионе как код (готовую к развёртыванию или уже развёрнутую в режиме standby), механизм переключения трафика (DNS/балансировщик) и, что важно, регулярно протестированные учения по переключению (DR drill), а не только документ "на бумаге".
Как это работает подробнее
типичные компоненты — межрегиональная репликация БД (синхронная или асинхронная, в зависимости от допустимого RPO и влияния на latency), инфраструктура во втором регионе через Infrastructure as Code (чтобы развернуть идентичное окружение быстро и предсказуемо), и переключение входящего трафика через изменение DNS-записей или глобального балансировщика с учётом TTL записей (который влияет на реальное RTO).
Пример / кейс
Ожидаемое поведение: регулярные drill должны либо подтверждать, что реальное время переключения укладывается в целевое RTO, либо выявлять конкретные блокеры (устаревшие секреты, забытые зависимости) до того, как это случится при настоящем отказе региона.
Пример кода
DR drill checklist (раз в квартал):
1. Инициировать контролируемое переключение 10% трафика на DR-регион.
2. Проверить работоспособность критичных сценариев (логин, оплата) через DR-регион.
3. Замерить фактическое время переключения и сравнить с целевым RTO.
4. Вернуть трафик обратно, зафиксировать найденные проблемы как action items.Что использовать на практике
- Практический подход. Без регулярных DR drill (например, раз в квартал реальное переключение на второй регион, хотя бы для части трафика) план почти наверняка не будет работать в реальном инциденте — устаревшие IAM-права, забытые секреты, недоступные во втором регионе, несовместимые версии инфраструктуры обнаруживаются только при реальной попытке переключения. План должен учитывать и "частичные" отказы — например, облачный провайдер жив, но деградирует один конкретный сервис.
Подводные камни
- Частые ошибки. Писать DR план только как документ, никогда не проверяя его на практике; не учитывать TTL DNS записей при расчёте RTO (переключение DNS может занять намного дольше, чем ожидалось, если TTL был выставлен слишком большим); хранить секреты/конфигурацию только в основном регионе, из-за чего второй регион не может по-настоящему подняться без доступа к первому.