Share via


Azure Spring Apps에 배포할 애플리케이션 준비

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상: ✔️ 기본/표준 ✔️ 엔터프라이즈

이 문서에서는 Azure Spring Apps에 배포하기 위해 기존 Steeltoe 애플리케이션을 준비하는 방법을 보여줍니다. Azure Spring Apps는 Steeltoe 앱을 호스팅, 모니터링, 확장 및 업데이트하기 위한 강력한 서비스를 제공합니다.

이 문서에서는 Azure Spring Apps에서 .NET Core Steeltoe 앱을 실행하는 데 필요한 종속성, 구성 및 코드를 설명합니다. Azure Spring Apps에 애플리케이션을 배포하는 방법에 대한 자세한 내용은 Azure Spring Apps에서 첫 번째 Spring Boot 앱 배포를 참조하세요.

참고 항목

Azure Spring Apps에 대한 Steeltoe 지원은 현재 공개 미리 보기로 제공됩니다. 퍼블릭 미리 보기 제품을 통해 고객은 공식 릴리스 전에 새로운 기능을 시험해 볼 수 있습니다. 퍼블릭 미리 보기 기능 및 서비스는 프로덕션 용도로 사용되지 않습니다. 미리 보기 동안 제공되는 지원에 대한 자세한 내용은 FAQ를 참조하거나 지원 요청을 제출하세요.

지원되는 버전

Azure Spring Apps는 다음을 지원합니다.

  • .NET Core 3.1
  • Steeltoe 2.4 및 3.0

종속성

Steeltoe 2.4의 경우 프로젝트 파일에 최신 Microsoft.Azure.SpringCloud.Client 1.x.x 패키지를 추가합니다.

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="1.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.ExporterCore" Version="2.4.4" />
</ItemGroup>

Steeltoe 3.0의 경우 프로젝트 파일에 최신 Microsoft.Azure.SpringCloud.Client 2.x.x 패키지를 추가합니다.

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="3.0.0" />
</ItemGroup>

Program.cs 업데이트

Program.Main 메서드에서 UseAzureSpringCloudService 메서드를 호출합니다.

Steeltoe 2.4.4의 경우 ConfigureWebHostDefaults 이후에 UseAzureSpringCloudService를 호출하고 호출되는 경우 AddConfigServer 이후에 호출합니다.

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer()
        .UseAzureSpringCloudService();

Steeltoe 3.0.0의 경우 ConfigureWebHostDefaults 이전 및 Steeltoe 구성 코드 이전에 UseAzureSpringCloudService를 호출합니다.

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseAzureSpringCloudService()
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer();

Eureka 서버 서비스 검색 사용

참고 항목

Eureka는 엔터프라이즈 계획에 적용할 수 없습니다. 엔터프라이즈 계획을 사용하는 경우 Service Registry 사용을 참조하세요.

앱이 Azure Spring Apps에서 실행될 때 사용되는 구성 원본에서 spring.application.name을 프로젝트가 배포된 Azure Spring Apps 앱과 동일한 이름으로 설정합니다.

예를 들어 EurekaDataProvider라는 이름의 .NET 프로젝트를 planet-weather-provider라는 이름의 Azure Spring Apps 앱에 배포하는 경우 appSettings.json 파일은 다음 JSON을 포함해야 합니다.

"spring": {
  "application": {
    "name": "planet-weather-provider"
  }
}

서비스 검색 사용

Eureka 서버 서비스 검색을 사용하여 서비스를 호출하려면 app_name이 대상 앱의 spring.application.name 값인 http://<app_name>에 HTTP 요청을 수행합니다. 예를 들어 다음 코드는 planet-weather-provider 서비스를 호출합니다.

using (var client = new HttpClient(discoveryHandler, false))
{
    var responses = await Task.WhenAll(
        client.GetAsync("http://planet-weather-provider/weatherforecast/mercury"),
        client.GetAsync("http://planet-weather-provider/weatherforecast/saturn"));
    var weathers = await Task.WhenAll(from res in responses select res.Content.ReadAsStringAsync());
    return new[]
    {
        new KeyValuePair<string, string>("Mercury", weathers[0]),
        new KeyValuePair<string, string>("Saturn", weathers[1]),
    };
}

이 문서에서는 Azure Spring Apps에 배포하기 위해 기존 Java Spring 애플리케이션을 준비하는 방법을 보여 줍니다. 올바르게 구성된 경우 Azure Spring Apps는 Java Spring 애플리케이션을 모니터링, 확장 및 업데이트하기 위한 강력한 서비스를 제공합니다.

이 예제를 실행하기 전에 기본 빠른 시작을 시도해 볼 수 있습니다.

다른 예제에서는 POM 파일이 구성된 경우 Azure Spring Apps에 애플리케이션을 배포하는 방법을 설명합니다.

이 문서에서는 필요한 종속성과 이것을 POM 파일에 추가하는 방법을 설명합니다.

Java Runtime 버전

자세한 내용은 Azure Spring Apps FAQJava 런타임 및 OS 버전 섹션을 참조하세요.

Spring Boot 및 Spring Cloud 버전

Azure Spring Apps에 배포할 기존 Spring Boot 애플리케이션을 준비하려면 다음 섹션에 표시된 대로 애플리케이션 POM 파일에 Spring Boot 및 Spring Cloud 종속성을 포함합니다.

Azure Spring Apps는 릴리스 후 30일부터 최신 Spring Boot 또는 Spring Cloud 주 버전을 지원합니다. Azure Spring Apps는 릴리스되는 즉시 최신 부 버전을 지원합니다. 지원되는 Spring Boot 버전은 Spring Boot Releases에서, Spring Cloud 버전은 Spring Cloud Releases에서 얻을 수 있습니다.

아래 표에는 지원되는 Spring Boot 및 Spring Cloud 조합이 나와 있습니다.

Spring Boot 버전 Spring Cloud 버전 상업적 지원 종료
3.2.x 2023.0.x(Leyton이라고도 함) 2026-02-23
3.1.x 2022.0.3 이상(Kilburn이라고도 함) 2025-08-18
3.0.x 2022.0.3 이상(Kilburn이라고도 함) 2025-02-24
2.7.x 2021.0.3 이상(Jubilee라고도 함) 2025-08-24
2.6.x 2021.0.3 이상(Jubilee라고도 함) 2024-02-24

자세한 내용은 다음 페이지를 참조하세요.

서비스 레지스트리에서 분산 추적까지 Azure Spring Apps의 다양한 기본 제공 기능을 사용하도록 설정하려면 애플리케이션에 다음 종속성도 포함해야 합니다. 특정 앱에 해당하는 기능이 필요하지 않은 경우 이러한 종속성 중 일부를 삭제할 수 있습니다.

서비스 레지스트리

관리형 Azure Service Registry 서비스를 사용하려면 아래와 같이 spring-cloud-starter-netflix-eureka-client 종속성을 pom.xml 파일에 포함합니다.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

서비스 레지스트리 서버의 엔드포인트는 앱에 환경 변수로 자동 삽입됩니다. 애플리케이션은 Service Registry 서버에 자신을 등록하고 다른 종속 애플리케이션을 검색할 수 있습니다.

EnableDiscoveryClient 주석

애플리케이션 소스 코드에 다음 주석을 추가합니다.

@EnableDiscoveryClient

예를 들어, 이전 예제의 piggymetrics 애플리케이션을 참조하세요.

package com.piggymetrics.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy

public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

분산 구성

엔터프라이즈 계획에서 분산 구성을 사용하도록 설정하려면 독점적인 VMware Tanzu 구성 요소 중 하나인 VMware Tanzu용 애플리케이션 구성 서비스를 사용합니다. Tanzu용 애플리케이션 구성 서비스는 Kubernetes 기반이며 Spring Cloud Config Server와 다릅니다. Tanzu용 애플리케이션 구성 서비스를 사용하면 하나 이상의 Git 리포지토리에 정의된 속성으로 채워진 Kubernetes 네이티브 ConfigMap 리소스를 관리할 수 있습니다.

엔터프라이즈 계획에는 Spring Cloud Config Server가 없지만 Tanzu용 Application Configuration Service를 사용하여 중앙 집중식 구성을 관리할 수 있습니다. 자세한 내용은 Tanzu용 애플리케이션 구성 서비스 사용을 참조하세요.

Tanzu용 애플리케이션 구성 서비스를 사용하려면 각 앱에 대해 다음 단계를 수행합니다.

  1. 앱이 Tanzu용 애플리케이션 구성 서비스를 사용해야 함을 선언하는 명시적 앱 바인딩을 추가합니다.

    참고 항목

    바인딩/바인딩 해제 상태를 변경할 때 변경 내용을 적용하려면 앱을 다시 시작하거나 다시 배포해야 합니다.

  2. 구성 파일 패턴을 설정합니다. 구성 파일 패턴을 사용하면 앱에서 사용하는 애플리케이션과 프로필을 선택할 수 있습니다. 자세한 내용은 Tanzu용 애플리케이션 구성 서비스 사용패턴 섹션을 참조하세요.

    또 다른 옵션은 다음 예제와 같이 앱 배포와 동시에 구성 파일 패턴을 설정하는 것입니다.

       az spring app deploy \
           --name <app-name> \
           --artifact-path <path-to-your-JAR-file> \
           --config-file-pattern <config-file-pattern>
    

메트릭

다음과 같이 pom.xml 파일의 종속성 섹션에 spring-boot-starter-actuator 종속성을 포함합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

JMX 엔드포인트에서 메트릭을 정기적으로 끌어옵니다. Azure Portal을 사용하여 메트릭을 시각화할 수 있습니다.

Warning

구성 속성에 spring.jmx.enabled=true를 지정해야 합니다. 그렇지 않으면 Azure Portal에서 메트릭을 시각화할 수 없습니다.

참고 항목

다음 단계

이 문서에서는 Azure Spring Apps에 배포하기 위해 Java Spring 애플리케이션을 구성하는 방법을 배웠습니다. 구성 서버 인스턴스를 설정하는 방법을 알아보려면 구성 서버 인스턴스 설정을 참조하세요.

GitHub: Azure Spring Apps 샘플에서 더 많은 샘플을 사용할 수 있습니다.