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

Задача
У Ассоциации было два сайта на Drupal 7: визитка с информацией об Ассоциации и сайт для работы с отчётами и статистикой. Основной задачей ADCI Solutions стал перенос сайтов с Drupal 7 на Drupal 8 и их объединение для простоты и дешевизны обслуживания в будущем. Редизайн не требовался, поэтому задача сводилась к буквальному воспроизведению сайта, но на более актуальном ядре.
Объединение сайтов
Если первый сайт был сугубо контентным и не представлял из себя чего-то сложного, то второй сайт был завязан на данных, копившихся десятки лет, и формулах, которые на основе этих данных строят статистические отчёты и гистограммы. Доступ к этой функциональности открывался через панель управления.
Панель управления
С панелью можно работать только через личный кабинет, который есть у каждого члена Ассоциации. Панель позволяет работать с техническими документами оборудования, сравнивать станки между собой по параметрам, строить гистограммы производительности оборудования, получать контакты членов Ассоциации и читать отчёты со встреч.

В разделе Machines член Ассоциации может внести в список новую единицу оборудования через админ-панель Drupal. Каждая node — это тип оборудования. Внутри node пользователь заполняет поля с технической информацией.



Миграция данных и формул
За долгие годы существования Ассоциации накопилось очень много данных о разных станках: производительности, износе, обслуживании и других параметрах. Их миграция требовала от команды ADCI Solutions внимательности — некоторые единицы оборудования отличались друг от друга одним-двумя параметрами, и построить одинаковые таблицы для них было нельзя.

Тип оборудования, производитель и диапазон дат изготовления — это обязательные параметры, которые надо задать для построения таблицы продуктивности.


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


Рефакторинг кода
Проект выглядел типичным для Drupal-разработки, пока специалисты ADCI Solutions не столкнулись с кучей беспорядочного легаси PHP-кода, игнорировавшего привычные методы и паттерны Drupal. Формы и отчёты строились нестандартно, а данные не были связаны друг с другом. Это был сайт с огромным техническим долгом — накопленными в программном коде или архитектуре проблемами из-за низкого качества разработки, вызывающими дополнительные трудозатраты в будущем. Рефакторинг кода с нашей стороны решил ряд старых проблем.
Drupal 7 и Drupal 8 принципиально отличаются друг от друга, поэтому прямой перенос структуры данных и кастомного кода с одного ядра на другое стало сложной и тонкой задачей.
Результаты
С учётом необычных и в чём-то даже экстремальных условий ADCI Solutions удалось объединить два сайта в один и сохранить прежнюю функциональность таким образом, чтобы оставить для пользователя привычные сценарии взаимодействия с сайтом.
Кастомный код был переработан, стал выглядеть и исполняться гораздо лучше. Это привело к уменьшению унаследованного технического долга и улучшению производительности сайта. За счёт правильного кэширования снизилась общая нагрузка на сайт и время вывода на экран первого интерактивного элемента страницы — с 7,1 до 1,1 секунды. Это соответственно ускорило отрисовку страницы и построение отчётов и гистограмм.
Мы держим связь с клиентом и готовы к новым задачам.