Миграция и резервный регион
«Клуб» меняет структуру данных и готовит резервный регион. Остановить приложение на время переноса нельзя: пользователи продолжают сохранять прогресс, а старая и новая версии сервиса некоторое время работают вместе. Подготовьте план изменения, при котором можно проверить полноту данных и безопасно отступить.
Все числа — учебные ограничения. Разделяйте плановую миграцию структуры и аварийное переключение региона: у них разные причины и условия завершения.
Ограничения
Нужно обработать 20 млн записей. Фоновое заполнение новой структуры, или backfill, ограничено скоростью 2 000 строк в секунду. Старая и новая версии приложения работают одновременно 24 часа. Межрегиональная репликация асинхронная: подтверждение записи не означает, что она уже попала во второй регион.
Допустимая потеря данных по времени, RPO, — не более 5 минут. Целевое время восстановления, RTO, — не более 30 минут. Покажите, от какого события отсчитывается каждый интервал и как проверяется соблюдение цели.
Что подготовить
Разбейте миграцию на четыре этапа: совместимое расширение структуры, фоновое заполнение, проверка полноты и удаление старого представления. Для каждого укажите условие входа, наблюдаемый прогресс и возможность отката. Объясните, как переносятся записи, изменённые пользователями во время фоновой обработки.
Опишите переключение на резервный регион и возвращение в основной. Укажите, кто вправе разрешить запись и как старый узел лишается этого права. Такое принудительное ограничение называют fencing: прежний владелец не должен продолжать изменять данные после передачи полномочий.
Подсказка
Совпадение числа строк не доказывает совпадение их содержимого. Продумайте проверку версий, контрольных сумм или результатов выборок. Не удаляйте старую структуру, пока работающие экземпляры приложения ещё зависят от неё.
Как проверить решение
Теоретический минимум фонового заполнения — примерно 2 часа 47 минут без накладных расходов. Объясните, почему реальный срок может быть больше. Откат приложения не должен терять записи, созданные новой версией. Укажите способ измерения отставания репликации и действие при превышении RPO: например, отказ от обещания безопасного переключения до выяснения состояния. Одного наличия резервного региона недостаточно для гарантии восстановления.
Усложнение
Старый регион продолжает работать, но оператор не может с ним связаться. Покажите, как предотвратить одновременную независимую запись в двух регионах, и какую доступность придётся ограничить.
Как оформить ответ
Сохраните пошаговый план, условия отката и проверки восстановления в тетради. Сравните две стратегии миграции и предложите репетицию аварии. Оценка архитектуры не автоматизирована.
Запишите ход рассуждений, расчёты и вопросы. Сохраните текст перед уходом со страницы. После входа в аккаунт ответ участвует в общей синхронизации прогресса. Автоматической оценки архитектуры здесь нет.