Если ваш сайт работает на Drupal 8, это самая важная для вас статья на ближайшие месяцы — начиная со 2 ноября 2021 года ему угрожает опасность морального и технического устаревания. Мы подробно рассказываем о пользе миграции на Drupal 9 и вреде от откладывания этой задачи на потом.
Начинаем обратный отсчёт
Чем ближе 2 ноября 2021 года, тем ближе конец поддержки Drupal 8. Этот рубеж легко было не заметить на фоне прошлогоднего подарка предпринимателям с сайтами на Drupal 7, за которым сообщество будет приглядывать до 28 ноября 2022 года.
Почему версия 11-летней давности оказалась живучее более новой? Во-первых, у Drupal 8 и PHP-фреймворка Symfony 3 общая кодовая база. Поддержка Symfony 3 заканчивается в ноябре 2021 года, а значит, с Drupal 8 мы тоже попрощаемся. Во-вторых, как мы уже сказали, Drupal 7 получает обновления ядра и безопасности по доброй воле разработчиков, решивших не обременять предпринимателей затратной миграцией на версию посвежее — они и без того понесли убытки от коронавируса.
Drupal 8 стал в каком-то смысле революционным продуктом: объединение с Symfony позволило разработчикам использовать в работе принципы ООП, а включение в ядро пакетного PHP-менеджера Composer облегчило загрузку и обновление файлов и зависимостей в ядре, а также добавление модулей или тем. Drupal 9 унаследовал эти изменения и предлагает много новых, в его развитие вливаются основные силы разработчиков, которые, разумеется, скажут «Некогда объяснять, мигрируйте ваш сайт немедленно!». И к ним стоит прислушаться, ведь поддержку Drupal 8 остановила даже компания Дриса Бёйтарта Acquia. Но давайте всё-таки разберёмся, почему откладывать миграцию и оставлять сайт на Drupal 8 — это неоправданный риск.
Эта часть статистики использования ядер Drupal наглядно показывает, что волна миграции сайтов на Drupal 9 растёт от месяца к месяцу.
На страже безопасности
Появление новых мажорных версий программных продуктов связано с текущими трендами в технологиях и дизайне. Вы вряд ли пользуетесь телефонами на версии Android от 4 до 8, ведь это несовременно и небезопасно. Именно безопасность — основная причина заняться обновлением Drupal.
Уязвимости в программном обеспечении дают хакерам возможность использовать ваш сайт в своих целях. Эти цели, как можно догадаться, в основном коварные. Представьте, как анонимус управляет сервером, на котором хостится ваш сайт. Или получает права администратора в веб-приложении через уязвимость в JavaScript-библиотеке JQuery. Или размещает на вашем сайте JavaScript-код, который будет либо ломать отображение сайта, либо майнить криптовалюту, либо что-то ещё — зависит от изощрённости хакера.
Это не вымышленные кейсы, а примеры реальных уязвимостей, которые были обнаружены разработчиками Drupal. После обнаружения они правят код ядра и пишут анонс о выходе новой минорной версии ядра с патчем, до которой нужно обновить свой сайт и избежать неприятностей.
Версии с приближающимся EOL перестают получать обновления безопасности даже по критическим уязвимостям. Модули, расширяющие возможности вашего сайта, тоже становятся беззащитны перед действиями посторонних. С поиском хостинга и интеграциями со сторонними приложениями тоже начнутся проблемы — для них сайты будут помечены как небезопасные.
Преимущества Drupal 9
А сообщество тем временем сосредотачивает свои ресурсы на улучшения актуальных версий Drupal. Чем так хорош Drupal 9? Вот всего несколько особенностей:
- улучшенный опыт разработки с Layout Builder и архитектура по принципу API-first (да, всё это уже радовало разработчиков в Drupal 8 и перешло преемнику в наследство). Вместе с этим разработчикам открывается возможность делать сайты по принципу decoupled Drupal, предполагающим раздельную работу части Drupal, отвечающей за формирование и вывод информации для пользователя, и части, отвечающей за хранение данных. Подробнее о преимуществах decoupled Drupal мы говорили в статье про разработку онлайн-магазина на Drupal;
- обновления безопасности будут приходить автоматически;
- в будущем апгрейды до новых версий CMS будут ещё проще, чем переход с Drupal 8 на Drupal 9;
- дважды в год разработчики будут добавлять в Drupal 9 новые функциональные возможности;
- если у вас мало времени на запуск сайта, то с дистрибутивами наподобие Rain CMS его разработка пойдёт гораздо быстрее
Сколько стоит миграция на Drupal 9?
Это некорректный вопрос: оценки подобных задач не берутся с потолка. Гораздо уместнее спросить, что влияет на продолжительность и бюджет миграции на Drupal 9.
Даже несмотря на то, что миграция с Drupal 8 на Drupal 9, по сути, сводится к апдейту самого Drupal, всегда есть шанс, что на сайте окажется контрибный модуль, которым никто им не занимается и который несовместим с Drupal 9. А что если вокруг этого модуля была выстроена значительная часть функционала сайта? Тогда придётся его или заменить, или своими силами обеспечить совместимость с Drupal 9. Кроме модулей остаётся кастомный код, который вызывает устаревшие функции
или методы; такой код сразу удаляется при миграции, и его придётся дорабатывать.
Итак, в случае с Drupal 8 на длительность переноса влияют ядро (чем версия восьмёрки позднее, тем проще), контрибные модули и кастомный код.
Перенос с Drupal 7 на Drupal 9 можно вообще считать сборкой проекта с нуля. Так что приготовьтесь: будет дорого. Но если очень постараться, то можно сделать у сайта такую же структуру и в случае полного совпадения разметки не переписывать (или переписать минимально) CSS. Но что быстрее — сверстать сайт с нуля или попробовать адаптировать стили — это открытый вопрос.
Есть ли способы сэкономить на миграции?
Поднимать такой вопрос нормально. В первую очередь возможность сэкономить зависит от того, с какого ядра вы совершаете миграцию. Если это Drupal 8, вы поддерживаете сайт и следите за обновлениями, то благодаря общей кодовой базе этих версий миграция пройдёт быстро и незатратно. Владельцам же сайтов на Drupal 7, как мы уже сказали, придётся чуть потруднее.
В предыдущей главе мы говорили про устаревающие и несовместимые с Drupal 9 модули. Здесь вас ждёт ещё одна возможность сэкономить: если функциональность сайта задаётся такими модулями, то насколько она вообще нужна? И нужна ли она, если зависит от большого фрагмента кастомного кода? Момент подготовки к миграции — это время обдумать концепцию сайта и свою бизнес модель, чтобы, возможно, что-то переделать.
Перед миграцией проведите аудит
Аудит для сайта — это то же самое, что медицинское обследование для человека: он нужен для того, чтобы проверить, что в порядке, а что требует профилактики и лечения. Аудит Drupal-сайтов преимущественно затрагивает два момента: контрибные модули и кастомный код.
Контрибные модули
Перед миграцией сайта нужно проверить, есть ли у таких модулей версия, которая поддерживает Drupal 9. Если её нет, ищите патч или попробуйте исправить модуль сами. Если не выходит и это — рассмотрите альтернативы. Как правило, популярные контрибные модули уже адаптированы под Drupal 9, и если работа вашего сайта завязана на какой-то модуль, который еще не поддерживается — это основная проблема.
Кастомный код
Нужно проверить, что он адаптирован под Drupal 9. Помимо этого важно знать, что в Drupal 9 были убраны или заменены некоторые jQuery-библиотеки. Так, jquery.cookie был заменён на js.cookie, и если он используется в кастомном коде для модулей или тем, следует это учесть. Также были удалены из ядра некоторые jQuery UI-библиотеки — теперь их нужно ставить как отдельные контрибные модули.
Как упростить себе аудит? Используйте модуль Upgrade Status. Он даст исчерпывающий ответ на возможность миграции на Drupal 9: покажет, какие модули уже совместимы, а какие надо обновить, есть ли проблемы с кастомным кодом и т. п.
Заключение
Поддержка Drupal 8 заканчивается. Каждый сайт, который работает на неподдерживаемой версии Drupal — это потенциальный рассадник вредоносного кода, от которого пострадаете и вы, и ваши клиенты. Если вы не планируете закрывать ваш бизнес в ближайшее время, срочно найдите веб-студию для миграции сайта на Drupal 9. Обязательно обсудите аудит, чтобы перед миграцией почистить сайт от неработающего кода и неподдерживаемых модулей.