Почему мы выбрали Jmix
Начнем с истории. Раньше Jmix назывался CUBA Platform, и именно в те времена мы выбрали этот инструмент.
Произошло это еще в 2018 году. К тому моменту мы в основном занимались созданием ботов без админок. Это была пора принятия судьбоносных решений. Мы пытались сделать окончательный выбор в пользу той или иной базы, на которой писать ботов. Было непонимание, какой стек станет основным, какие будут компоненты, как всё это завернуть технически. Более того, перед нами стояли и вопросы чисто бизнесового характера — кому и что мы хотим продавать.
Стало ясно, что пора заканчивать с неопределенностью. Мы постарались учесть все факторы. Во-первых, мой бизнес-партнер был Java-программистом. Во-вторых, наш новый крупный клиент тоже использовал внутренний контур на этом языке программирования. Компетенции компании и технологии, применяемые клиентом, совпали, и мы решили, что будем использовать Java.
Далее мы попробовали разные способы построения админок, но ни один нас не устроил, потому что при использовании всех инструментов постоянно возникали ошибки. Сортировка таблиц, вывод табличного представления и элементарного списка пользователей — всё это было проблемным. А мы хотели разрабатывать простые интерфейсы и не «запариваться», поэтому нужно было найти инструмент для построения админки на языке Java, не нанимая отдельного фронтэндера на такую утилитарную вещь.
Кроме того, нам надо было собирать системы из многих компонентов без JS. Оказалось, что если нам нужно построить небольшую систему для вывода простой статистики, то удобнее всего использовать Jmix. По сути, на этой платформе можно писать на одном языке и фронт, и бэк.
Jmix хорош еще и тем, что у него есть нормальная документация, так что в этот фреймворк можно спокойно «въехать». Наконец, не последнюю роль играет, что это open source. На него можно легко посадить джуна, чтобы тот изучал фреймворк и развивался.
Чем удобен Jmix при работе с клиентами
Когда мы стали пользоваться Jmix, то увидели, что давно мучившие нас вопросы разрешились автоматически. Главное, что нам понравилось, — наличие админпанели, в которой сразу можно настраивать очень многое (об этом я расскажу далее). Конечно, настройку осуществляет Java-программист, но сам интерфейс для каждого клиента не надо верстать заново. Благодаря этому мы можем продавать каждый раз одну и ту же «коробку» с рядом кастомизаций. Это освобождает массу времени на другие задачи.
Jmix предоставляет высокоуровневый API для работы с базами данных. Это упрощает создание сложных запросов и манипуляций с данными. Вы можете легко интегрировать ваше приложение с различными источниками, такими как реляционные базы данных, MongoDB, PostgreSQL, RabbitMQ, Redis, геосервисы, NoSQL-хранилища, REST-сервисы.
Это значительно упрощает работу программистов. Сейчас у нас есть заготовка для чат-ботов, в которой есть набор всех необходимых библиотек, компонентов. Мы можем в два клика поднять из Docker-образа на тестовом сервере новый проект, чтобы дальше программист кастомизировал его: удалял ненужные функции и добавлял фактуру для бота, которую прислал заказчик.
Jmix — это еще и полностью сертифицированный российский продукт, который находится в реестре ПО. Софт прозрачен и обладает хорошей репутацией, а производитель — «белая» компания. Это позволяет нам работать в том числе с крупными государственными заказчиками. Когда наши клиенты спрашивают, на каком технологическом стеке будет реализован бот, мы показываем Jmix, и вопросы заканчиваются.
Важное преимущество Jmix в том, что он достойно выдерживает нагрузки. Когда ты пишешь какой-то набор спагетти-методов на непонятном фреймворке, то заранее не знаешь, справится ли бот с нагрузкой в 10 тысяч человек. А в случае с Jmix, ты можешь быть уверен, что он не упадет.
У нас были такого рода кейсы. В одном случае через бота мы пропустили за два месяца 800 тысяч чеков. В другом — 130 тысяч человек в месяц для одного финансового проекта. И Jmix нигде не «захлебнулся» благодаря своей архитектуре. Единственное, что надо учитывать, — для корректной работы вам нужно обеспечить бота сервером, способным потянуть подобный наплыв пользователей.
Отмечу, что для Jmix характерна именно универсальность, то есть он положительно показывает себя и на больших, и на маленьких проектах. Мы проверяли его на системах и с 500 пользователями, и с сотней тысяч. Таким образом, фреймворк обеспечивает устойчивую работу проекта любого масштаба и под любой нагрузкой.
Главный минус — «прожорливость»
Наверное, главным минусом можно назвать то, что Jmix — это Java. Чтобы работать с этим фреймворком, сотрудник всё-таки должен разбираться в языке. Хотя при этом для настройки верхнего уровня глубоких знаний не надо. Всё достаточно просто постигается благодаря исчерпывающей документации проекта.
Но действительно существенный минус — Java прожорливая. Она будет нагружать сервер по оперативке. Фреймворк куда более требовательный, чем питоновская админка, поэтому железо должно быть соответствующим.
Поскольку Jmix — это относительно молодой фреймворк, на рынке труда не так много специалистов, которые в нем разбираются. Чтобы сейчас закрыть вакансию на Jmix, нам надо растить сотрудника внутри компании — брать юного программиста и учить его — либо платить большие деньги крутому джависту. Подобрать сотрудника с опытом по Jmix гораздо сложнее, чем найти, например, питониста, которых на рынке тьма.
Как мы применяем Jmix
Итак, к нам приходит заказчик. Он обрисовывает нам задачу — редактировать и добавлять тексты в боте, смотреть количество пользователей, делать рассылку. Мы ему показываем админку на базе Jmix. Это наше типовое решение, которое сразу можно предложить клиентам. Мы продаем его примерно по такой же цене, как и скрипт самого бота. Чаще всего клиентов устраивает именно такое базовое предложение.
После подписания договора программист садится писать код: он открывает наш базовый проект, поднимает его на локальной машине. Там у него есть заготовка под скрипт бота и админку. Теперь он должен оптимизировать всё и заточить под конкретные пожелания заказчика. В админку мы в первую очередь выносим информацию о пользователях — имя и фамилию, юзернейм, ID. Jmix хорошо подходит для управления этими сущностями в базе данных. Прямо в интерфейсе админки программист может увидеть состояние каждого объекта. Также в админпанели должна быть предусмотрена возможность редактирования сообщений и добавления, например, новых опросов, квизов.
Фишки и плагины Jmix
Когда программист открывает проект, перед ним совершенно пустая база данных. И чтобы добавить туда поля, он пишет пару команд и подтягивает данные из Jmix. Редактировать эти сущности тоже достаточно просто. Приведу пример: в Jmix есть готовый плагин с дашбордами, они информативные и понятные, подгружаются и настраиваются без проблем. В админках Python или PHP нет таких готовых классных решений, так что это настоящая киллер-фича Jmix.
Обычно кастомизация отнимает у программиста больше всего времени: подключение дашбордов, графики и так далее. К тому же у заказчика могут быть особые требования к виду графиков: клиент порой просит добавить столбчатую диаграмму, потом круговую. В Jmix программист спокойно меняет тип графика или цвет за нескольких секунд.
В других системах пришлось бы брать дополнительного программиста на такие задачи, менеджерить его, рисовать ему отдельный дизайн каждого проекта. На первых этапах существования нашей компании мы пытались идти по такому пути, но это было неудобно и долго. Работа по кастомизации админки занимала порядка месяца, а сейчас основное время на проекте уходит на написание кода самого бота. На кастомизацию админпанели мы тратим 3–4 дня.
В Jmix есть мощные инструменты для настройки прав доступа и безопасности в вашем приложении. Вы можете управлять правами пользователей, ролями и политиками безопасности, обеспечивая защиту ваших данных и функциональности.
У клиентов очень востребована опция разграничения прав в админке: большинство заказчиков настаивают на том, чтобы у сотрудников был разный уровень доступа. Например, одному менеджеру можно дать полномочия отправлять рассылки, а другому — редактировать опросы. Наконец, третьего менеджера можно наградить полными правами, включающими обе эти роли. Это настраивается буквально за считаные минуты.
Еще большую роль Jmix играет в создании рассылок. Допустим, вам надо разослать порядка 5000 сообщений. Но API Telegram не позволяет отправлять за секунду такое большое количество. Их нужно «размазывать» — скажем, не больше 100 сообщений в секунду. Значит, нужно делать какую-то очередь сообщений. А с помощью Jmix мы подключаем соответствующий плагин, и у вас всё работает. Представляете, насколько это полезно, когда вам предстоит отправить 100 000 или 500 000 сообщений! Без такого плагина Telegram не позволит вам ничего сделать. В общем, это еще одна киллер-фича Jmix.
Таких плагинов в Jmix множество. Возьмем, например, геолокацию. Дело в том, что Google Карты отдают координаты в одном формате, а в базу они попадают в другом. Их надо преобразовывать. В обычной ситуации придется написать определенный код, чтобы перевести их в нужный вид. Тут опять выручают плагины Jmix.
В Jmix каждая ошибка записывается, что позволяет потом изучить логи багов, которые вылезли у пользователя или системы.
Резюмируя, скажу, что посредством встроенных инструментов Jmix вы можете создавать визуальные интерфейсы для ваших приложений без написания лишнего кода. Это упрощает процесс разработки и позволяет создавать красочные и интуитивно понятные пользовательские интерфейсы. Jmix разработана с учетом потребностей больших и сложных приложений. Платформа легко масштабируется и позволяет интегрировать различные сервисы и компоненты для расширения функциональности вашего приложения.