Владелец узнаёт состав копии в тот день, когда сайт уже не открывается. Хостинг или прошлый разработчик раньше говорил, что бэкапы есть, панель показывала зелёную галочку, и разговор на этом заканчивался. Дальше плохое обновление ломает страницы, сотрудник удаляет заказы, злоумышленник взламывает плагин, или сервер перестаёт стартовать. Человек с доступом скачивает архив и видит типичный набор: внутри только база данных с заказами и заявками, а загруженных фото и PDF нет; или внутри только файлы, а заказов нет; или архив лежал на том же сервере, который уже не открывается; или последняя годная копия сделана три недели назад; или пароль от хранилища остался у разработчика, который не отвечает. Если восстановление ещё никто не запускал, на него уходит весь день, и магазин всё это время остаётся без фотографий товаров.
Письмо «копия создана» почти ничего не доказывает. Хостинг сообщает, что задание отработало, а не то, что архив открывается и что в нём лежат и заказы, и фото. Задание один раз настроили и больше не проверяли. Человек, который знал имя хранилища, пароль и папку с загрузками, уволился и не оставил записку. Снимок в панели хостинга покрывает ту машину, которую панель видит, и не включает отдельный сервер базы и хранилище, куда сайт складывает фото.
1. Что оказывается внутри архива
База данных с заказами и заявками, загруженные фото и PDF, настройки и пароли. Это три разных набора. Ночной дамп базы не забирает фото. Копия папки с файлами не забирает заказы, а снимок веб-сервера не забирает базу на другой машине и файлы из отдельного хранилища.
Строка «задание выполняется ежедневно» говорит только о том, что оно запустилось. Она не сообщает, сколько дней назад ещё можно выбрать копию, где лежит самая свежая, сняты ли база и файлы в один момент и кто хранит ключ, если архив зашифрован. Это четыре разных ответа, и каждый из них решает, состоится ли восстановление. Получить их заранее стоит письмом, пока ничего не сломалось: в день поломки тот же перечень уходит в очередь поддержки, которую ведёте не вы.
Место хранения решает не меньше, чем состав. Если единственная копия лежит на том же сервере, сломанный диск забирает и сайт, и бэкап. Копия должна лежать у другого провайдера или хотя бы на другом сервере.
Копию, которую никто не восстанавливал, нельзя считать рабочей. Первая попытка показывает, что базы внутри не оказалось, или что архив писала программа, лицензию на которую компания не продлевает уже три версии и открыть файл сейчас нечем, или что никто не засекал время запуска. Тогда никто не может сказать, вернётся ли сайт до конца рабочего дня, и восстановление превращается в вечер угадывания. Ни одного из этих фактов в письме «задание выполнено» нет.
2. Что записать на этой неделе
Владельцу не нужно читать документацию программы резервного копирования. Он спрашивает человека, у которого ещё есть доступ, и записывает ответы туда, где они останутся у компании.
Если на какой-то пункт ответ звучит как «вроде да», в записку пишут «не проверяли». Такая строка полезнее зелёной галочки, которую никто не открывал.
Раз в квартал владелец восстанавливает копию в отдельном окружении, а не на боевом сайте. На этой копии он открывает несколько настоящих страниц и один недавний заказ или заявку. Время, которое ушло, он записывает рядом, потому что именно эти минуты показывают, сколько займёт настоящая поломка.
У настоящего восстановления есть время начала и время конца. Копию поднимают в отдельном окружении, которое не принимает заказы, и фиксируют два момента: когда начали и когда страницы снова стали работать. Потом сравнивают то, что важно: несколько настоящих страниц, один недавний заказ или заявку, файлы под ним и настройки, из-за которых уходят письма. Восстановление делают вдвоём: человек, который пишет страницу, и человек, который потом по ней идёт, редко совпадают. Заодно выясняется, в чём ошибается ваша записка, какие доступы уже потеряны и какой шаг никто не записал.
Как часто повторять, решают сами данные. Для сайта-визитки, который собирается заново из репозитория, квартальной попытки достаточно. Магазин в сезон, клиника, чьи записи живут в одной базе, и офис, который рассылает счета по сохранённым документам, не должны ждать квартал; месяц без доказанного восстановления означает месяц записей, которые никто не соберёт заново. Полезный вопрос, который задают заранее: что исчезнет, если окажется, что самой свежей копии месяц, и сколько дней бизнес проработает без этих данных.
Пробное восстановление нельзя запускать на проде, потому что эта копия не должна принимать заказы клиентов. Как устроить отдельное окружение до правки боевого сайта, разобрано в заметке почему не стоит править прод без тестовой среды. В техническом аудите тот же факт стоит отдельной строкой: восстановление либо доказано, либо его ещё не было.
3. Что остаётся после одной сессии
Специалист за одну встречу составляет перечень и один раз восстанавливает копию. На выходе одна страница: что скопировано, где лежит архив, как его восстановить и у кого есть доступ. Это не смена хостинга и не новый договор на поддержку.
Эта страница нужна следующему человеку больше, чем история программы. На ней: что копируется, когда запускается задание, где лежит архив, какой программой его открыть, у кого доступы и в каком порядке идут шаги восстановления. Страница дешевле любой аварии из списка выше, и она переживает смену хостинга, уход разработчика и внутреннее движение в компании. Без неё знание живёт в памяти одного человека и заканчивается вместе с ним.
Такая работа относится к обычной поддержке уже работающей системы. В услугах она описана отдельно от нового продукта, а в работах видны похожие унаследованные сайты, и каждый результат стоит рядом со своей операцией. Никто в команде ещё не видел восстановление, и никто не записал, что копируется; Приёмка и поддержка Laravel даст и ту страницу, и одно восстановление, которое вы увидите. Если нужна эта страница, пришлите, что хостинг считает скопированным и кто ещё помнит вход. Всё, где есть пароль, остаётся на вашей стороне.