Spring CloudコネクタとHeroku

Spring CloudコネクタとHeroku

1. 概要

この記事では、SpringCloudコネクタを使用してHerokuでSpringBootアプリケーションをセットアップする方法について説明します。

Heroku is a service that provides hosting for web services.また、システム監視からデータベースストレージまですべてを提供する、アドオンと呼ばれるさまざまなサードパーティサービスを提供します。

これらすべてに加えて、Gitにシームレスに統合するカスタムCI / CDパイプラインがあり、本番環境への開発を促進します。

Spring supports Heroku through it’s Spring Cloud Connectors library.これを使用して、アプリケーションでPostgreSQLデータソースを自動的に構成します。

アプリの作成に取り掛かりましょう。

2. Spring Boot Book Service

まず、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 CLIができたので、アプリに戻りましょう。

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

Herokuは、ソース管理としてgitを使用する場合に最適に機能します。

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

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

4.2. HerokuWebアプリをプロビジョニングする

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

最初に、Herokuアカウントを認証する必要があります。 From the command line run heroku login and follow the instructions for logging in and creating an SSH key.

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

4.3. コードをHerokuにプッシュ

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

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

コンソール出力では、アップロードが成功したことを示すログが表示され、システムが依存関係をダウンロードし、アプリケーションをビルドし、テストを実行し(存在する場合)、すべてが順調に進んだ場合にアプリをデプロイします。

これで、アプリケーションがWebサーバーに公開されました。

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

これにより、Webサーバーのデータベースがプロビジョニングされ、接続情報を提供する環境変数が追加されます。

SpringがPostgreSQLを使用したいことを検出できる場合、Spring Cloud Connector is configured to detect this variable and set up the data source automatically

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

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


    org.postgresql
    postgresql
    9.4-1201-jdbc4

次に、プロパティを追加して、Spring DataConnectorsが利用可能なリソースに従ってデータベースを構成できるようにします。

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 Connectorが、HerokuとPostgreSQLを使用していることを検出し、Herokuデータソースを自動的に接続するためです。

5. 結論

Herokuで実行中のSpring Bootアプリができました。

何よりも、単一のアイデアから実行中のアプリケーションに移行するシンプルさが、Herokuをデプロイするための堅実な方法にしています。

Herokuとすべてのツールの詳細については、heroku.comで詳細を読むことができます。

いつものように、コードスニペットはover on GitHubで見つけることができます。