演習 - Azure に Spring Boot Redis アプリケーションをデプロイする
すべてがローカルで実行されているので、アプリケーションをクラウドにデプロイし、その動作を運用環境でテストできます。
Azure App Service インスタンスを作成する
アプリケーションをホストする Azure App Service インスタンスを作成します。 次の Azure CLI コードを使って、Linux を使用する基本的な App Service プランを作成してから、そのプランの App Service に Java のインスタンスを追加します。
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
Note
上記のコードでは、$AZ_REDIS_NAME
変数を再利用して App Service プランと App Service インスタンスに名前を指定しますが、異なる名前を使用できます。 App Service インスタンス名は URL の一部であり、Azure 全体で一意にする必要があります。
このデプロイの完了時に、次の手順を行うことができます。
Azure App Service に Spring Boot アプリケーションをデプロイする
プロジェクトの 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>
Note
上記の構成では、前に構成した環境変数を使用します。 この構成を機能させるために、必ず、
$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 インスタンスを使用しているので、クラスター化されています。 一方のインスタンスで作成したデータを、他方のインスタンスで使用できます。 また、すべて同じ Redis インスタンスを使用してビジネス データとセッション データの両方を格納するノードをさらに追加することで、クラウド サービスのスケール アウトが可能になります。