演習 - 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 にデプロイする

  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>
    

    上記の構成では、前に構成した環境変数が使用されます。 この構成を機能させるには、 $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 インスタンスを使用するため、クラスター化されます。 1 つのインスタンスで書き込んだデータは、もう一方のインスタンスで使用できます。 クラウド サービスは、同じ Redis インスタンスを使用してビジネス データとセッション データの両方を格納するノードを追加することでスケールアウトできます。