Почему в разработке чат-ботов мы в качестве основы используем Jmix

И за шесть лет работы в нашей айти-команде пока не нашли ни одного критичного минуса. Рассказываю про наш опыт.

f90e0ab92451a081d9b41ed99c024d40.png

Jmix — это open source платформа для разработки многофункциональных бизнес-приложений, который был написан компанией Haulmont на базе Java, Spring и Vaadin. В нём удобно работать с данными и проектировать визуальные интерфейсы.

Но чтобы не быть голословным, я попробую объяснить, за что лично нам в команде BotCreators.ru он так пришёлся по душе.

Быстрое решение, которое стало постоянным

Когда-то Jmix был известен как CUBA Platform, и именно тогда мы впервые и обратили на него внимание.

Это было в 2018–19 году. В то время мы занимались разработкой ботов без административных панелей —, а это значит, что клиент не мог залезать в «голову» чат-бота, чтобы что-то там отредактировать. Мы стояли на распутье. Нужно было определиться, какую технологию выбрать для ботов: на каком стеке писать, какие компоненты использовать и как всё это объединить технически. Ну и нельзя было забывать про бизнес-стратегию — с кем мы хотим сотрудничать и что нам лучше разрабатывать.

Долго с неопределённостью жить не получится, это очень выматывает. Поэтому думать надо было быстро, но эффективно. 

Мы рассуждали так. Во-первых, мой бизнес-партнёр был Java-разработчиком. Во-вторых, один из наших крупных клиентов использовал Java в своей инфраструктуре. Кажется, решение очевидно.

Дальше мы пробовали разные инструменты для создания админок, но каждый раз наталкивались на баги. Сортировка таблиц, отображение списков пользователей в виде таблиц — всё работало не так, как мы хотели. А хотелось просто, без заморочек и без необходимости иметь в команде отдельного фронтендера под это всё.

К тому же, нам нужно было собирать системы из множества компонентов, но без использования JavaScript. Когда мы попробовали Jmix, поняли, что для небольших проектов, например, для вывода простой статистики, это идеальный вариант. На Jmix можно писать и фронт, и бэк на одном языке — Java.

А ещё у Jmix хорошая документация, так что в нём можно быстро разобраться. Плюс это open source, а значит, можно легко подключать джунов, чтобы они учились и развивались.

Незаменим для клиентской разработки

Когда мы начали использовать Jmix, многие проблемы, которые нас давно беспокоили, просто исчезли. Самое приятное — это готовая админка, которую можно сразу настраивать под свои нужды (подробнее об этом расскажу позже). Да, настройкой занимается Java-разработчик, но каждый раз не нужно разрабатывать интерфейс для каждого клиента с нуля. Это позволяет нам продавать одну и ту же «коробку», просто добавляя кастомизацию под конкретные запросы клиента. Экономия времени просто колоссальная.

Также Jmix предлагает удобный API для работы с базами данных. Это упрощает создание сложных запросов и управление данными. Можно легко интегрировать приложение с разными источниками: реляционные базы данных, MongoDB, PostgreSQL, RabbitMQ, Redis, геосервисы, NoSQL-хранилища, REST-сервисы.

Это реально облегчает жизнь разработчикам. Теперь у нас есть готовый шаблон для чат-ботов, в котором собраны все необходимые библиотеки и компоненты. Мы можем буквально за пару кликов развернуть новый проект на тестовом сервере через Docker-образ, а дальше программист подстраивает его под задачи клиента: убирает ненужное и добавляет новые фичи для бота.

Ещё одно важное преимущество Jmix — это полностью сертифицированный российский продукт, который включён в реестр отечественного ПО. А ещё у него хорошая репутация среди других разработчиков, поэтому мы смело используем его в разработке даже с крупными государственными заказчиками.

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

Ещё одно классное преимущество (и два маленьких нюанса)

Если вы пишете код на каком-то ноунейм-фреймворке, вряд ли вы будете знать наверняка, выдержит ли ваш бот большой наплыв пользователей. А вот если вы используете Jmix, сомнений у вас не будет — точно выдержит. У нас уже был опыт, когда мы обработали с его помощью тысячи чеков за два месяца (в формате кейса писали об этом на vc.ru — «Как распознать 790 000 чеков за три недели и не сойти с ума») и пережили нагрузку в 130 000 пользователей вообще всего за месяц. Конечно, ещё и сервер помог — мы заранее выбрали надёжного товарища.

Как хорошо Jmix справляется с большими проектами, также он работает и с маленькими. У нас был кейс, когда в проект «вошли» 500 пользователей, и всё также сработало отлично.

Пример админпанели которую мы собираем для своих ботов

Пример админпанели которую мы собираем для своих ботов

Главный недостаток Jmix — это его «аппетит». Jmix написан на Java, а Java, как известно, любит покушать оперативку. Сервер для Jmix нужен посерьёзнее, чем для какой-нибудь питоновской админки. Плюс нужны Java-разработчики с опытом работы с Jmix, а их не так-то просто найти. Проще растить специалистов внутри команды.

С чего начинается наша разработка

Как обычно у нас это происходит. Приходит к нам клиент и говорит: «Хочу бота, для которого можно добавлять и редактировать тексты, видеть количество пользователей и отправлять им рассылки». Мы показываем ему админку на Jmix. Это наше готовое решение, которое мы предлагаем всем, а стоит оно примерно как сам скрипт бота. Обычно клиентов устраивает такой базовый вариант.

После подписания договора наш программист берёт базовый проект, разворачивает его у себя и начинает допиливать под клиента. У него уже есть заготовка и для скрипта бота, и для админки. В админке, как правило, мы отображаем информацию о пользователях: имя, фамилию, юзернейм, ID. Jmix отлично управляет этими данными в базе. Программист прямо в интерфейсе админки видит состояние каждого объекта. Ну и, конечно, в админке можно редактировать сообщения, добавлять опросы, квизы и всё такое.

Одни плюсы

Обычно кастомизация — это головная боль, но с Jmix все просто. Хочешь поменять тип графика или цвет — пара секунд, и готово. В других системах пришлось бы брать ещё одного программиста, чтобы он закапывался в этих обновлениях на месяц, а тут мы тратим на кастомизацию всего 3–4 дня.

Еще один пример статистики в админке

Еще один пример статистики в админке

Ещё Jmix умеет управлять правами пользователей и безопасностью при авторизации. Очень удобно, когда нужно, чтобы у сотрудников были разные роли — первый может отправлять рассылки, второй — редактировать только опросы, а третьему будут доступны вообще все функции админки. Настраивается всё за пару минут.

База данных пользователей в Jmix

База данных пользователей в Jmix

Ну и ещё один плюс — это плагины. 

Есть плагин, который можно использовать для регулярной отправки сообщений по графику. Нужно настроить отправку на каждый день? С Jmix это не проблема — есть специальный плагин Quartz, который умеет это делать.

И таких плагинов много. Например, есть проблема с Google Картами, они почему-то отдают координаты в одном формате, а в базу загружаются в другом. Что мы выберем в этом случае? Напишем код, чтобы сконвертить данные в нужный формат, или воспользуемся ещё одним плагином? Конечно, ещё одним плагином.

С редактированием тоже заморачиваться не надо. Например, в Jmix есть готовый плагин с дашбордами — все они информативные и понятные, а ещё загружаются и настраиваются без проблем. Серьёзно, в админках Python или PHP такого нет, а здесь есть. По-моему, это успех.

В общем, Jmix — это достойный инструмент для разработки, который реально экономит время и не тратит нервы. Можно создавать крутые интерфейсы без лишнего кода, легко масштабировать и подключать сторонние сервисы. Мы довольны)

P.S. Пробежался по базе, но можно погрузиться в детали и более подробно. Пишите, если интересно.

© Habrahabr.ru