演習 - 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 アプリケーションをデプロイする

  1. プロジェクトの 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 変数を正しく設定してください。

  2. App Service デプロイが完了した後、次のコマンドを実行してアプリケーションをパッケージ化し、Azure にデプロイします。

    ./mvnw package azure-webapp:deploy
    
  3. デプロイが正常に完了すると、次の行が返されます。

    Successfully deployed the artifact to https://<redisName>-webapp.azurewebsites.net
    

    次のセクションで使用するため、前の出力に示されている、実行中のアプリケーションの URL をメモしておきます。

Azure でアプリケーションをテストする

アプリケーション URL を使用して、ローカル サーバーで使用したのと同じクライアント URL (cURL) コマンドをクラウドで実行します。

  1. データ項目を追加するには、次のコマンドを実行します。

    curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  2. データを取得するには、以下を実行します。

    curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  3. セッションをインクリメントするには、次のコマンドを数回実行します。

    curl -b cookie.txt -c cookie.txt https://$AZ_REDIS_NAME-webapp.azurewebsites.net/session
    

ローカル サーバーとクラウド サービスは、同じ Redis インスタンスを使用しているので、クラスター化されています。 一方のインスタンスで作成したデータを、他方のインスタンスで使用できます。 また、すべて同じ Redis インスタンスを使用してビジネス データとセッション データの両方を格納するノードをさらに追加することで、クラウド サービスのスケール アウトが可能になります。