Как стать автором
Обновить
105.31
Haulmont
Корпоративные системы и инструменты разработчика

Amplicode Launch Event – конвейер для Spring-приложений прямо в IntelliJ IDEA

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.8K

На прошлой неделе команда Amplicode провела митап, который длился целых 3,5 часа! За это время состоялось шесть докладов, затрагивающих все аспекты разработки приложений на Spring — от настройки окружения до создания бизнес-логики и внедрения админки на React Admin.

История и философия Amplicode (Илья Кучмин)

Илья Кучмин, разработчик Amplicode, открыл митап с рассказа о том, как зарождался продукт, к чему он движется сейчас и какие проблемы помогает решать.

Локальное окружение с Docker Compose для Spring Boot (Кирилл Толкачёв)

Затем к митапу присоединились Георгий Власов (Developer Advocate Amplicode) и Кирилл Толкачёв (участник программного комитета JUG RU Group). Они обсудили приложение, с которым предстояло работать, и задачи, которые нужно было решить. Первый шаг — настройка локального окружения с Docker Compose и добавление сервисов для PostgreSQL и pgAdmin.

В течение видео было продемонстрировано, как с помощью Amplicode можно эффективно настроить окружение для приложения, используя Docker Compose.

Кирилл отметил, что существует три основных варианта решения задачи:

  1. Создать Docker Compose файл

  2. Воспользоваться TestContainers

  3. Использовать docker-compose-starter для Spring Boot

В ходе обсуждений ребята приняли решение сосредоточиться на создании Docker Compose файла. Было показано, каким образом используя Amplicode можно не только генерировать сервисы для Docker Compose с нуля, но и как редактировать уже существующие сервисы.

Проблемы JPA в Spring PetClinic и способы их решения (Илья и Фёдор Сазоновы)

Когда приложение было готово к работе, Илья и Георгий пригласили экспертов сообщества Spring АйО — Илью и Фёдора Сазоновых. За 40 минут они не только решили несколько бизнес-задач, но и устранили накопившиеся за долги годы существования приложения проблемы с JPA.

Эксперты начали с оптимизация модели данных в JPA. Первым шагом стало исправление односторонних связей, снижающих производительность приложения. Также обратили внимание на множественные Eager ассоциации, которые также могут негативно сказаться на производительности, но было принято решение не вносить изменения в рамках текущей задачи.

Далее был рассмотрен тип ID, используемый в приложении. Обсудили, почему использование стратегии Identity может быть не лучшим решением и решили заменить ее на Sequence. После этого добавили новое поле salary и модифицировали соответствующий экран. Илья и Фёдор очень удивились, когда увидили, что приложение смогло запуститься после изменений в типе идентификатора и добавления нового поля. Оказывается, в приложении не был настроен параметр hibernate.ddl-auto.

Наконец, эксперты и ведущие погрузились в написание Flyway миграций, и решению проблемы N+1. Были рассмотрены различные варианты решения этой проблемы: от использования join fetch и @EntityGraph и до @BatchSize и spring.jpa.properties.hibernate.default_batch_fetch_size.

Разрабатываем правильный REST API для Spring Boot (Рустам Курамшин)

Далее к митапу присоединился Рустам Курамшин, ещё один эксперт сообщества Spring АйО. Вместе они разработали REST API для интеграции с внешними сервисами и исправили проблемы с существующими эндпоинтами. Также заложили основу для CRUD API, который позже будет использоваться фронтом написанном на React Admin.

В течение 40 минут эксперт и ведущие выполнили три основные задачи: исправили существующий endpoint, реализовали CRUD REST API для будущего Admin UI и разработали API для интеграций.

В процессе решения первой задачи ребята обсудили преимущества и недостатки использования MapStruct.

Далее был создан CRUD REST-контроллер с использованием возможностей Amplicode. При генерации тестов с использованием MockMvc Рустам выразил предпочтение к WebTestClient, отмечая, что такие тесты хотя и выполняются дольше и требуют решения вопросов безопасности, но обеспечивают большую надёжность. Ребята из команды Amplicode признали это и упомянули планы по поддержке WebTestClient и WireMock.

В заключительной части эксперт и ведущие разработали кастомное API для внешних интеграций, предоставляющее информацию о владельцах только при наличии ключевых данных.

Настраиваем Spring Security и Keycloak (Павел Кислов)

Следующим на очереди был Павел Кислов, эксперт сообщества Spring АйО, который помог настроить Spring Security и интегрировать Keycloak для управления доступом.

Ребята из Amplicode приступили к решению вопросов безопасности, пригласив для помощи Пашу Кислова. Вместе они проанализировали текущую и планируемую инфраструктуры, включающую legacy админку на Thymeleaf для менеджеров и администраторов, API для внешних интеграций и стандартизированное CRUD API для админки на React Admin. Было решено использовать FormLogin для legacy UI из-за небольшого количества пользователей, а для остальной системы внедрить OpenID/OAuth2 на базе KeyCloak.

Admin UI с использованием React Admin для Spring Boot (Александр Шустанов)

В завершении митапа Александр Шустанов (Product Manager Amplicode) реализовал современный AdminUI с помощью React Admin прямо в VS Code, добавив последний штрих в приложении.

В процессе создания админки на React Admin ребята затронули довольно много интересных вопросов, касающихся как технологий, которые уже поддерживает Amplicode Fullstack, так и тех, которые только планирует поддержать.

Полная запись мероприятия и ответы на вопросы

Для тех, кто пропустил митап или хочет пересмотреть его целиком, мы также опубликовали полную запись вместе с сессией вопросов и ответов.

Подписывайтесь на наши Telegram и YouTube, чтобы не пропустить новые материалы про Amplicode, Spring и связанные с ним технологии!

А если вы хотите попробовать Amplicode в действии – то можете установить его абсолютно бесплатно уже сейчас, как в IntelliJ IDEA/GigaIDE, так и в VS Code.

Теги:
Хабы:
Всего голосов 12: ↑12 и ↓0+14
Комментарии0

Публикации

Информация

Сайт
www.haulmont.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия
Представитель
Haulmont