Копия, из которой ни разу не восстанавливали, не считается копией
Учение на своём проде 04.09.2026: копия 621 МБ, база поднялась за 19 секунд, файлы за 4, контрольные числа сошлись. До учения все эти цифры были бы догадкой.
Копии делают все. Восстанавливаются из них — единицы, и обычно в тот день, когда выбора уже нет.
Мы провели учение на своём боевом контуре и записали числа.
Что показало учение
04.09.2026. Копия 621 МБ. База поднялась за 19 секунд, файлы — за 4. Контрольные числа сошлись.
Числа приведены с условиями, потому что без них они ничего не значат: 621 МБ — это наш объём, 19 секунд — наше железо. У вас будет другое. Ценность не в цифрах, а в том, что они измерены, а не оценены: до учения на вопрос «сколько занимает восстановление» мы ответили бы «минут пять, наверное».
Что учение находит, кроме времени
Время — самое неинтересное из того, что выясняется. Настоящие находки другие.
Полнота. Копия базы есть, а файлов — нет. Или наоборот. Обнаруживается это на середине восстановления.
Порядок. Что поднимать первым, что зависит от чего, какие миграции надо докатить после разворачивания.
Права. Роль, под которой делается копия, и роль, под которой она разворачивается, — разные, и вторая обычно не пробовалась ни разу.
Контрольные числа. Сколько строк должно оказаться в каждой значимой таблице. Без них «восстановилось» — это «команда отработала без ошибки», а не «данные на месте».
Где лежит копия — половина решения
Копии у нас уезжают к другому провайдеру, а не туда же, где сервер. Причина простая: отказ, из-за которого копия понадобится, часто накрывает площадку целиком — и вместе с сервером уносит копию, лежащую рядом с ним.
Второе решение — про ключ. Ключ, которым платформа заливает копии в хранилище клиента, умеет только писать. Не читать и не удалять.
Это не удобство, а защита от собственной компрометации: тот, кто получит доступ к платформе, не сможет ни прочитать чужие копии, ни стереть их. Проверяется это пробой на настоящем хранилище — заглушка подтвердила бы наши же ожидания.
Как провести учение у себя
Раз в квартал, по календарю, а не по настроению:
- поднимите копию в отдельное окружение — не в бой и не поверх рабочего стенда;
- засеките время каждой части: база, файлы, миграции;
- сверьте контрольные числа — количество строк в трёх-четырёх главных таблицах;
- запишите результат с датой в место, где его найдут через полгода.
Четвёртый пункт не бюрократия: без записи следующее учение начнётся с вопроса «а сколько было в прошлый раз», и ответа не будет.
Что из этого следует
«У нас есть бэкапы» — это утверждение о процессе, а не о результате. Проверяемое утверждение звучит иначе: «мы восстанавливались такого-то числа, это заняло столько-то, сошлись такие-то числа».
Разница между этими двумя фразами — примерно вся разница между спокойствием и его видимостью.
У нас копии клиентских приложений уезжают в хранилище самого клиента ключом, который умеет только писать. Как устроен выкат и что он умеет откатывать — Деплой из Git.
Читайте также
- Код или миграция первым: порядок, который зависит от направленияПравило одно и оно несимметрично. Сносите колонку — сначала выкат, потом миграция. Добавляете — наоборот. Ошибка порядка даёт несколько минут сломанного экрана на бою.
- Зелёный гейт, который ничего не проверил, опаснее красногоЗа один день нашлись три: проверка секретов зеленела на обрезанной истории, проверка зависимостей принимала пустой ответ за «уязвимостей нет», третья не запускала сравнение ни разу.
Автор
Александр ЦапковОснователь Скоупворк
Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.