Студия НАДО
Как объединить два сайта на Drupal и устранить технический долг без потери функциональности
Студия НАДО
#Поддержка и развитие сайта#Программирование сайта

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

12 
Студия НАДО Россия, Омск
Поделиться: 0 0 0
Сфера

Промышленность и оборудование

Сдано

Октябрь 2023

Задача

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

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

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

- информационный сайт-визитка;

- система с отчётами, статистикой и личным кабинетом участников.

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

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

- перенести оба проекта с Drupal 7 на Drupal 8;

- объединить их в единую систему;

- сохранить всю существующую функциональность без редизайна;

- снизить стоимость дальнейшей поддержки и развития.

Решение

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

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

  • статистические отчёты;

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

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

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

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

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

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

  • ведение базы технических характеристик оборудования;

  • сравнение станков по параметрам;

  • построение гистограмм производительности;

  • доступ к отчётам и материалам встреч;

  • работа с контактной базой участников.

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

Раздел Machines в интерфейсе сайта
Добавление новой единицы оборудования в админке Drupal
Добавление новой единицы оборудования в админке Drupal

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

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

  • производительность;

  • износ;

  • параметры обслуживания;

  • исторические изменения характеристик.

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

Данные об оборудовании в интерфейсе сайта

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

Ключевые параметры оборудования в интерфейсе сайта

Ключевые параметры оборудования в интерфейсе сайта

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

Статистические данные для построения гистограмм в интерфейсе сайта
Гистограммы в интерфейсе сайта

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

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

Система содержала:

  • нестандартные реализации форм и отчётов;

  • отсутствие единых архитектурных паттернов Drupa;l

  • слабую связанность данных между модулями;

  • ручные и частично дублирующиеся вычисления.

Это создавало накопленный технический долг, который ограничивал масштабирование и усложнял любые изменения.

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

  • привести код к более предсказуемой структуре;

  • снизить сложность поддержки;

  • уменьшить количество скрытых зависимостей;

  • подготовить систему к дальнейшему развитию.

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

Результат

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

  • объединить два независимых сайта в единую систему;

  • сохранить всю функциональность без потери пользовательских сценариев;

  • перенести сложную расчётную логику и формулы;

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

Оптимизация архитектуры и кэширования позволила значительно повысить производительность системы. Время отображения первого интерактивного элемента страницы снизилось с 7,1 до 1,1 секунды, что ускорило работу с отчётами и построение гистограмм.

https://ipgassociation.com

Стек технологий

  • PHP PHP Язык программирования
  • Drupal Drupal CMS
  • MySql MySql База данных

Оцените кейс
Спасибо за оценку
Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Студия НАДО с удовольствием обсудит вашу задачу

Оставить заявку