План отката: зачем он нужен при переезде

Перед переездом все обсуждают, как всё пройдёт хорошо. Заметно реже обсуждают, что делать, если пойдёт плохо. План отката — это заранее записанный ответ на вопрос «как вернуть всё как было». Он нужен не потому, что мы ждём провала, а потому что решение о возврате приходится принимать быстро и на нервах, а в таком состоянии люди плохо придумывают порядок действий.

Что такое план отката

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

Ключевое слово — «заранее». План, который придумывают в момент аварии, планом не является.

Почему «вернём DNS обратно» — это не план

Самая распространённая иллюзия звучит так: если что-то пойдёт не так, мы просто переключим DNS обратно на старый сервер, и всё станет как было. На практике мешают три вещи.

DNS возвращается не мгновенно. Это та же история, что и при переезде: часть посетителей ещё какое-то время будет попадать на новый сервер. Если TTL заранее не снижен, речь идёт о часах.

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

Старая площадка может быть уже не в том состоянии. Её нередко начинают чистить сразу после переезда: отключают службы, снимают лицензии, освобождают ресурсы. Возвращаться становится некуда.

Из чего состоит рабочий план

  • Точка возврата. К какому именно состоянию возвращаемся: дата и время снимка, где он лежит, кто умеет его развернуть.
  • Действия с DNS. Какие записи менять, на какие значения, какой TTL стоит прямо сейчас.
  • Что делать с данными, накопленными на новом сервере. Выгрузить заказы за период, забрать письма, сохранить загруженные файлы. Даже при срочном возврате эти данные должны быть куда-то сложены, а не потеряны.
  • Кто принимает решение. Один человек, имя которого записано заранее. Не «решим вместе» — в три часа ночи это не работает.
  • Кого предупредить: клиентов, свою поддержку, платёжный сервис.
  • Сколько времени займёт откат. Если шесть часов — это надо знать до переезда, а не выяснять в процессе.

Точка невозврата

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

Хороший план честно называет эту точку. Тогда решение «продолжаем или возвращаемся» принимается вовремя, а не тогда, когда возвращаться уже дороже, чем чинить.

Когда откатываться, а когда чинить на месте

Не всякая проблема требует отката. Опечатка в конфигурации, не заработавший плагин, съехавшая вёрстка — это чинится там же, где случилось.

Откат оправдан, когда:

  • данные теряются или повреждаются прямо сейчас;
  • проект недоступен, а причина непонятна и не находится за разумное время;
  • проблема массовая — не проходит оплата, не отправляются письма, не открываются страницы у всех подряд.

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

Коротко

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

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