TL;DR: How I Boosted Productivity Using an Application Template Repository
Давным-давно мой коллега проходил собеседование на должность в нашей компании. Его впечатлила установка человека, которая позволяла ему быстро создавать проекты. Эта настройка включала подключение к базе данных, контроллеры REST и быстрый процесс запуска.
Вдохновленный этой историей, я понял, что могу улучшить свой собственный рабочий процесс. Я часто пропускал проекты из-за повторяющегося шаблонного кода, который мне приходилось добавлять каждый раз.
После некоторых размышлений и исследований я обнаружил репозитории шаблонов на GitHub. Концепция проста: создайте репозиторий, который служит основой для других репозиториев.
В моем случае я выделил следующие ключевые особенности, которые были важны для меня:
- Простой в использовании скрипт для настройки каждого нового клона проекта.
- Скелет веб-фреймворка с контроллерами REST.
- Докеризация приложения и настройка docker-compose для зависимостей.
- Полный файл
README
с информацией о назначении службы и способах ее запуска. - Обеспечение качества кода и проверка безопасности кодовой базы.
- Автоматическое обновление зависимостей для обеспечения актуальности проектов.
- Настройка базы данных.
- Тестовые контейнеры для тестирования интеграции между моей службой и ее базой данных.
Учитывая эти требования, я отправился в путь.
Чтобы централизовать свою работу, я решил управлять всем в одном месте: в моем репозитории GitHub. Я создал задачи в репозитории, чтобы отслеживать каждое требование, гарантируя, что ни одна хорошая идея не будет забыта с течением времени.
После тщательного рассмотрения я остановился на следующей реализации:
- Многомодульный проект Gradle, который при необходимости позволяет размещать несколько приложений в одном репозитории.
- Spring Boot в качестве веб-фреймворка выбран из-за его популярности.
- SonarCloud и CodeQL для проверки безопасности и статического анализа кода (бесплатно для проектов с открытым исходным кодом).
- GitHub Actions для инструментов CI.
- Dependabot для обновлений зависимостей с дополнительным преимуществом автоматического слияния запросов на вытягивание Dependabot после прохождения CI.
- PostgreSQL с Flyway в качестве инструмента миграции и JOOQ в качестве библиотеки запросов.
- Spotless для линтинга в стиле кода. Я был в восторге от результатов.
Я был в восторге от результатов.
Прошло несколько месяцев, и я использовал свой шаблон для нескольких небольших проектов. Однако однажды на работе я заметил, что мы попадаем в одни и те же повторяющиеся паттерны, которые я решил для себя. Каждый новый проект означал создание нового репозитория, настройку нового развертывания и трату дней на работу, которая оказывала минимальное влияние на наших пользователей.
Я обсудил это со своим менеджером и взял на себя ответственность распространить свой шаблон на организацию. Одного разветвления было недостаточно; Мне нужно было адаптировать его к конкретной настройке и требованиям организации.
На это ушло несколько дней, но в итоге у меня был полнофункциональный репозиторий шаблонов. Это позволило мне развернуть новый сервис в рабочей среде за 1–2 часа работы.
Вот что я называю значительным улучшением!
Однако на этом наша история не заканчивается. Когда в нашей жизни начали преобладать генеративные ИИ, у меня появилась идея для игры. Игра заключалась в том, чтобы угадать подсказку, которая использовалась для создания изображения, сгенерированного ИИ.
Концепция звучала забавно, но я хотел быстро проверить ее. Я не хотел тратить недели на создание чего-то, что может оказаться не таким приятным, как я ожидал.
Используя мой шаблон, мне удалось создать полный проект всего за один уик-энд. Я даже развернул его в производственной среде, что позволило мне поделиться им с друзьями и коллегами, чтобы подтвердить свои предположения о привлекательности проекта.
P.S. — Игра POC по-прежнему доступна на https://beat-the-machine.yonatankarp.com/.
Заключение
окончательный результат моей работы доступен в моей учетной записи GitHub по адресу https://github.com/yonatankarp/spring-boot-app-template.
Надеюсь, вам понравилось это путешествие и вы узнали что-то новое. Если вы хотите быть в курсе моих последних мыслей и идей, не стесняйтесь подписаться на мою информационную рассылку. Вы также можете найти меня в LinkedIn или Twitter. Оставайтесь на связи и продолжайте общение!
Первоначально опубликовано на https://yonatankarp.com.