Коннекторы Spring Cloud и Heroku
1. обзор
В этой статье мы расскажем о настройке приложения Spring Boot на Heroku с помощью Spring Cloud Connectors.
Heroku is a service that provides hosting for web services. Кроме того, они предоставляют большой выбор сторонних сервисов, называемых надстройками, которые обеспечивают все, от мониторинга системы до хранения базы данных.
В дополнение ко всему этому у них есть собственный конвейер CI / CD, который легко интегрируется в Git, что ускоряет разработку в производстве.
Spring supports Heroku through it’s Spring Cloud Connectors library. Мы будем использовать это для автоматической настройки источника данных PostgreSQL в нашем приложении.
Давайте приступим к написанию приложения.
2. Сервис Spring Boot Book
Сначала создадимa new simple Spring Boot service.
3. Зарегистрироваться на Heroku
Now, we need to sign up for a Heroku account. Перейдем кheroku.com и нажмем кнопку регистрации в правом верхнем углу страницы.
Теперь, когда у нас есть учетная запись, нам нужно получить инструмент CLI. Нам нужно перейти на страницу установкиheroku-cli и установить это программное обеспечение. Это даст нам инструменты, необходимые для завершения этого урока.
4. Создать приложение Heroku
Теперь, когда у нас есть интерфейс командной строки Heroku, давайте вернемся к нашему приложению.
4.1. Инициализировать репозиторий Git
Heroku лучше всего работает при использовании git в качестве системы управления версиями.
Давайте начнем с того, что зайдем в корень нашего приложения, в тот же каталог, что и наш файлpom.xml, и запустим командуgit init, чтобы создать репозиторий git. Затем запуститеgit add . иgit commit -m “first commit”.
Теперь наше приложение сохранено в локальном репозитории git.
4.2. Подготовить веб-приложение Heroku
Затем давайте воспользуемся интерфейсом командной строки Heroku для настройки веб-сервера в нашей учетной записи.
Во-первых, нам нужно подтвердить подлинность нашего аккаунта Heroku. From the command line run heroku login and follow the instructions for logging in and creating an SSH key.с
Затем запуститеheroku create. Это обеспечит веб-сервер и добавит удаленный репозиторий, к которому мы можем добавить наш код для развертываний. Мы также увидим домен, напечатанный в консоли, скопируйте этот домен, чтобы мы могли получить к нему доступ позже.
4.3. Отправить код в Heroku
Теперь мы будем использовать git, чтобы отправить наш код в новый репозиторий Heroku.
Выполните командуgit push heroku master, чтобы отправить наш код в Heroku.
В выводе консоли мы должны увидеть журналы, указывающие, что загрузка прошла успешно, затем их система загрузит все зависимости, создаст наше приложение, запустит тесты (если есть) и развернет приложение, если все пройдет гладко.
Вот и все - теперь наше приложение публично развернуто на веб-сервере.
5. Тестирование в памяти на Heroku
Убедимся, что наше приложение работает. Используя домен из нашего шага создания, давайте протестируем наше живое приложение.
Выпустим несколько HTTP-запросов:
POST https://{heroku-domain}/books HTTP
{"author":"example","title":"Spring Boot on Heroku"}
Мы должны вернуться:
{
"title": "Spring Boot on Heroku",
"author": "example"
}
Теперь попробуем прочитать только что созданный объект:
GET https://{heroku-domain}/books/1 HTTP
Это должно вернуть:
{
"id": 1,
"title": "Spring Boot on Heroku",
"author": "example"
}
Это все выглядит хорошо, но в производстве мы должны использовать постоянное хранилище данных.
Давайте рассмотрим подготовку базы данных PostgreSQL и настройку нашего приложения Spring для ее использования.
6. Добавление PostgreSQL
Чтобы добавить базу данных PostgreSQL, запустите эту командуheroku addons:create heroku-postgresql:hobby-dev
Это обеспечит базу данных для нашего веб-сервера и добавит переменную среды, которая предоставляет информацию о соединении.
Spring Cloud Connector is configured to detect this variable and set up the data source automatically, учитывая, что Spring может определить, что мы хотим использовать PostgreSQL.
Чтобы Spring Boot знал, что мы используем PostgreSQL, нам нужно внести два изменения.
Во-первых, нам нужно добавить зависимость для включения драйверов PostgreSQL:
org.postgresql
postgresql
9.4-1201-jdbc4
Затем давайте добавим свойства, чтобы 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 limits the number of active connections in a development tier database to 10, поэтому мы устанавливаем максимальное значение 10. Кроме того, мы устанавливаем свойствоhibernate.ddl для создания, чтобы наша таблица книг создавалась автоматически.
Наконец, зафиксируйте эти изменения и запустите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.
Как всегда, фрагменты кода можно найтиover on GitHub.