Spring Cloud Connectors et Heroku

Connecteurs Spring Cloud et Heroku

1. Vue d'ensemble

Dans cet article, nous allons couvrir la configuration d'une application Spring Boot sur Heroku à l'aide de Spring Cloud Connectors.

Heroku is a service that provides hosting for web services. En outre, ils fournissent une large sélection de services tiers, appelés modules complémentaires, qui fournissent tout, de la surveillance du système au stockage de la base de données.

En plus de tout cela, ils ont un pipeline personnalisé de CI / CD qui s'intègre parfaitement à Git, ce qui accélère le développement en production.

Spring supports Heroku through it’s Spring Cloud Connectors library. Nous allons l'utiliser pour configurer automatiquement une source de données PostgreSQL dans notre application.

Passons à l'écriture de l'application.

2. Service de livre de démarrage de printemps

Commençons par créera new simple Spring Boot service.

3. Inscription Heroku

Now, we need to sign up for a Heroku account. Allons àheroku.com et cliquez sur le bouton d'inscription dans le coin supérieur droit de la page.

Maintenant que nous avons un compte, nous devons obtenir l'outil CLI. Nous devons accéder à la page d'installation deheroku-cli et installer ce logiciel. Cela nous donnera les outils nécessaires pour compléter ce tutoriel.

4. Créer une application Heroku

Maintenant que nous avons la CLI Heroku, revenons à notre application.

4.1. Initialiser le référentiel Git

Heroku fonctionne mieux lorsque vous utilisez git comme contrôle de source.

Commençons par aller à la racine de notre application, le même répertoire que notre fichierpom.xml, et exécutons la commandegit init pour créer un dépôt git. Exécutez ensuitegit add . etgit commit -m “first commit”.

Nous avons maintenant enregistré notre application dans notre référentiel git local.

4.2. Fournir l'application Web Heroku

Ensuite, utilisons la CLI Heroku pour provisionner un serveur Web sur notre compte.

Premièrement, nous devons authentifier notre compte Heroku. From the command line run heroku login and follow the instructions for logging in and creating an SSH key.

Ensuite, exécutezheroku create. Cela va provisionner le serveur Web et ajouter un référentiel distant dans lequel nous pouvons envoyer notre code pour les déploiements. Nous verrons également un domaine imprimé dans la console, copiez ce domaine afin que nous puissions y accéder plus tard.

4.3. Pousser le code vers Heroku

Nous allons maintenant utiliser git pour pousser notre code vers le nouveau référentiel Heroku.

Exécutez la commandegit push heroku master pour envoyer notre code à Heroku.

Dans la sortie de la console, nous devrions voir des journaux indiquant que le téléchargement a réussi, puis leur système va télécharger toutes les dépendances, créer notre application, exécuter des tests (le cas échéant) et déployer l'application si tout se passe bien.

Voilà, nous avons maintenant notre application déployée publiquement sur un serveur Web.

5. Tester en mémoire sur Heroku

Vérifions que notre application fonctionne. En utilisant le domaine de notre étape de création, testons notre application en direct.

Émettons quelques requêtes HTTP:

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

Nous devrions revenir:

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

Essayons maintenant de lire l'objet que nous venons de créer:

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

Cela devrait retourner:

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

Tout cela a l'air bien, mais en production, nous devrions utiliser un magasin de données permanent.

Passons en revue le provisionnement d'une base de données PostgreSQL et la configuration de notre application Spring pour l'utiliser.

6. Ajouter PostgreSQL

Pour ajouter la base de données PostgreSQL, exécutez cette commandeheroku addons:create heroku-postgresql:hobby-dev

Cela mettra à disposition une base de données pour notre serveur Web et ajoutera une variable d'environnement fournissant les informations de connexion.

Spring Cloud Connector is configured to detect this variable and set up the data source automatically étant donné que Spring peut détecter que nous voulons utiliser PostgreSQL.

Pour informer Spring Boot que nous utilisons PostgreSQL, nous devons apporter deux modifications.

Premièrement, nous devons ajouter une dépendance pour inclure les pilotes PostgreSQL:


    org.postgresql
    postgresql
    9.4-1201-jdbc4

Ensuite, ajoutons des propriétés afin que Spring Data Connectors puisse configurer la base de données en fonction de ses ressources disponibles.

Danssrc/main/resources, créez un fichier application.properties et ajoutez les propriétés suivantes:

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

Cela regroupera nos connexions de base de données et limitera les connexions de notre application. Heroku limits the number of active connections in a development tier database to 10 et nous définissons donc notre maximum à 10. De plus, nous définissons la propriétéhibernate.ddl pour créer afin que notre table de livre soit créée automatiquement.

Enfin, validez ces modifications et exécutezgit push heroku master. Cela poussera ces changements jusqu'à notre application Heroku. Après le démarrage de notre application, essayez d'exécuter les tests de la section précédente.

La dernière chose à faire est de modifier le paramètre ddl. Mettons également à jour cette valeur:

spring.jpa.hibernate.ddl-auto=update

Cela demandera à l'application de mettre à jour le schéma lorsque des modifications sont apportées à l'entité lors du redémarrage de l'application. Engagez-vous et poussez ce changement comme avant pour que les changements soient appliqués à notre application Heroku.

Nous n'avons pas eu besoin d'écrire une intégration de source de données personnalisée pour tout cela. En effet, Spring Cloud Connectors détecte que nous fonctionnons avec Heroku et que nous utilisons PostgreSQL - et connecte automatiquement la source de données Heroku.

5. Conclusion

Nous avons maintenant une application Spring Boot en cours d'exécution dans Heroku.

Surtout, la simplicité de passer d'une idée unique à une application en cours d'exécution fait de Heroku un moyen solide de déploiement.

Pour en savoir plus sur Heroku et tous les outils qu'il propose, nous pouvons en savoir plus surheroku.com.

Comme toujours, des extraits de code peuvent être trouvésover on GitHub.