Сначала – почисти всё к чёрту. Лишние плагины, битые ссылки, устаревшие баннеры с акцией «до 2022 года» (серьёзно, ты их до сих пор не убрал?). Просто пройдись по каждой вкладке админки и задавай себе один вопрос: «Это вообще кому-то нужно?» Если не знаешь – выкидывай. Пускай лучше потом спросят, чем ты будешь держать хлам десятилетиями.
У меня как-то был проект – блог, в котором с 2015 года никто ничего не трогал. Дизайн на Bootstrap 2, кнопка «О нас» вела на страницу с заглушкой «Скоро». Обновили движок – и всё рухнуло. Почему? Потому что перед этим мы не удосужились выбросить хотя бы половину старья. Лень дорого стоит.
Проверь, что работает. И что вообще живое
Иногда кажется, что всё норм: картинки загружаются, текст на месте, кнопка «Купить» светится зелёным. А потом заходишь с Safari на айфоне – и сайт ведёт себя как пьяный на льду. То элементы прыгают, то попапы не закрываются. Проверяй на устройствах, проверяй в браузерах, проверяй с кривыми руками. Потому что твои пользователи – это не ты, и у них может быть всё что угодно.
Кстати, включи VPN и открой сайт с Германии или Японии. Удивишься, сколько всего не грузится.
Сделай себе список. Бумажный. Или хотя бы в Notion
Я не шучу. Открываешь Notion (или хоть бы Google Docs), и выписываешь:
- Удалить устаревшие плагины
- Проверить на телефонах
- Очистить кэш
- Отключить A/B тесты, которые шли с прошлого квартала
- Сделать бэкап. Нет, СДЕЛАТЬ БЭКАП
Если не сделал список – забудешь половину, и потом будешь рыдать, когда всё разъедется и кнопка «оплатить» исчезнет с лендинга, потому что там был какой-то скрипт на jQuery 1.7.1.
Не трогай, если боишься
Да, это не шутка. Бывает, что ты такой: «Сейчас чуть подправлю меню, это же просто шрифт заменить». А потом внезапно отваливается адаптив. Или сбрасываются все настройки темы. Или хуже – вообще белый экран. Если внутренне дрожишь – лучше спроси у того, кто это писал. Или у человека, который умеет гуглить с правильными словами.
Потому что чинить на горячую – это ад. Особенно если прод уже работает, а ты вносишь правки через FTP как в 2009 году.
И последнее. Поставь себе напоминание через месяц
После того как всё «обновится», может ничего не сломаться. И это самое коварное. Потому что ошибки вылезают не сразу. Где-то что-то не записалось, где-то криво отрендерилось, где-то интеграция умерла, но молчит. Поэтому ставь себе событие: через месяц вернись, проверь снова. Сам себя поблагодаришь.
И не забывай: ты живой человек, а не DevOps из фантазий стартапа. Делай ошибки, но делай их осознанно.
Проверка совместимости текущих плагинов и CMS с предстоящей версией
Сначала – отключи автoобновление. Серьёзно
Не шучу. Видел, как сайт на WordPress вылетал с белым экраном сразу после ночного обновления ядра – только потому, что какой-то милый плагин для SEO, который никто не трогал годами, внезапно решил, что пора в рай.
Отключай автообновления всего подряд – ядра, тем, плагинов. Да, это хлопотно. Да, всё надо будет ставить руками. Но ты хотя бы будешь знать, кто именно устроил фейерверк, если всё полетит. А оно почти всегда летит.
Проверяй каждый модуль, как будто он – подозрительный сосед
Да, звучит странно, но поверь – ты и не знаешь, сколько всего уже накопилось. Особенно если ты добавлял какие-то «временные» решения «на один проект». Ну, ты понял.
- Зайди в консоль и выпиши весь список расширений. Да, вручную.
- Пробей по каждому: есть ли свежие апдейты под новую версию CMS?
- Нет апдейта больше года? Смело удаляй. Или замени.
- Есть обновление, но с кучей багов в issue? Ищи альтернативу.
Иногда даже большой, казалось бы, надёжный плагин оказывается мертвецом с красивым логотипом. Я однажды наткнулся на плагин, у которого был красивый UI, но внутри – jQuery 1.8 и куски inline JS из 2012 года. Ну ок, ностальгия.
CMS тоже не святой
Тут тонкий момент: разработчики движка обычно не думают о твоём сайте. Им надо выпускать новую версию, красивую и с “инновациями”. А ты потом сиди и чини, потому что твоя тема вообще-то была написана под прошлую эпоху.
Зайди в change log будущей версии (обычно его публикуют заранее). И не просто глянь на заголовки. Почитай, какие функции устарели или были удалены. Особенно если используешь кастомную тему или редактировал ядро напрямую (а ты ведь редактировал, признайся).
Тестируй на клон-сайте. Да, это дополнительная возня
Но блин, это работает. Сделай копию сайта на поддомене, развёрни туда всё один в один и начни обновлять по очереди. Сначала движок, потом темы, потом плагины. Каждый шаг – и проверяй, не разъехалось ли что-нибудь.
Иногда даже просто подключение нового модуля линкбилдинга ломает CSS-структуру. Или плагин “оптимизации изображений” внезапно удаляет альты и рушит AEO-семантику. И ты такой сидишь потом, читаешь про AEO и думаешь: “А зачем вообще это всё начиналось?”
Немного грязи – это нормально
Честно, всё идеально не будет. Где-то стили съедут. Где-то JS выдаст ошибку в консоли, а ты даже не поймёшь, откуда она. Но это не повод всё бросать. Обновления – как ремонт на кухне: сначала всё ломается, потом постепенно чинится, а через месяц ты уже забываешь, что было страшно.
Так что проверь всё заранее. Не надейся на авось. И да, бэкап. Всегда бэкап.
Создание резервной копии с возможностью быстрого отката
Сделай бэкап. Да, прямо сейчас
Ты думаешь: «Да всё будет норм, у меня ж хостинг надёжный». А потом – бах, белый экран смерти, и ты гуглишь, как восстановить прошлую версию сайта через Wayback Machine. Спойлер: плохо восстанавливается. Сделай копию. Перед каждым изменением. Не после, не потом. До. Это не паранойя – это гигиена. Как мыть руки, только для файлов.
Автоматизация или ручками?
Если ты на WordPress – бери плагин, типа UpdraftPlus или Duplicator. Поставил – и забыл. Ну почти. Всё равно проверяй, что оно реально делает бэкапы, а не просто пишет в лог «успешно завершено», а в папке – ноль байт. Я так однажды попал. Бэкап был. Только нерабочий. Ржал сквозь слёзы.
Откат без паники
Главное – не просто скопировать всё подряд, а иметь схему. Типа: вот архив файлов, вот дамп базы, вот конфиги. Всё лежит в одном месте, по дате. И если что – восстанавливается за 10 минут, а не за 3 дня с матерками и чаем в 3 ночи. Прямо как сейв в игре. Сделал перед боссом – и готов проиграть.
Совет: тестируй на копии
Если что-то серьёзное собираешься менять – сначала разверни сайт на поддомене или локалке, протестируй там. Не трогай боевой прямо руками. Это как чинить электропроводку под напряжением. Да, иногда всё работает. Но иногда нет – и тогда аааа…
Кейс, который до сих пор щемит
Был у меня клиент, который решил «просто обновить тему». Без бэкапа, конечно. Ушло всё. И дизайн, и кастомные поля, и то самое меню, которое они три недели согласовывали. Мы потом собирали всё по крошкам, как в «Игре в кальмара», где никто не выжил. Не повторяй их судьбу.
Где хранить – не в одном месте
Локально на диск, плюс в облако. Google Drive, Dropbox, хоть на флешку на шнурке. Но не только на хостинге. Если упадёт сервер – упадёт и твой «резерв». Бэкап без доступа – не бэкап, а иллюзия контроля.
Мой ритуал (вдруг пригодится)
- Проверяю, есть ли свежий бэкап.
- Сохраняю текущую версию (файлы + база).
- Заливаю на облако и локальный диск.
- Делаю скриншоты интерфейса (иногда это помогает восстановить UI, серьёзно).
После этого могу крутить-вертеть что угодно. Спокойно. Потому что знаю: если всё развалится, у меня есть кнопка «назад».
А если лень?..
Ну, скажем честно, всем лень. Пока не случится факап. Потом лень быстро проходит. Я видел это не раз. Поэтому ты или делаешь копию – или живёшь в режиме русской рулетки. Сайт твой, выбор тоже твой.
Тестирование всех пользовательских сценариев в промежуточной среде
Проверь самую странную штуку, которую может сделать юзер
Нет, серьёзно. Представь, что кто-то решит залогиниться, потом выйти, потом снова залогиниться, но с другой вкладки. Потом открыть корзину, добавить туда пять одинаковых товаров, удалить три, обновить страницу, и… ничего не должно сломаться. Это не шутка – такие фокусы случаются постоянно. И если ты не обкатал это заранее на тестовом куске, то… поздравляю, баг у тебя в проде.
Сделай так, чтобы тебя бесило
Попробуй поиграть в пользователя, который вообще не читает ничего. Просто кликает куда попало. Тыкает по иконке, потом назад, потом свайпает (да, даже если это десктоп, он может быть с тачскрином), потом раз, и залезает в «забыли пароль»… Зачем? Не знаю. Но он точно это сделает. Сделай, чтобы даже такой хаос не рушил логики. Чтобы ты сам начал злиться, насколько всё предсказуемо работает – вот тогда да, можно выдохнуть.
Отдельный стенд – не роскошь, а спасение от катастроф
О, да. Если ты думаешь, что можно просто выкатить изменения и «ну, протестим на живом трафике» – стоп. Не надо так. Лучше завести промежуточную песочницу, пусть будет уродливая, с демо-базой и фиктивными пользователями. Главное – чтобы там можно было разгуляться. Без страха всё сломать. Там ты можешь наворотить любых сценариев, хоть «пользователь оформляет заказ и умирает во время оплаты» – главное, чтобы ты видел, как всё поведёт себя в экстремуме.
Мультиплатформенность? Ага, и холодильник в счёт
Чел, я однажды видел, как клиент заходил на корпоративный портал с холодильника Samsung. Там была операционная система, браузер и даже всплывающие окна. Ты никогда не угадаешь, с чего люди пытаются попасть в интерфейс. Проверь: iOS, Android, десктоп, разные браузеры (да, Safari – он ещё существует), и, прости Господи, Internet Explorer – он тоже ещё где-то живёт. Не проверил? Жди сюрпризов. А они будут не из приятных.
Примеры из личного
Был случай: тестировали только happy path – пользователь логинится, оформляет заказ, уходит счастливым. А потом пришёл один тип и просто оставил сессию открытой на сутки. Сайт заглючил, корзина потерялась, а сам он потом жаловался, что его выгнали с акции. Всё потому, что не проверили сценарий «юзер залип на странице, а потом ожил». Проверили бы – не было бы фейла.
Итог? Его нет
Это бесконечный процесс. Сегодня ты придумал 30 сценариев, завтра найдут 31-й. Но хотя бы не притворяйся, что можно всё предусмотреть за один заход. Делай, тестируй, ломай, снова делай. Это не лаборатория – это ближе к репетиции стендапа. Никогда не знаешь, на какой шутке рванёт. А надо быть готовым ко всему. Особенно к холодильнику Samsung.