Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В этой статье я подведу итоги 2020 года и расскажу о планах команды CUBA на 2021. Несмотря на внешние потрясения, прошедший год был очень продуктивным для нашей команды, а новый обещает быть еще интереснее.
TL;DR
Для тех, кто не знаком с Jmix: это новое поколение CUBA Platform, open source платформы для разработки широкого спектра корпоративных приложений. Jmix включает в себя фреймворк на основе Spring Boot, специализированные инструменты разработки, встроенные в IntelliJ IDEA и набор высокоуровневых компонентов. Такая комбинация значительно ускоряет и упрощает разработку приложений.
С выпуском Jmix в конце года мы фактически переписали бэкенд CUBA Platform, перенеся архитектуру на Spring Boot и сделав его модульным. На этом фундаменте в текущем году мы планируем:
создать полнофункциональный UI клиент на React, с поддержкой визуальных конструкторов
интегрировать GraphQL для взаимодействия между клиентом и сервером
максимально упростить и автоматизировать DevOps
поддержать возможность создания cloud native приложений
предоставить больше визуальных инструментов разработчика в Studio, смещая фокус из runtime в design time.
Чтобы реализовать задуманное, мы хотим удвоить команду разработки и активно ищем единомышленников. Подробности - под катом.
Итоги 2020
Мы мало писали о планах в прошлом году, так как были полностью погружены в разработку. В Jmix мы фактически переписали ядро CUBA Platform с нуля, о чем недавно рассказывали в предыдущей статье. Это фундамент для развития продукта на годы вперед, и мы должны были заложить правильную архитектуру и API. Нам нужно было время на эксперименты, и мы не хотели ограничивать себя обещаниями и жесткими сроками.
Но даже с учетом того, что большая часть команды была сосредоточена на Jmix, мы добавили немало новых возможностей и для текущей версии CUBA:
Поддержка Kotlin и дизайн-тайм ролей в CUBA 7.2
Новая тема интерфейса Helium с визуальным редактором
Поддержка генерации клиента на React Native
CUBA SDK - инструмент для упрощения разработки проектов (не только CUBA) в изолированной среде
И, конечно, сотни других эволюционных изменений в Studio, платформе и генераторе фронтенда.
С целью развития сообщества мы запустили итальянскую и французскую версии сайта и форума. Мы добавили на сайт упрощенную форму запроса академической лицензии, и как результат все больше и больше университетов используют CUBA для курсов по разработке корпоративного ПО. Также мы рады видеть новые известные бренды среди наших пользователей, такие как Сбер и Ingenico. Сбер заключил с нами масштабный договор на адаптацию и использование CUBA Studio для ускорения разработки внутренних приложений банка.
Планы на 2021
Релиз Jmix, пусть даже в статусе бета-версии, дал нам прочную основу, позволяющую с уверенностью смотреть в будущее. Мы строим амбициозные планы, и для их реализации планируем значительно увеличить команду. Мы рассчитываем, что к концу года над Jmix будет работать не менее 50 разработчиков.
Главный приоритет на начало года, разумеется, это выпуск стабильной версии Jmix, включая полноценную документацию, миграцию дополнений и тщательное тестирование. Мы планируем закончить эту работу во втором квартале.
Дальнейшие планы описаны ниже. Многое еще требует исследования, так что говорить о деталях реализации преждевременно. Тем не менее, надеюсь, это даст представление о направлении нашей работы.
Фронтенд
Теперь, когда Jmix дал нам современный модульный бэк на Spring Boot, самое время сосредоточиться на фронтенде. Честно говоря, это было пора сделать еще пару лет назад, когда окончательно устарел Vaadin 8. Но мы всегда стараемся поддерживать стабильность и обратную совместимость в платформе, и считаем это важным для долгоживущего корпоративного ПО.
К несчастью для нас, мир веб-фреймворков меняется так стремительно, что делать ставку на конкретную технологию было затруднительно. Даже компоненты Vaadin постоянно меняются в последних релизах. Несмотря на все ограничения, мы продолжали использовать Vaadin 8 для UI, потому что он “просто работает”. Тем не менее, команда фронтенда постоянно пробовала новые технологии. В прошлом году мы серьезно развили TypeScript SDK. Уже появилась возможность генерации клиентов на React и React Native, правда, этот процесс все еще значительно более сложный и трудоемкий по сравнению с UI на Vaadin.
В любом случае, стадия творческого поиска завершена. Мы уверены, насколько это вообще возможно, что React - достаточно зрелая технология, которая будет с нами надолго. Так что основная задача веб команды в 2021 году - довести удобство и скорость разработки интерфейса на React до уровня текущего Vaadin клиента. Естественно, это означает полную поддержку в Studio: превью экранов, дерево и палитру компонентов, набор шаблонов, редактор темы, hot deploy. А также полный набор визуальных компонентов. Как всегда, мы постараемся насколько это возможно абстрагировать (но не изолировать!) разработчиков от тонкостей JS экосистемы. Преимущества нового клиента очевидны: быстрый и масштабируемый интерфейс конечных приложений с широкими возможностями кастомизации и огромной экосистемой сторонних компонентов. Конечно, за все надо платить: разработчику потребуется как минимум базовое понимание Typescript, CSS и HTML, а также коммерческая IDE IntelliJ Ultimate. Мы планируем выпустить версию Studio на ее основе.
Что же будет с Vaadin? Не волнуйтесь, его история не окончена. Мы по-прежнему считаем, что это отличный выбор во многих ситуациях. Он идеально подходит для бэкенд-разработчиков, которые не особо любят работать с веб-технологиями. Если вы не ожидаете нестандартных требований к дизайну, нагрузки в десятки тысяч пользователей или работу через сети с высокой задержкой, Vaadin отлично справится - а для большинства внутренних бизнес приложений большего и не требуется. Мы продолжим наблюдать за работой команды Vaadin и новыми версиями и планируем перейти на одну из них в 2022 году.
Безусловно, мобильные приложения играют все более важную роль в корпоративном ПО. В Jmix и CUBA уже есть поддержка генерации клиента на React Native, а также PWA в React-клиенте. Кроме того, мы начали экспериментировать с Flutter. Это быстро набирающий популярность UI фреймворк на основе языка Dart, развиваемый Google. Заявляемая цель Flutter - предоставить единую UI-технологию для всех платформ: мобильных, веб и даже десктоп. Flutter гораздо ближе Java разработчикам, чем web технологии. При этом его идеология схожа с React: все является компонентом (aka Widget), а интерфейс является функцией состояния. Flutter уже стал фреймворком №1 для кросс-платформенных мобильных приложений, в то время как поддержка web пока находится в бете. Время покажет, сможет ли он стать “серебряной пулей” в мире UI технологий.
Основное предназначение платформы - создание бизнес-приложений - подразумевает работу с большими моделями данных. Поэтому и для Flutter, и для React требуется удобный серверный API для работы с данными. После ряда экспериментов мы остановились на GraphQL, который естественным образом вписался в технологический стек и станет общей частью для обоих клиентов.
Подводя итог, скажу, что в Jmix будет больше возможностей для создания UI клиентов любого масштаба и сложности, как для веб, так и для мобильных платформ, для тех, кто любит, и для тех, кто ненавидит JS :)
DevOps и облачные технологии
До настоящего момента мы фокусировались исключительно на разработке. С одной стороны в этом есть смысл - разработка является самой трудоемкой частью жизненного цикла приложения. Однако, мы получаем все больше просьб упростить и развертывание приложений.
Сейчас мы формируем “облачную” команду для решения этой задачи. Решаться она будет на тех же принципах: абстрагировать (но, повторюсь, не изолировать!) разработчика от специфики лежащих в основе технологий - Jenkins, Docker, Kubernetes, Terraform - и предоставить простые и удобные визуальные инструменты для настройки нужной среды и CI/CD процессов.
Команда будет работать над автоматизацией следующих задач:
Конфигурация, генерация и публикация Docker образов
Настройка сред, например, тестовой и “боевой”
Визуальное описание требуемой инфраструктуры на основе Kubernetes и Terraform
Настройка процессов CI/CD
Для реализации части этих возможностей мы планируем использовать инфраструктуру общедоступных облачных сервисов - для начала, AWS. Но AWS (Azure, Alibaba и т.д.) дает гораздо больше, чем просто развертывание приложения в Docker, и грех этим не воспользоваться! Мы предоставим возможность создать полноценное облачное приложение на Jmix, использующее облачные сервисы БД, хранилища файлов, аутентификацию, полнотекстовый поиск, мониторинг, логирование, балансировку нагрузки и т.д.
Конечная цель - предоставить все для развертывания и запуска приложения в облаке или на собственном сервере с минимальными усилиями. Это новое направление и планировать сложно, но мы планируем выпустить бета-версию к концу 2021.
Инструменты
Постепенно, команда Studio становится самой большой в Jmix. Это логично - любое направление, будь то облачные сервисы или фронтенд, подразумевает соответствующую поддержку со стороны Studio. Кроме того, в этом году мы планируем представить несколько важных улучшений:
Новые визуальные дизайнеры, в частности для JPQL и GraphQL запросов. Надеюсь, многие оценят возможность не писать JPQL запросы руками!
Кодогенерация на основе шаблонов типовых действий: открыть экран, сохранить/загрузить данные, показать сообщение, вызвать сервис, начать бизнес-процесс.
Конструктор отчетов на стадии разработки.
Конструктов BPM-процессов на стадии разработки.
Смещение фокуса с runtime на этап разработки
Я хочу подробнее остановиться на двух последних пунктах. До сих пор аддоны Reporting и BProc поддерживали конфигурирование только в runtime. С одной стороны, это здорово: отчеты и бизнес-процессы могут настраивать не только разработчики, причем без перезапуска приложения. Однако, есть и минусы:
Если меняется модель данных, отчет или бизнес-процесс может перестать работать, и вы не заметите этого, пока он не будет запущен.
Возможна рассинхронизация версий между экземплярами приложения. Вы тестируете версию отчета на тестовом стенде, а в то же время кто-то меняет что-то в продакшене…
Рантайм-дизайнер не очень удобен для создания сложных отчетов.
При настройке бизнес-процесса разработчику приходится переключаться между Studio и запущенным приложением с дизайнером, постоянно перезапускать приложение, чтобы добавить новые формы, сервисы и т.д.
В итоге мы достаточно трудоемкий процесс, который к тому же не особо защищает от ошибок. Чтобы решить эту проблему, мы решили добавить дизайнеры BPM и отчетов непосредственно в Studio. При этом мы рассчитываем сохранить и рантайм инструменты. Возможно, вы заметили: это движение в ту же сторону, что и недавно реализованная поддержка настройки ролей и групп доступа в design-time.
Отчеты становятся Java-классами, настраиваемыми через мастер Studio. Это дает полноценный редактор кода и валидацию, возможность отлаживать отчеты и покрывать их тестами во время компиляции, а также гарантию того, что версия отчета будет одинаковой на всех серверах.
Примерно то же будет с BPM. Дизайн-тайм редактор позволит отлаживать и покрывать тестами шаблоны процессов, а также прямо из редактора процессов создавать сервисы, формы, обработчики и т.д. Таким образом, Jmix получит возможности, приближающие его к BPMS системам.
Как и многие другие нововведения, мы планируем выпустить бета-версию этих инструментов к концу 2021.
Сроки
Для удобства просуммирую здесь информацию о сроках релизов:
2 кв. 2021 - стабильная версия Jmix
4 кв. 2021 - стабильная версия React-клиента
4 кв. 2021 - бета-версии:
- автоматизация DevOps
- поддержка создания облачных приложений
- визуальная настройка отчетов и бизнес-процессов на этапе разработки
- другие инструменты Studio
2 кв. 2022 - стабильная версия возможностей, вышедших в 4 кв. 2021.
План безусловно очень амбициозный, так что возможно где-то сроки сдвинутся, но мы сделаем все возможное, чтобы их придерживаться.
Будущее
С новой версией Jmix мы хотим предложить альтернативу на быстрорастущем рынке Low Code Application Platforms (LCAP). Вследствие трендов цифровой трансформации, потребность в ускорении и демократизации разработки приложений огромна. LCAP отчасти закрывают эту потребность, позволяя вовлекать в процесс обычных пользователей. Но расплата за это - большое количество ограничений на то, что вы реально можете создать.
Jmix же изначально создан для разработчиков, и при не меньшей продуктивности гораздо гибче, позволяя в привычной для разработчика среде создавать решения любой сложности. При этом Jmix также снижает порог входа, упрощая переход с другого технологического стека, позволяя вовлекать в разработку начинающих разработчиков и бизнес-аналитиков.
Наконец, в отличие от большинства LCAP, в основе экосистемы Jmix - фреймворк с открытым кодом. Это означает, что созданные вами приложения свободны от лицензионных ограничений, при этом вы контролируете весь исходный код проекта.
В любом случае, мы надеемся, что новые возможности Jmix позволят создавать современные, удобные и функциональные приложения в кратчайшие сроки, реально ускоряя цифровую трансформацию бизнеса. Буду рад услышать ваше мнение в комментариях!
P.S. Если вы - Java- или Kotlin-разработчик и вам интересно то, что мы делаем - будем рады видеть вас в нашей команде. Смотрите список вакансий на сайте.