Spring Cloud Connectors und Heroku

Spring Cloud Connectors und Heroku

1. Überblick

In diesem Artikel wird das Einrichten einer Spring Boot-Anwendung auf Heroku mithilfe von Spring Cloud Connectors behandelt.

Heroku is a service that provides hosting for web services. Außerdem bieten sie eine große Auswahl an Diensten von Drittanbietern, sogenannte Add-Ons, die alles von der Systemüberwachung bis zum Datenbankspeicher bieten.

Darüber hinaus verfügen sie über eine benutzerdefinierte CI / CD-Pipeline, die sich nahtlos in Git einfügt und die Entwicklung in die Produktion beschleunigt.

Spring supports Heroku through it’s Spring Cloud Connectors library. Wir werden dies verwenden, um eine PostgreSQL-Datenquelle in unserer Anwendung automatisch zu konfigurieren.

Beginnen wir mit dem Schreiben der App.

2. Spring Boot Book Service

Zuerst erstellen wira new simple Spring Boot service.

3. Heroku Anmelden

Now, we need to sign up for a Heroku account. Gehen wir zuheroku.com und klicken Sie auf die Anmeldeschaltfläche in der oberen rechten Ecke der Seite.

Nachdem wir ein Konto haben, benötigen wir das CLI-Tool. Wir müssen zur Installationsseite vonheroku-clinavigieren und diese Software installieren. Dadurch erhalten wir die Tools, die wir zur Vervollständigung dieses Lernprogramms benötigen.

4. Heroku-Anwendung erstellen

Nachdem wir die Heroku-CLI haben, kehren wir zu unserer App zurück.

4.1. Git Repository initialisieren

Heroku funktioniert am besten, wenn Sie Git als Quellcodeverwaltung verwenden.

Beginnen wir mit dem Stammverzeichnis unserer Anwendung, dem gleichen Verzeichnis wie unserepom.xml-Datei, und führen Sie den Befehlgit init aus, um ein Git-Repository zu erstellen. Führen Sie danngit add . undgit commit -m “first commit” aus.

Jetzt haben wir unsere Anwendung in unserem lokalen Git-Repository gespeichert.

4.2. Bereitstellung Heroku Web App

Verwenden Sie als Nächstes die Heroku-CLI, um einen Webserver für unser Konto bereitzustellen.

Zuerst müssen wir unseren Heroku-Account authentifizieren. From the command line run heroku login and follow the instructions for logging in and creating an SSH key.

Führen Sie als Nächstesheroku create aus. Dadurch wird der Webserver bereitgestellt und ein Remote-Repository hinzugefügt, in das wir unseren Code für Bereitstellungen übertragen können. In der Konsole wird auch eine Domain gedruckt. Kopieren Sie diese Domain, damit wir später darauf zugreifen können.

4.3. Code an Heroku senden

Jetzt verwenden wir git, um unseren Code in das neue Heroku-Repository zu verschieben.

Führen Sie den Befehlgit push heroku master aus, um unseren Code an Heroku zu senden.

In der Konsolenausgabe sollten Protokolle angezeigt werden, die angeben, dass der Upload erfolgreich war. Das System lädt dann alle Abhängigkeiten herunter, erstellt unsere Anwendung, führt Tests aus (falls vorhanden) und stellt die App bereit, wenn alles reibungslos funktioniert.

Das ist es - wir haben unsere Anwendung jetzt öffentlich auf einem Webserver bereitgestellt.

5. Testen Sie In-Memory auf Heroku

Stellen wir sicher, dass unsere App funktioniert. Testen Sie unsere Live-Anwendung anhand der Domain aus unserem Erstellungsschritt.

Lassen Sie uns einige HTTP-Anfragen stellen:

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

Wir sollten zurückkommen:

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

Versuchen wir nun, das soeben erstellte Objekt zu lesen:

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

Dies sollte zurückgeben:

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

Das sieht alles gut aus, aber in der Produktion sollten wir einen permanenten Datenspeicher verwenden.

Lassen Sie uns eine PostgreSQL-Datenbank bereitstellen und unsere Spring-App für die Verwendung konfigurieren.

6. Hinzufügen von PostgreSQL

Führen Sie diesen Befehlheroku addons:create heroku-postgresql:hobby-dev aus, um die PostgreSQL-Datenbank hinzuzufügen

Dadurch wird eine Datenbank für unseren Webserver bereitgestellt und eine Umgebungsvariable hinzugefügt, die die Verbindungsinformationen bereitstellt.

Spring Cloud Connector is configured to detect this variable and set up the data source automatically gegeben, dass Spring erkennen kann, dass wir PostgreSQL verwenden möchten.

Damit Spring Boot weiß, dass wir PostgreSQL verwenden, müssen wir zwei Änderungen vornehmen.

Zuerst müssen wir eine Abhängigkeit hinzufügen, um die PostgreSQL-Treiber einzuschließen:


    org.postgresql
    postgresql
    9.4-1201-jdbc4

Fügen Sie als Nächstes Eigenschaften hinzu, damit Spring Data Connectors die Datenbank gemäß den verfügbaren Ressourcen konfigurieren kann.

Erstellen Sie insrc/main/resources eine application.properties-Datei und fügen Sie die folgenden Eigenschaften hinzu:

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

Dadurch werden unsere Datenbankverbindungen zusammengefasst und die Verbindungen unserer Anwendung eingeschränkt. Heroku limits the number of active connections in a development tier database to 10 und so setzen wir unser Maximum auf 10. Zusätzlich setzen wir die Eigenschafthibernate.ddlo, dass sie erstellt wird, damit unsere Buchtabelle automatisch erstellt wird.

Übernehmen Sie abschließend diese Änderungen und führen Siegit push heroku master aus. Dadurch werden diese Änderungen auf unsere Heroku-App übertragen. Versuchen Sie nach dem Start unserer App, Tests aus dem vorherigen Abschnitt auszuführen.

Als letztes müssen wir die ddl-Einstellung ändern. Aktualisieren wir auch diesen Wert:

spring.jpa.hibernate.ddl-auto=update

Dadurch wird die Anwendung angewiesen, das Schema zu aktualisieren, wenn beim Neustart der App Änderungen an der Entität vorgenommen werden. Übernehmen Sie und drücken Sie diese Änderung wie zuvor, um die Änderungen in unsere Heroku-App zu übertragen.

Dafür mussten wir keine benutzerdefinierte Datenquellenintegration schreiben. Dies liegt daran, dass Spring Cloud Connectors erkennt, dass wir mit Heroku arbeiten und PostgreSQL verwenden - und die Heroku-Datenquelle automatisch verkabelt.

5. Fazit

Wir haben jetzt eine laufende Spring Boot App in Heroku.

Vor allem die Einfachheit, von einer einzelnen Idee zu einer laufenden Anwendung zu wechseln, macht Heroku zu einer soliden Bereitstellungsmethode.

Um mehr über Heroku und alle Tools zu erfahren, können wir mehr überheroku.com lesen.

Wie immer können Codefragmenteover on GitHub gefunden werden.