Старый самописный движок редко падает громко. Он держится на одном человеке, которого уже нет, на версии языка, которую перестали обновлять, и на догадках о том, что именно делает вот этот файл. Пока сайт открывается, кажется, что всё в порядке; беда приходит в день, когда нужно добавить поле в форму, а вместо поля ломается оформление заказа. Я занимаюсь именно этим переходом: увожу сайт с такого движка на решение, которое поддерживают, обновляют и умеют читать не только его автор.
Начинаю не с кода новой версии, а с описи. Сажусь за старые исходники и за структуру базы и выписываю, что живо: какие страницы открывают люди, какие формы отправляют, какие роли различаются правами, какие задачи по расписанию реально отрабатывают, а какие таблицы не пополнялись с позапрошлого года. Переписывание «с нуля» без описи функций всегда теряет половину мелочей, поэтому опись делается до работ и согласуется с вами — и потом служит списком, по которому мы вдвоём принимаем результат. Данные едут с постраничной сверкой количества и проверкой связей, адреса старых страниц получают перенаправления, шаблоны и формы переезжают вместе с проверками полей, устаревшие библиотеки уходят, настройки отделяются от кода.
Отдельно про приёмку и про страховку, потому что тут чаще всего договариваются молча и зря. Перенос считается состоявшимся после сверки количества записей и выборочной проверки содержимого, а не после того, как сайт открылся в браузере. Старая версия и копия базы сохраняются до конца гарантийного срока: пока срок идёт, есть эталон для сравнения и путь назад. Переезд разбит на этапы так, чтобы действующий сайт ни дня не стоял, а ваши сотрудники к моменту переключения уже умели работать в новом — на это есть письменная инструкция и разбор вживую.
Из чего складывается работа:
— чтение старого кода и структуры базы, письменная опись живого и мёртвого;
— согласование описи до начала переноса;
— перенос данных со сверкой количества записей и связей;
— перенаправления со старых адресов, чтобы не потерять поисковый трафик;
— перенос шаблонов, форм и писем, которые эти формы отправляют;
— замена устаревших библиотек и вынос настроек из кода;
— инструкция и обучение сотрудников;
— поэтапный план переключения без остановки сайта.
Начинаю не с кода новой версии, а с описи. Сажусь за старые исходники и за структуру базы и выписываю, что живо: какие страницы открывают люди, какие формы отправляют, какие роли различаются правами, какие задачи по расписанию реально отрабатывают, а какие таблицы не пополнялись с позапрошлого года. Переписывание «с нуля» без описи функций всегда теряет половину мелочей, поэтому опись делается до работ и согласуется с вами — и потом служит списком, по которому мы вдвоём принимаем результат. Данные едут с постраничной сверкой количества и проверкой связей, адреса старых страниц получают перенаправления, шаблоны и формы переезжают вместе с проверками полей, устаревшие библиотеки уходят, настройки отделяются от кода.
Отдельно про приёмку и про страховку, потому что тут чаще всего договариваются молча и зря. Перенос считается состоявшимся после сверки количества записей и выборочной проверки содержимого, а не после того, как сайт открылся в браузере. Старая версия и копия базы сохраняются до конца гарантийного срока: пока срок идёт, есть эталон для сравнения и путь назад. Переезд разбит на этапы так, чтобы действующий сайт ни дня не стоял, а ваши сотрудники к моменту переключения уже умели работать в новом — на это есть письменная инструкция и разбор вживую.
Из чего складывается работа:
— чтение старого кода и структуры базы, письменная опись живого и мёртвого;
— согласование описи до начала переноса;
— перенос данных со сверкой количества записей и связей;
— перенаправления со старых адресов, чтобы не потерять поисковый трафик;
— перенос шаблонов, форм и писем, которые эти формы отправляют;
— замена устаревших библиотек и вынос настроек из кода;
— инструкция и обучение сотрудников;
— поэтапный план переключения без остановки сайта.