Начав разработку системы заявок, с 2013 года, история которой описана в предыдущих публикациях:
мы остановили выпуск новых версий в 2017 году. Это не значит, что мы перестали сопровождать продукт и разрабатывать его. Дело в том, что за небольшой период времени у нас появились крупные компании-клиенты, которые регулярно заказывали кастомизации основного продукта, из-за чего фактически все ресурсы проекта перешли в форму поддержки крупных клиентов.
В качестве компенсации, мы выпустили в открытый доступ ZENLIX 2.95 (ссылка). Тут же стоит отметить, что версия на GitHub — продукт, который не имеет ничего общего с ZENLIX 3.x версии.
В определённый момент мы стали понимать, что теряем остальных клиентов. Необходимо было предпринимать радикальные изменения в политике поддержки компаний. С одной стороны, нас ограничивал договор сопровождения возможностью увеличения бюджета, с другой стороны — мы не могли себе позволить увеличить штат разработчиков. В итоге, судьба дала нам такой шанс.
В январе 2019 истёк срок договора поддержки одного клиента и мы переформатировали штат для начала нового дыхания продукта.
Начало разработки
За 2 года большинство используемых модулей фронтэнда (js), а также бэкенд (php) — устарели. Поэтому для внедрения новых возможностей и разработки, необходимо было подготовить платформу, чтобы в дальнейшем можно было использовать самые новые возможности и ресурсы, реализовывать современный UI, отвечающий запросам потребителей.
Начали мы с бэкенда, а именно апгрейда фреймворка с Laravel 5.1 до Laravel 5.5 (LTS). Существовали варианты обновления текущего проекта, но как показала практика наших коллег, это сложный и неоправданный процесс, в результате которого есть риск погрязнуть в рефакторинге кода, что в свою очередь затянуло бы апгрейд на долгие месяцы.
Мы выбрали второй вариант. Для этого мы инициализировали чистый проект на версии Laravel 5.5 (LTS), далее устанавливали все composer-модули (самые последние стабильные версии), включая их в служебные файлы Laravel, генерировали ресурсы и конфигурировали их, на основе прежней версии ZENLIX. После, занялись переносом Контроллеров, Моделей, Миграций, Шаблонов, других частей и бизнес-объектов. Большинство фундаментальных методов пришлось переписать заново. Например, модули авторизации/регистрации (с возможностью авторизации через сторонние сервисы), полностью систему нотификации (Mailable queue) и другие. Это так же дало свои плюсы — мы нашли некоторые проблемы нотификации в старой версии и исключили их в новой. В результате переноса кода, а так же использования Laravel 5.5, возросли минимальные программные требования к PHP: PHP >= 7.0.0. Из-за чего некоторые старые deprecated функции и реализации мы также переписали.
Официально можем сказать, что теперь ZENLIX 3.5 поддерживает PHP 7.3. Переход на новую версию Laravel 5.5 + PHP 7.3 дал существенный прирост скорости приложения на 64% по сравнению с версией 3.x.
Также мы переписали и оптимизировали код микросервиса nodejs. Теперь он использует на один модуль меньше — исключили express.
Мы обновили фронтэнд: Jquery 3.4, FontAwesome 5, Trumbowyg 2.15 и другие модули.
Самое крутое в этом то, что мы теперь используем webpack.mix.js, и при релизе генерируем из 20 -> 1 минимизированный js-файл и из 13 -> 1 css-файл. Это также дало существенный прирост скорости рендеринга клиентской части отображения контента.
Мы не изменили нашей политике контроля открытости продукта. Никаких ioncube и т.д. Весь код по прежнему открыт для наших клиентов. Никакого контроля, кроме лицензионного договора, который строго регламентирует использования продукта в рамках одного субъекта организационной деятельности.
А ещё в новой версии мы реализовали несколько удобных возможностей:
- Возможность отключения пунктов меню, а также их функционала.
Теперь администратор для всех может отключать модули: Пользователи, Группы, Сообщения, Центр знаний, Календарь, Отчёты.
- Система обновления и репозиторий инсталляции оставался узким местом. Мы хотели чтобы, администратор мог сам выбирать, что ему обновлять, не смотря на его изменения в локальном коде. В итоге, используя опыт поддержки наших крупных компаний, мы реализовали это на GitLab-сервере. При покупке продукта, клиенту предоставляется read_only доступ к git-репозиторию. Оболочка консольных команд ZENLIX делает процесс более мягким и удобным по сравнению с голым использованием git pull. Но это не запрещает использовать последний для merge. Система обновления продукта теперь работает только через консоль (php artisan zenlix:update). Через веб, администратор попрежнему может проверить наличии новой версии, а также прочесть информацию/инструкцию о релизе/обновлении. Запуская консольную команду, администратор переводит систему в статус обслуживания и запускается процесс обновления.
- Система консольной инсталляции, теперь как основной тип инсталляции продукта. (php artisan zenlix:install) позволяет, используя логин/пароль, получить версию ZENLIX, а также произвести базовую конфигурацию. В большинстве случаем эта команда необходима для наших технических специалистов, которые производят удалённую бесплатную инсталляцию продукта.
Переделана система создания новых пользователей, а также создания заявки (выбора пользователей) и много других мелких изменений, которые в целом очень сильно влияют на удобство использования готового продукта.
Отдельно стоит отметить, что мы подготовили готовый VM-образ (vmdk,ovf) со следующим ПО, уже с установленным и настроенным ZENLIX:
- Ubuntu 18.04.2 LTS
- Nginx v1.14.0
- PHP v7.2.17-0
- MySQL v5.7.26-0
- Node v8.10.0
- Supervisord v3.3.1
- Redis v5.0.4
- ZENLIX v3.5
Заключение
В целом, мы хотели бы сделать вывод, что обновив платформу продукта до последней стабильной версии (Laravel 5.5), полноценной поддержкой PHP 7.3, имея стабильную систему обновления продукта (git), мы планируем выпускать более частые стабильные обновления. У нас есть много реализаций интересных и удобных вещей, из других кастомизированных проектов. Постепенно мы будем их переносить в ZENLIX. Как минимум, мы сделаем Android-приложение, полноценное API для создания и работы с заявками, Web-hooks на события и другие вещи.
Мы будем рады ответить на все Ваши вопросы через почту: info@zenlix.com, а так же telegram.