Spring CloudコネクタとHeroku

1概要

この記事では、Spring Cloudコネクタを使用してHerokuにSpring Bootアプリケーションを設定する方法について説明します。

  • Herokuは、Webサービスのホスティングを提供するサービスです。** また、アドオンと呼ばれる、システム監視からデータベースストレージまでのすべてを提供する多数のサードパーティサービスを提供します。

これらすべてに加えて、彼らはGitにシームレスに統合するカスタムCI/CDパイプラインを持っています。

  • Springは、Spring Cloud Connectorsライブラリを介してHerokuをサポートしています** アプリケーション内でPostgreSQLデータソースを自動的に設定するためにこれを使用します。

アプリの作成に移りましょう。

2 Spring Boot Bookサービス

まず、リンクを作成しましょう:/spring-boot-start[新しいシンプルなSpring Bootサービス]。

3 Herokuサインアップ

  • それでは、Herokuアカウントにサインアップする必要があります** heroku.com にアクセスして、ページの右上隅にあるサインアップボタンをクリックします。

アカウントを取得したので、CLIツールを入手する必要があります。 heroku-cli インストールページに移動してこのソフトウェアをインストールする必要があります。これで、このチュートリアルを完了するために必要なツールがわかりました。

4 Herokuアプリケーションを作成する

これでHeroku CLIが完成したので、アプリに戻りましょう。

** 4.1. Gitリポジトリを初期化する

**

Herokuはgitをソース管理として使用するときに最も効果的です。

まず、アプリケーションのルート( pom.xml ファイルと同じディレクトリ)に移動し、 git init コマンドを実行してgitリポジトリを作成します。それから git add . git commit -m“ first commit” を実行します。

これで、アプリケーションをローカルのgitリポジトリに保存しました。

4.2. Heroku Web Appをプロビジョニングする

次に、Heroku CLIを使用して、アカウントにWebサーバーをプロビジョニングしましょう。

まず、Herokuアカウントを認証する必要があります。 ** コマンドラインから heroku login を実行し、ログインしてSSHキーを作成するための指示に従います。

次に、 heroku create を実行します。これによりWebサーバーがプロビジョニングされ、展開用にコードをプッシュできるリモートリポジトリが追加されます。また、コンソールにドメインが表示されますので、後でアクセスできるようにこのドメインをコピーしてください。

4.3. Herokuにプッシュコード

それでは、gitを使用してコードを新しいHerokuリポジトリにプッシュします。

コードをHerokuに送信するには、 git push heroku master コマンドを実行します。

コンソールの出力には、アップロードが成功したことを示すログが表示されます。その後、システムは依存関係をダウンロードし、アプリケーションをビルドし、テストがあればテストを実行し、すべてが順調に進みます

つまり、私たちのアプリケーションはWebサーバーに公開されています。

5 Heroku のメモリ内テスト

アプリが機能していることを確認しましょう。作成ステップのドメインを使用して、実際のアプリケーションをテストしましょう。

いくつかのHTTPリクエストを発行しましょう。

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

我々は戻ってくるべきです:

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

それでは、今作成したオブジェクトを読みましょう。

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

これは戻ります:

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

すべてが良さそうに見えますが、本番環境では、恒久的なデータストアを使用します。

PostgreSQLデータベースをプロビジョニングし、それを使用するようにSpringアプリケーションを設定する方法を見ていきましょう。

6. PostgreSQL を追加する

PostgreSQLデータベースを追加するには、次のコマンドを実行します。 heroku addons:create heroku-postgresql:hobby-dev

これは私たちのWebサーバーのためのデータベースを準備し、接続情報を提供する環境変数を追加します。

SpringがPostgreSQLを使用することを検出できることを考えると、Spring Cloud Connectorはこの変数を検出してデータソースを自動的に設定するように設定されています。

Spring BootにPostgreSQLを使用していることを知らせるには、2つの変更を加える必要があります。

まず、PostgreSQLドライバを含めるための依存関係を追加する必要があります。

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.4-1201-jdbc4</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に設定しました。

さらに、bookテーブルが自動的に作成されるように、 hibernate.ddl プロパティをcreateに設定します。

最後に、これらの変更をコミットして git push heroku master を実行します。これにより、これらの変更がHerokuアプリケーションにプッシュされます。アプリが起動したら、前のセクションのテストを実行してみてください。

最後にやることはddl設定を変更することです。その値も更新しましょう。

spring.jpa.hibernate.ddl-auto=update

これは、アプリケーションの再起動時にエンティティに変更が加えられたときにスキーマを更新するようにアプリケーションに指示します。変更を以前のようにコミットしてプッシュし、変更をHerokuアプリにプッシュします。

このためにカスタムデータソース統合を作成する必要はありませんでした。これは、Spring Cloud Connectorsが、Herokuを使用してPostgreSQLを使用していることを検出し、Herokuデータソースを自動的に接続するためです。

** 5結論

**

HerokuでSpring Bootアプリが起動しました。

とりわけ、単一のアイデアから実行中のアプリケーションへの移行が簡単なため、Herokuは確実にデプロイできます。

Herokuとすべてのツールの詳細については、https://www.heroku.com/[heroku.com]を参照してください。

いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/spring-cloud/spring-cloud-connectors-heroku[over GitHub]で見つけることができます。