연습 - Azure에 Spring Boot Redis 애플리케이션 배포

완료됨

모든 항목을 로컬로 실행했으므로 이제 애플리케이션을 클라우드에 배포하고 프로덕션 환경에서 해당 동작을 테스트할 수 있습니다.

Azure App Service 인스턴스 만들기

애플리케이션을 호스트하는 Azure App Service 인스턴스를 만듭니다. 다음 Azure CLI 코드를 사용하여 Linux를 사용하는 기본 App Service 요금제를 만든 다음 해당 계획의 App Service에 Java 인스턴스를 추가합니다.

Java 8 대신 Java 11 또는 Java 17을 사용하려면 "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에서 고유해야 합니다.

이 배포가 완료되는 동안 다음 단계를 수행할 수 있습니다.

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>
    

    참고

    위의 구성에서는 이전에 구성한 환경 변수를 사용합니다. 이 구성이 작동하려면 $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을 사용하여 로컬 서버에서 사용한 것과 동일한 cURL(클라이언트 URL) 명령을 클라우드에서 실행합니다.

  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 인스턴스를 사용하여 비즈니스 데이터와 세션 데이터를 모두 저장하는 노드를 더 추가하여 확장할 수 있습니다.