Azure에서 Spring Boot 애플리케이션을 운영 환경에 배포하는 간단한 방법
왜'쉬운 방법'인가요?
use Kubernetes the hard way은 흥미롭지만, 생산 과정에서 Spring Boot 응용 프로그램을 배치하고 관리하는 것이 목표라면 고객이 이렇게 일할 시간과 돈이 없을 수도 있습니다.
운영 애플리케이션을 최대한 적게 배포하고 유지하는 것이 목표입니다.
git push
을 생산에 투입하는 것일 뿐, 다른 어떤 일도 걱정할 필요가 없다.예제 응용 프로그램
이 박문에 대해 우리는 a fork of the famous Spring Petclinic을 사용할 것이다.이것은 모두가 알고 있고 상세한 문서 기록이 있는 예시적인 스프링 안내 응용 프로그램입니다. 우리는 그것을 배치하기 편리하도록 선택한 것을 상세하게 소개할 것입니다.
이 응용 프로그램은 특별한 곳이 없기 때문에 Spring 안내 응용 프로그램을 사용하면(또는 더 좋은 것은 JHipster application!),너는 다음 절차에 따라 구름 위로 빠르게 들어갈 수 있을 것이다.
Azure 애플리케이션 서비스 개요
Spring Boot 응용 프로그램을 Azure에 배포할 수 있는 여러 가지 방법이 있습니다.분명히 가상 머신(VM)을 사용할 수 있습니다. 모든 것을 수동으로 설정하고 운영체제와 JVM의 유지 보수를 책임지며 HTTPS와 확장성을 스스로 처리해야 합니다...따라서 언뜻 보기는 쉽지만 시간이 걸리고 유지보수가 큰 문제가 될 것이다.
우리는 Azure App Service을 사용할 것이다. 이것은 일종의 플랫폼 즉 서비스 해결 방안이다.다른 언어와 Docker 이미지를 지원하기 때문에 모든 종류의 프로그램을 효과적으로 불러올 수 있습니다.그것도 very cost-efficient입니다.
관리형 서비스로서 가상 시스템에 비해 유지 보수 비용이 훨씬 적고 확장성이 포함되어 있어 단일 Spring 부트 응용 프로그램을 관리하는 좋은 방법이 되었다.만약 더 복잡한 수요가 있다면, 우리는 Azure Spring Cloud을 사용하는 것을 권장합니다. 이것은 유사한 개념이 많지만, 마이크로서비스 구조를 목표로 합니다.
Jar입니까, Docker입니까?
Azure App Service은 Jar배치와 Docker배치를 지원합니다. 이 두 가지 스프링부트 응용 프로그램을 배치하는 방법은 모두 좋은 문서 기록을 가지고 유행합니다.
여기에서 Jar 배포를 사용하는 것이 좋습니다. 운영 체제와 JVM은 모두 관리됩니다(및 지원됩니다!).이것은 네가 해야 할 유지 보수 업무가 훨씬 적다는 것을 의미한다.예를 들어, JVM에서 보안 취약점이 발견되면 수동 개입 없이 자동으로 패치됩니다.
Azure 애플리케이션 서비스 설치 프로그램
우선, 우리는 Azure 자원 그룹을 만들 것이다. 우리는 그 중에서 일할 것이다.
spring-petclinic
이라는 새로운 자원 그룹을 만듭니다.spring-petclinic
리소스 그룹에 새 웹 응용 프로그램을 만듭니다. 아래 화면 캡처와 같이: MySQL 설치 프로그램
많은 Spring Boot 응용 프로그램과 마찬가지로 Spring Petclinic은 MySQL 데이터베이스를 사용합니다. PostgreSQL과 같은 다른 데이터베이스를 사용한다면 설정과 유사해야 합니다.
Azure 응용 프로그램 서비스에는'응용 프로그램의 MySQL'이라는 기능이 있습니다. 이 기능을 사용하면 관리 비용을 낮출 수 있습니다. 왜냐하면 MySQL은 당신의 Azure 응용 프로그램 서비스 실례에서 실행되기 때문입니다.비록 이것은 개발에 사용할 수 있지만 몇 가지 중요한 한계가 있고 생산급 데이터베이스가 아니기 때문에 우리는 이곳에서 그것을 사용할 생각은 없다.
환경 변수
Spring Petclinic은
src/main/resources
디렉토리에 있는 속성 파일을 사용하여 구성됩니다.이 중 하나는 application-mysql.properties
입니다. 이것은 mysql
스프링 가이드 프로필을 터치할 때 사용할 것을 의미합니다.위에서 만든 Azure 응용 프로그램 서비스에서 왼쪽에 있는
Settings > Configuration
메뉴를 선택하십시오.두 가지 다른 설정을 구성해야 합니다.
mysql
구성 파일로 설정합니다.SPRING_PROFILES_ACTIVE
, SPRING_DATASOURCE_URL
과 SPRING_DATASOURCE_USERNAME
키의 환경 변수를 사용하여 데이터베이스 설정을 덮어씁니다.우리가 이곳에서 비밀을 처리하기 때문에, 또 다른 해결 방안은 Azure Key Vault을 사용하는 것이다.Spring Boot을 사용하여 Azure Key Vault Secrets Spring Boot Starter으로 구성할 수 있습니다.이것은 프로젝트에 약간의 복잡성을 증가시켰고 우리의 특정 용례의 환경 변수보다 안전하지 않다. (결국, 둘 다 스프링 가이드 속성이 되고 코드에서 읽을 수 있기 때문에) 이것은 비밀 하나만 저장하는 데 있어서 이'쉽게 배치'문장의 범위를 넘어섰다.
Azure Webapp Maven 플러그인 배포 사용
현재 우리의 응용 프로그램 서비스는 이미 설정되어 있으며, 우리가 해야 할 일은 우리의 응용 프로그램을 배치하는 것이다.첫 번째 솔루션에서는 Azure Webapp Maven 플러그인을 사용합니다.이것은 대부분의 개발자들이 사용할 것이다. 왜냐하면 그것은 그들의 IDE에 집적하기 쉽기 때문이다.
SPRING_DATASOURCE_PASSWORD
파일에 다음 Maven 플러그인을 추가합니다. <plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>1.8.0</version>
<configuration>
<schemaVersion>V2</schemaVersion>
<resourceGroup>spring-petclinic</resourceGroup>
<appName>jdubois-petclinic</appName>
<region>westeurope</region>
<pricingTier>B1</pricingTier>
<runtime>
<os>linux</os>
<javaVersion>java11</javaVersion>
<webContainer>java11</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
물론 pom.xml
, resourceGroup
, appName
및 region
에 정확한 매개 변수를 설정해야 합니다.이 솔루션은 개발자에게 매우 사용하기 쉽지만 다음과 같은 단점이 있습니다.
pricingTier
에 저장되며 환경 변화에 따라 설정해야 하는 것을 포함한다.GitHub를 통한 자동화된 배포
Azure Webapp Maven 플러그인의 새로운 대안은 GitHub 작업을 사용하는 것입니다.
애플리케이션을 Azure에 게시하려면 GitHub 작업을 승인해야 합니다.
pom.xml
을 누르십시오.Get publish profile
파일을 다운로드할 것입니다..PublishSettings
으로 넘어가 Settings > Secrets
이라는 새로운 비밀을 만듭니다.이전 azureWebAppPublishProfile
파일의 내용을 이 기밀에 붙여넣습니다..PublishSettings
이라는 파일을 만들고 다음 내용을 붙여넣습니다.name: Build and deploy to Azure App Service
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Cache Maven archetypes
uses: actions/cache@v1
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Build with Maven
run: mvn clean package
- uses: azure/webapps-deploy@v1
with:
app-name: spring-petclinic
publish-profile: ${{ secrets.azureWebAppPublishProfile }} # See https://github.com/Azure/actions-workflow-samples/tree/master/AppService
package: '${{ github.workspace }}/target/*.jar'
다음은 이 GitHub 작업에 대한 간략한 설명입니다..github/workflows/build-and-deploy.yml
지점으로 전송되면 업데이트된 Azure 응용 프로그램 서비스 응용 프로그램을 발표합니다.다른 지점에서 GitHub와 유사한 작업을 수행할 수 있습니다. 프로젝트 개발자나 환경별로 설정할 수 있습니다.master
GitHub 작업을 사용하여 Maven 원형을 캐시합니다. 이것은 구축 시간을 크게 단축시켰기 때문에 사용하는 것을 강력히 권장합니다.actions/cache
GitHub를 사용하여 최종 어플리케이션을 배포합니다.또한 이전 섹션에서 자세히 설명한 azure/webapps-deploy
을 사용하여 배포할 수도 있지만 이 GitHub 작업은 코드(Azure Webapp Maven plugin
에 특정한 Azure 구성이나 라이브러리가 없음)를 더 잘 풀 수 있고 실행 속도가 더 빠릅니다.마지막 생각
우리는 두 가지 목표를 실현했다.
pom.xml
만 있으면 그들의 Spring Boot 응용 프로그램을 배치할 수 있으며, 심지어는 Azure 응용 프로그램 서비스에 대한 정보를 알 필요가 없다.git push
저장소에 숨겨진 파일을 추가하기만 하면 됩니다.최종 신청을 자세히 보고 싶다면, my fork of Spring Petclinic is available here.
Reference
이 문제에 관하여(Azure에서 Spring Boot 애플리케이션을 운영 환경에 배포하는 간단한 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/azure/the-easy-way-to-deploy-a-spring-boot-application-to-production-on-azure-2joi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)