演習 - Azure に Spring Boot Redis アプリケーションをデプロイする
すべてがローカルで実行されたので、アプリケーションをクラウドにデプロイし、運用環境でその動作をテストできます。
Azure App Service インスタンスを作成する
アプリケーションをホストする Azure App Service インスタンスを作成します。 次の Azure CLI コードを使用して、Linux を使用する基本的な App Service プランを作成し、そのプランに Java on App Service のインスタンスを追加します。
Java 8 の代わりに Java 11 または Java 17 を使用するには、web アプリケーション ランタイムとして"JAVA|8-jre8"
ではなく、"JAVA|<version>-java<version>"
を使用します。
az appservice plan create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_REDIS_NAME-webapp-plan \
--is-linux \
--sku B1
az webapp create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_REDIS_NAME-webapp \
--runtime "JAVA|8-jre8" \
--plan $AZ_REDIS_NAME-webapp-plan
注
上記のコードでは、 $AZ_REDIS_NAME
変数を再利用して App Service プランと App Service インスタンスに名前を付けますが、異なる名前を使用できます。 App Service インスタンス名は URL の一部であり、Azure 全体で一意である必要があります。
このデプロイが完了したら、次の手順を実行できます。
Spring Boot アプリケーションを Azure App Service にデプロイする
プロジェクトの pom.xml ファイルで、
<plugins>
セクションに次の新しいプラグインを追加します。<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.11.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>${env.AZ_RESOURCE_GROUP}</resourceGroup> <appName>${env.AZ_REDIS_NAME}-webapp</appName> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
注
上記の構成では、前に構成した環境変数が使用されます。 この構成を機能させるには、
$AZ_RESOURCE_GROUP
変数と$AZ_REDIS_NAME
変数が正しく設定されていることを確認します。App Service のデプロイが完了したら、次のコマンドを実行してアプリケーションをパッケージ化し、Azure にデプロイします。
./mvnw package azure-webapp:deploy
デプロイが正常に完了すると、次の行が返されます。
Successfully deployed the artifact to https://<redisName>-webapp.azurewebsites.net
前の出力に示すように、次のセクションで使用する実行中のアプリケーションの URL をメモします。
Azure でアプリケーションをテストする
アプリケーション URL を使用して、ローカル サーバーで使用したのと同じクライアント URL (cURL) コマンドをクラウドで実行します。
データ項目を追加するには、次のコマンドを実行します。
curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
データを取得するには、次のコマンドを実行します。
curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
セッションをインクリメントするには、次のコマンドを複数回実行します。
curl -b cookie.txt -c cookie.txt https://$AZ_REDIS_NAME-webapp.azurewebsites.net/session
ローカル サーバーとクラウド サービスは同じ Redis インスタンスを使用するため、クラスター化されます。 1 つのインスタンスで書き込んだデータは、もう一方のインスタンスで使用できます。 クラウド サービスは、同じ Redis インスタンスを使用してビジネス データとセッション データの両方を格納するノードを追加することでスケールアウトできます。