Копии и выкат

Копия, из которой ни разу не восстанавливали, не считается копией

Учение на своём проде 04.09.2026: копия 621 МБ, база поднялась за 19 секунд, файлы за 4, контрольные числа сошлись. До учения все эти цифры были бы догадкой.

Александр Цапков10 сентября 20262 мин

Копии делают все. Восстанавливаются из них — единицы, и обычно в тот день, когда выбора уже нет.

Мы провели учение на своём боевом контуре и записали числа.

Что показало учение

04.09.2026. Копия 621 МБ. База поднялась за 19 секунд, файлы — за 4. Контрольные числа сошлись.

Числа приведены с условиями, потому что без них они ничего не значат: 621 МБ — это наш объём, 19 секунд — наше железо. У вас будет другое. Ценность не в цифрах, а в том, что они измерены, а не оценены: до учения на вопрос «сколько занимает восстановление» мы ответили бы «минут пять, наверное».

Что учение находит, кроме времени

Время — самое неинтересное из того, что выясняется. Настоящие находки другие.

Полнота. Копия базы есть, а файлов — нет. Или наоборот. Обнаруживается это на середине восстановления.

Порядок. Что поднимать первым, что зависит от чего, какие миграции надо докатить после разворачивания.

Права. Роль, под которой делается копия, и роль, под которой она разворачивается, — разные, и вторая обычно не пробовалась ни разу.

Контрольные числа. Сколько строк должно оказаться в каждой значимой таблице. Без них «восстановилось» — это «команда отработала без ошибки», а не «данные на месте».

Где лежит копия — половина решения

Копии у нас уезжают к другому провайдеру, а не туда же, где сервер. Причина простая: отказ, из-за которого копия понадобится, часто накрывает площадку целиком — и вместе с сервером уносит копию, лежащую рядом с ним.

Второе решение — про ключ. Ключ, которым платформа заливает копии в хранилище клиента, умеет только писать. Не читать и не удалять.

Это не удобство, а защита от собственной компрометации: тот, кто получит доступ к платформе, не сможет ни прочитать чужие копии, ни стереть их. Проверяется это пробой на настоящем хранилище — заглушка подтвердила бы наши же ожидания.

Как провести учение у себя

Раз в квартал, по календарю, а не по настроению:

  1. поднимите копию в отдельное окружение — не в бой и не поверх рабочего стенда;
  2. засеките время каждой части: база, файлы, миграции;
  3. сверьте контрольные числа — количество строк в трёх-четырёх главных таблицах;
  4. запишите результат с датой в место, где его найдут через полгода.

Четвёртый пункт не бюрократия: без записи следующее учение начнётся с вопроса «а сколько было в прошлый раз», и ответа не будет.

Что из этого следует

«У нас есть бэкапы» — это утверждение о процессе, а не о результате. Проверяемое утверждение звучит иначе: «мы восстанавливались такого-то числа, это заняло столько-то, сошлись такие-то числа».

Разница между этими двумя фразами — примерно вся разница между спокойствием и его видимостью.


У нас копии клиентских приложений уезжают в хранилище самого клиента ключом, который умеет только писать. Как устроен выкат и что он умеет откатывать — Деплой из Git.

Деплой из Git на свои серверыВыкат из git на свои серверы: домены, сертификаты, проверка здоровья, откат одной кнопкой.

Читайте также

Автор

Александр ЦапковОснователь Скоупворк

Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.