Azure App Service에 웹앱 배포

완료됨

azure-webapp-maven-plugin에는 Java 개발자를 위한 두 가지 목표가 있습니다. 하나는 Azure App Service 플러그인을 보다 쉽게 관리하고 구성하도록 지원하는 것이고, 다른 하나는 Azure App Service로의 Maven 프로젝트 배포를 간소화하는 것입니다. 이전 연습에서는 간단한 “hello world” 예제 Java 웹앱을 만들고 로컬로 테스트했습니다. 프로젝트에 Azure App Service용 Maven 플러그인을 추가하면 앱을 Azure App Service에 배포할 수 있습니다.

이 단원에서는 회사에서 Azure App Service에서 앱을 호스트하는 옵션을 살펴본 다음, Maven 프로젝트에 앱을 추가하고 azure-webapp-maven-plugin을 구성하는 방법을 알아봅니다.

Azure App Service 소개

Azure App Service를 사용하면 회사의 웹 사이트, 웹앱, REST API 및 기타 애플리케이션 코드를 Azure에서 호스트할 수 있습니다. 프로젝트 코드가 클라우드에서 실행되므로 인프라를 프로비저닝하거나 구성할 필요가 없습니다. 웹앱을 Azure App Service에서 실행하면 앱을 전역적으로 사용 가능하고, 앱이 자동으로 규모 확장되며, 보안 및 규정 준수가 기본 제공되고, 사용한 리소스에 대해서만 요금을 지불하는 등 Azure에서 실행함으로써 제공되는 모든 이점을 누릴 수 있습니다.

Azure App Service는 다양한 프로그래밍 언어를 지원하므로 개발자는 자신에게 익숙한 언어를 사용하여 애플리케이션을 작성할 수 있습니다. Java를 비롯해 .NET Core, Python, node.js와 같은 언어가 지원됩니다. 사용자가 만든 웹앱은 Linux나 Windows에, 또는 Docker 컨테이너 내부에 호스트할 수 있습니다. Azure에 웹앱을 배포하려면 먼저 앱에 필요한 프로비저닝된 컴퓨팅 리소스의 크기를 결정하는 가격 책정 계층 및 OS를 지정하는 App Service 계획을 만들어야 합니다.

Maven 워크플로

Maven에는 default, clean, site와 같이 프로젝트 빌드를 위한 3가지 기본 제공 수명 주기가 있습니다. 이 중에서 default 수명 주기는 다음과 같은 단계를 포함합니다.

단계 설명
compile 코드를 컴파일합니다.
package 코드를 JAR 또는 WAR로 패키징합니다.
install 패키지를 로컬 리포지토리에 설치합니다.
deploy 최종 패키지를 원격 리포지토리에 복사합니다.

단, Azure App Service용 Maven 플러그 인을 사용할 때는 Maven의 default 수명 주기에 포함된 배포 단계를 사용하지 않습니다. mvn azure-webapp:deploy 명령을 사용하여 앱을 Azure에 배포합니다.

프로젝트에 Azure App Service용 Maven 플러그인 추가

Azure App Service용 Maven 플러그 인을 웹앱에 추가하려면 다음과 같이 프로젝트의 pom.xml 파일에 azure-webapp-maven-plugin에 대한 XML을 추가합니다.

<plugin>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>azure-webapp-maven-plugin</artifactId>
  <version>2.13.0</version>
</plugin>

그러나 플러그 인은 POM 파일에 구성을 추가하는 편리한 대화형 방법을 제공합니다.

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config

플러그 인은 App Service 요금제를 구성하는 데 필요한 정보를 묻는 메시지를 표시합니다. 선택 사항을 확인하면 이전 플러그 인 요소와 Azure App Service에서 실행되도록 웹앱을 구성하는 필수 설정이 프로젝트의 pom.xml 파일에 추가됩니다.

참고 항목

Azure App Service용 Maven 플러그인 설명서 또는 Maven 중앙 리포지토리에서 최신 버전의 Maven 플러그인에 대한 정보를 확인하세요.

구성 옵션

이 단원의 이전 섹션에서는 Azure App Service용 Maven 플러그인을 대화형으로 사용하여 웹앱을 구성하는 방법을 보여 주었습니다. 그러나 원하는 경우 구성을 대화형으로 실행하지 않고 프로젝트의 pom.xml 파일에 수동으로 플러그인 XML을 추가할 수 있습니다.

다음의 주석 달린 pom.xml 파일 발췌문에서는 필요한 몇 가지 설정을 보여 줍니다.

<plugin> 
  <groupId>com.microsoft.azure</groupId>  
  <artifactId>azure-webapp-maven-plugin</artifactId>  
  <version>2.13.0</version>  
  <configuration> 
    <schemaVersion>v2</schemaVersion>  
    <subscriptionId>aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e</subscriptionId>  
    <resourceGroup>learn-9c627899-58ae-4ef5-9630-3336ec7bce0c</resourceGroup>  
    <appName>MyWebApp-1610102860270</appName>  
    <pricingTier>S1</pricingTier>  
    <region>westus</region>  
    <runtime> 
      <os>Linux</os>  
      <javaVersion>Java 17</javaVersion>  
      <webContainer>Tomcat 10.0</webContainer> 
    </runtime>  
    <deployment> 
      <resources> 
        <resource> 
          <directory>${project.basedir}/target</directory>  
          <includes> 
            <include>*.war</include> 
          </includes> 
        </resource> 
      </resources> 
    </deployment> 
  </configuration> 
</plugin> 

다음 표에 몇 가지 관련 구성 옵션이 나와 있습니다. 전체 옵션 목록은 Azure App Service용 Maven 플러그인 설명서를 참조하세요.

태그 옵션
<javaVersion> Linux에서는 버전 8, 11 및 17을 지원합니다.
Windows에서는 버전 8, 11 및 17을 지원합니다.
<webContainer> Linux에서는 Tomcat, JBoss EAP 7.2 및 Java SE를 지원합니다.
Windows에서는 Tomcat 및 Java SE를 지원합니다.
<resource> 프로젝트에서 WAR 또는 JAR가 있는 위치를 지정합니다.

배포 옵션

App Service 계획을 이미 만든 경우 pom.xml 파일에 해당 플랜의 설정을 지정할 수 있습니다. 웹앱을 Azure에 배포하면 Maven은 이 설정을 사용하여 새 앱을 기존 App Service 요금제에 배포합니다.

<!-- Deploy Web App to the existing App Service Plan -->
<appServicePlanResourceGroup>${PLAN_RESOURCEGROUP_NAME}</appServicePlanResourceGroup>
<appServicePlanName>${PLAN_NAME}</appServicePlanName>

또 다른 옵션은 사용자가 대화형으로 플러그인 설정을 구성할 때 azure-webapp-maven-plugin에서 App Service 계획을 대신 만들도록 허용하는 것입니다. 이 옵션은 pom.xml 파일에 기존 App Service 계획을 지정하지 않은 경우 플러그인의 기본 동작입니다.

App Service 요금제를 대화형으로 만들든 수동으로 만들든, 애플리케이션 코드를 Azure에 배포할 때 동일한 Maven 명령을 사용합니다.

mvn package azure-webapp:deploy

다음 연습에서는 웹앱을 Azure App Service에 배포합니다.