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 .