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で見つけることができます。