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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

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

  • Смотреть на YouTube

  • Смотреть на Rutube

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

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

  • Смотреть на YouTube

  • Смотреть на Rutube

В течение видео было продемонстрировано, как с помощью 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.

  • Смотреть на YouTube

  • Смотреть на Rutube

Эксперты начали с оптимизация модели данных в 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.

  • Смотреть на YouTube

  • Смотреть на Rutube

В течение 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 для управления доступом.

  • Смотреть на YouTube

  • Смотреть на Rutube

Ребята из 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, добавив последний штрих в приложении.

  • Смотреть на YouTube

  • Смотреть на Rutube

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

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

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

  • Смотреть на YouTube

  • Смотреть на Rutube

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

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

Источник: https://habr.com/ru/companies/haulmont/articles/842770/


Интересные статьи

Интересные статьи

Нам до сих пор не до конца понятны некоторые возможности больших языковых моделей. Приложения с большими языковыми моделями должны быть оснащены необходимыми инструментами и оставлять данные о события...
Попасть в топ-3 и подборки приложений?В разы повысить ранжирование ключевого слова?Привлечь новых пользователей и увеличить конверсию?Таких результатов можно добиться с помощью in-app event’ов от Appl...
Существует множество языков для музыкального программирования. О некоторых из них, например, Sporth или ORCA, мы рассказывали в блоге. Сегодня поговорим о проекте Harmonicon — браузерном DAW, реализую...
Если вы собрались плотно погрузиться в тему Doman Driven Design (DDD), о том как его применять, как использовать, для чего он нужен, и как с ним связаны Command and Query Responsibility Segregation (C...
Мы запускаем второй сезон вебинаров DevSecOps. В первом — мы говорили «много и обо всем». Теперь рассмотрим более локальные задачи: от мониторинга k8s и организации конве...