Что такое рефакторинг портала
В середине ноября был завершен перевод на новый шаблон главных страниц кампусов НИУ ВШЭ. Внешне изменений немного – разве что «шапка» страниц стала компактнее. Основные отличия – «под капотом».
«Рефакторинг положительно сказывается на скорости загрузки сайтов. В этом году, когда начали активно релизить компоненты на новом стеке, скорость выросла почти вдвое. Раньше об этом не могли и мечтать», – говорит директор по порталу Дмитрий Коптюбенко.
Perl (Apache/Mason/Mod_Perl), на котором написаны старые компоненты портала, – отличный язык для своего времени, да и сейчас он хорош для ряда задач, но в 2018 году стало понятно, что пришло время для глобальной смены стека. «Мы тогда были настроены крайне алармистски – или рефакторинг, или в одно прекрасное утро портал «ляжет». Нас поддержали», – вспоминает Коптюбенко.
Развитием технологической платформы занимается Управление разработки и поддержки информационных систем портала. Его руководитель Алексей Галыгин объясняет, что в основе старого стека лежат зачастую уже не поддерживаемые технологии: если что-то сломается, заменить будет нечем, а причины для волнения периодически возникают. Одновременно такие библиотеки как jQuery и jQuery UI уступают в браузере место реактивным фреймворкам Vue, React, Angular.
В мире каждый день рождаются новые ИТ-профессии: незаметно Fullstack-разработчик разделился на Backend, Frontend, DevOps, SecOps. Казалось бы, гонимся за простотой и эффективностью, но сложность постоянно растет, как и требования к уровню специалистов. Приходится постоянно переквалифицироваться, анализировать, пробовать фреймворки, тестировать на практике, находить удобные. Каких усилий требует один только выбор для себя между knex, TypeORM, Bookshelf.js, Sequelize, Objection.js!
Чтобы выбрать подходящий стек, до поздних вечеров сидели на чердаке Мясницкой, 18, анализировали популярность технологий и сравнивали характеристики, исследовали фреймворки, устраивали мозговые штурмы и тестирования. Общим голосованием команды выбрали ключевые элементы: Node.js, Pug, Vue.js, Express, TypeScript, JavaScript. Это актуальный стек, который поддерживается мировым ИТ-сообществом, обеспечивая единообразие кода для серверной и клиентской частей. Для отрисовки страниц использовались шаблонизаторы, которые тоже требовали замены – с разношерстных XSL/XSLT, Mason, CTPP, HTML::Template на быстрый Pug.
По словам Галыгина, «за время работы над рефакторингом мы практически дошли до середины пути, достигнув «точки невозврата». Каждый сервис мы детально прорабатываем: переписываются все компоненты и шаблоны. Основная цель в том, чтобы все работало быстро и не глючило».
Кроме главных страниц кампусов в новом коде уже доступны каталог учебных курсов, ВКР студентов, диссертации, интегрированный с CRM-системой сервис опросов, отсылка почтовых уведомлений, каталог локальных нормативных актов, страница оплаты на сайте Издательского дома ВШЭ, калькулятор олимпиад, форма пожертвования на сайте Эндаумента выдающихся выпускников, база реквизитов доверенностей, различные API, интеграции и выгрузки и еще много компонентов.
Помогла цифровая трансформация Вышки. Раньше на портал шли за реализацией разнообразных сервисов, потому что больше нигде у сотрудников не было личных кабинетов. Так портал оброс непрофильными, требовавшими постоянного внимания активами. «Сейчас это десятки шаблонов и подсистем, но часть из них постепенно расходится по профильным подразделениям цифрового блока – без помощи коллег было бы сложно успевать решать профильные задачи, за что им огромное человеческое спасибо», – отмечает Галыгин. Помог «немного вздохнуть от последних десятка с плюсом лет мучений в переездах и поиска приличных серверных ресурсов» и переезд в 2020 году в облако СберКлауда.
Сейчас команда портала работает над новыми проектами. Это виджет каталога патентов, витрина каталога публикаций, каталог анонсов, шаблон для лендингов, сайт Издательского дома, каталог подразделений, база проектов. Скоро будет переписан каталог сотрудников, портальские персональные страницы и личный кабинет.
«Стало ли проще? Нет, потому что новые технологии требуют массу времени. Стало ли понятнее? И да, и нет — язык JavaScript популярнее, более универсальный, порог входа — ниже на некоторых этапах. Но если задуматься, можно ли было в свое время отказаться от замены стека, то ответ однозначный: конечно, рефакторинг».
Галыгин Алексей Николаевич
Начальник Управления разработки и поддержки информационных систем портала
Коптюбенко Дмитрий Борисович
Директор по порталу