Как объединить два сайта
на Drupal
и устранить технический долг
без потери функциональности

не хватает текста
Клиент: Сайт международной ассоциации производителей упаковки из картона International Packaging Group Association.

Отрасль: промышленность, упаковка.

Услуги:

  • Миграция сайта с Drupal 7 на Drupal 8
  • Объединение двух независимых сайтов в единую систему
  • Рефакторинг legacy PHP-кода
  • Работа с техническим долгом и его сокращение
  • Перенос и адаптация сложной структуры данных
  • Сохранение и проверка расчётной логики (формулы статистики и гистограмм)
  • Оптимизация производительности и кэширования
  • Развитие и поддержка существующей Drupal-архитектуры

Технологии: Drupal 7, Drupal 8, PHP, MySQL, кэширование на уровне приложения, серверная обработка данных и формул для статистики.

О клиенте

International Packaging Group Association — международная ассоциация производителей упаковки из картона, работающая с 1963 года. Организация формирует прозрачный рынок отрасли и поддерживает обмен данными между участниками.

Цифровая инфраструктура ассоциации — ключевой инструмент этой работы: через сайт участники получают доступ к технической информации, отчётам и статистике отрасли.

Задача

На момент обращения у ассоциации существовали два отдельных сайта на Drupal 7:

  • информационный сайт-визитка;
  • система с отчётами, статистикой и личным кабинетом участников.
Оба решения развивались независимо друг от друга и со временем накопили значительный технический долг, усложняющий поддержку и развитие системы.

Перед веб-студией НАДО стояли задачи:

  • перенести оба проекта с Drupal 7 на Drupal 8;
  • объединить их в единую систему;
  • сохранить всю существующую функциональность без редизайна;
  • снизить стоимость дальнейшей поддержки и развития.

Архитектура и объединение систем

Первый сайт представлял собой контентный портал с относительно простой структурой.
Второй — сложную систему работы с данными, накопленными за десятки лет. На его основе формировались:

  • статистические отчёты;
  • гистограммы производительности оборудования;
  • сравнительный анализ производственного оборудования.

Функциональность была реализована через административную панель Drupal и личные кабинеты участников.

Ключевая сложность заключалась в том, что система была построена как набор слабо связанных между собой модулей, часть логики существовала в виде кастомного PHP-кода вне стандартных подходов Drupal.

Личный кабинет и работа с данными

Каждый участник ассоциации имел доступ к закрытой панели управления.
Внутри системы реализованы функции:

  • ведение базы технических характеристик оборудования;
  • сравнение станков по параметрам;
  • построение гистограмм производительности;
  • доступ к отчётам и материалам встреч;
  • работа с контактной базой участников.

В разделе Machines пользователи добавляли новые единицы оборудования через Drupal-админку. Каждая запись содержала набор технических параметров, определяющих структуру дальнейших расчётов.

Миграция данных и сохранение расчётной логики

За годы работы системы накопился большой объём данных о промышленном оборудовании:

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

Ключевые параметры (тип оборудования, производитель, диапазон дат изготовления) были сохранены как базовые для построения аналитических отчётов.

Особое внимание было уделено сохранению математических формул, используемых для построения гистограмм в разделе Statistics. Корректность переноса проверялась ручным сравнением результатов визуализации данных на старой и новой версиях системы.

Работа с техническим долгом и рефакторинг

На этапе глубокой разработки команда столкнулась с существенным объёмом legacy PHP-кода.

Система содержала:
  • нестандартные реализации форм и отчётов;
  • отсутствие единых архитектурных паттернов Drupa;l
  • слабую связанность данных между модулями;
  • ручные и частично дублирующиеся вычисления.
Это создавало накопленный технический долг, который ограничивал масштабирование и усложнял любые изменения.

В рамках проекта был выполнен рефакторинг критических частей системы, что позволило:

  • привести код к более предсказуемой структуре;
  • снизить сложность поддержки;
  • уменьшить количество скрытых зависимостей;
  • подготовить систему к дальнейшему развитию.
Отдельной сложностью стала разница между Drupal 7 и Drupal 8: архитектурные изменения потребовали не прямого переноса, а фактически пересборки логики данных и модулей.

Результат

Несмотря на сложность legacy-архитектуры и накопленный технический долг, команде НАДО удалось:

  • объединить два независимых сайта в единую систему;
  • сохранить всю функциональность без потери пользовательских сценариев;
  • перенести сложную расчётную логику и формулы;
  • переработать устаревший код и снизить объём технического долга.
Оптимизация архитектуры и кэширования позволила значительно повысить производительность системы. Время отображения первого интерактивного элемента страницы снизилось с 7,1 до 1,1 секунды, что ускорило работу с отчётами и построение гистограмм.
Ждём вашей заявки!
У нас много писем, но ваше в приоритете.
Бюджет