«1. Обзор

В этой статье мы рассмотрим настройку приложения Spring Boot на Heroku с использованием Spring Cloud Connectors.

Heroku — это сервис, предоставляющий хостинг для веб-сервисов. Кроме того, они предоставляют большой выбор сторонних сервисов, называемых надстройками, которые обеспечивают все, от мониторинга системы до хранения базы данных.

Вдобавок ко всему этому у них есть специальный конвейер CI/CD, который легко интегрируется в Git, что ускоряет разработку и перевод в производство.

Spring поддерживает Heroku через библиотеку Spring Cloud Connectors. Мы будем использовать это для автоматической настройки источника данных PostgreSQL в нашем приложении.

Давайте приступим к написанию приложения.

2. Служба Spring Boot Book

Сначала создадим новую простую службу Spring Boot.

3. Регистрация Heroku

Теперь нам нужно зарегистрировать учетную запись Heroku. Перейдем на сайт heroku.com и нажмем кнопку регистрации в правом верхнем углу страницы.

Теперь, когда у нас есть учетная запись, нам нужно получить инструмент CLI. Нам нужно перейти на страницу установки heroku-cli и установить это программное обеспечение. Это даст нам инструменты, необходимые для завершения этого урока.

4. Создание приложения Heroku

Теперь, когда у нас есть интерфейс командной строки Heroku, давайте вернемся к нашему приложению.

4.1. Инициализировать репозиторий Git

Heroku лучше всего работает при использовании git в качестве системы управления версиями.

Давайте начнем с того, что перейдем в корень нашего приложения, в тот же каталог, что и наш файл pom.xml, и выполним команду git init, чтобы создать репозиторий git. Затем запустите git add. и git commit -m «первая фиксация».

Теперь наше приложение сохранено в нашем локальном репозитории git.

4.2. Предоставление веб-приложения Heroku

Далее давайте воспользуемся интерфейсом командной строки Heroku для предоставления веб-сервера в нашей учетной записи.

Во-первых, нам нужно аутентифицировать нашу учетную запись Heroku. Из командной строки запустите heroku login и следуйте инструкциям по входу в систему и созданию ключа SSH.

Далее запустите heroku create. Это подготовит веб-сервер и добавит удаленный репозиторий, в который мы можем отправить наш код для развертывания. Мы также увидим домен, напечатанный в консоли, скопируйте этот домен, чтобы мы могли получить к нему доступ позже.

4.3. Отправка кода в Heroku

Теперь мы будем использовать git для отправки нашего кода в новый репозиторий Heroku.

Запустите команду git push heroku master, чтобы отправить наш код в Heroku.

В выводе консоли мы должны увидеть журналы, указывающие на то, что загрузка прошла успешно, после чего их система загрузит все зависимости, создаст наше приложение, запустит тесты (если они есть) и развернет приложение, если все пройдет гладко.

Вот и все — теперь наше приложение открыто развернуто на веб-сервере.

5. Протестируйте In-Memory на Heroku

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

Выполним несколько HTTP-запросов:

POST https://{heroku-domain}/books HTTP
{"author":"baeldung","title":"Spring Boot on Heroku"}

Мы должны вернуться:

{
    "title": "Spring Boot on Heroku",
    "author": "baeldung"
}

Теперь давайте попробуем прочитать только что созданный объект:

GET https://{heroku-domain}/books/1 HTTP

Это должно вернуть:

{
    "id": 1,
    "title": "Spring Boot on Heroku",
    "author": "baeldung"
}

Все выглядит хорошо, но в продакшене мы должны использовать постоянное хранилище данных.

Давайте рассмотрим подготовку базы данных PostgreSQL и настройку нашего приложения Spring для ее использования.

6. Добавление PostgreSQL

Чтобы добавить базу данных PostgreSQL, запустите эту команду heroku addons:create heroku-postgresql:hobby-dev

Это создаст базу данных для нашего веб-сервера и добавит переменную среды, которая предоставляет информация о соединении.

Spring Cloud Connector настроен на обнаружение этой переменной и автоматическую настройку источника данных, поскольку Spring может определить, что мы хотим использовать PostgreSQL.

Чтобы Spring Boot знал, что мы используем PostgreSQL, нам нужно внести два изменения.

Во-первых, нам нужно добавить зависимость для включения драйверов PostgreSQL:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>

Далее давайте добавим свойства, чтобы Spring Data Connectors мог настроить базу данных в соответствии с ее доступными ресурсами.

В src/main/resources создайте файл application.properties и добавьте следующие свойства:

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true
spring.jpa.hibernate.ddl-auto=create

«

«Это объединит наши соединения с базой данных и ограничит соединения нашего приложения. Heroku ограничивает количество активных соединений в базе данных уровня разработки до 10, поэтому мы устанавливаем максимальное значение равным 10. Кроме того, мы устанавливаем для свойства hibernate.ddl значение create, чтобы наша таблица book создавалась автоматически.

Наконец, зафиксируйте эти изменения и запустите git push heroku master. Это внесет эти изменения в наше приложение Heroku. После запуска нашего приложения попробуйте запустить тесты из предыдущего раздела.

spring.jpa.hibernate.ddl-auto=update

Последнее, что нам нужно сделать, это изменить настройку ddl. Давайте также обновим это значение:

Это даст указание приложению обновлять схему при внесении изменений в объект при перезапуске приложения. Зафиксируйте и отправьте это изменение, как и раньше, чтобы изменения были отправлены в наше приложение Heroku.

Нам не нужно было писать собственную интеграцию с источником данных для всего этого. Это связано с тем, что Spring Cloud Connectors определяет, что мы работаем с Heroku и используем PostgreSQL, и автоматически подключает источник данных Heroku.

5. Заключение

Теперь у нас есть работающее приложение Spring Boot в Heroku.

Прежде всего, простота перехода от одной идеи к работающему приложению делает Heroku надежным способом развертывания.

Чтобы узнать больше о Heroku и всех инструментах, которые он предлагает, мы можем прочитать больше на heroku.com.