Перейти к основному содержимому

Spring Cloud Connectors и Heroku

· 5 мин. чтения

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.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":"foreach","title":"Spring Boot on Heroku"}

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

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

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

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

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

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

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

Давайте рассмотрим подготовку базы данных 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. После запуска нашего приложения попробуйте запустить тесты из предыдущего раздела.

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

spring.jpa.hibernate.ddl-auto=update

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

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

5. Вывод

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

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

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

Как всегда, фрагменты кода можно найти на GitHub .