Spring Cloud 애플리케이션을 Azure Spring Apps로 마이그레이션

참고 항목

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

이 가이드에서는 Azure Spring Apps에서 실행되도록 기존 Spring Cloud 애플리케이션을 마이그레이션할 때 알아야 할 사항에 대해 설명합니다.

사전 마이그레이션

마이그레이션을 성공적으로 수행하려면 시작하기 전에 다음 섹션에서 설명하는 평가 및 인벤토리 단계를 완료합니다.

이러한 마이그레이션 전 요구 사항 중에서 충족할 수 없는 요구 사항이 있는 경우 다음 마이그레이션 관련 가이드를 참조하세요.

  • 실행 가능한 JAR 애플리케이션을 Azure Kubernetes Service의 컨테이너로 마이그레이션(지침 계획)
  • 실행 파일 JAR 애플리케이션을 Azure Virtual Machines로 마이그레이션(지침 계획)

애플리케이션 구성 요소 검사

파일 시스템의 사용 여부 및 방법 확인

서비스가 로컬 파일 시스템에 쓰거나 읽는 인스턴스를 찾습니다. 단기/임시 파일을 쓰고 읽는 위치와 수명이 긴 파일을 쓰고 읽는 위치를 식별합니다.

참고 항목

Azure Spring Apps는 탑재된 Azure Spring Apps 인스턴스당 5GB의 임시 스토리지를 /tmp제공합니다. 임시 파일이 해당 제한을 초과하거나 다른 위치에 기록되는 경우 코드 변경이 필요합니다.

읽기 전용 정적 콘텐츠

애플리케이션이 현재 정적 콘텐츠를 제공하는 경우 대체 위치가 필요합니다. 정적 콘텐츠를 Azure Blob Storage로 이동하고 전역적으로 빠른 다운로드를 위해 Azure CDN을 추가하는 것이 좋습니다. 자세한 내용은 Azure Storage빠른 시작에서 정적 웹 사이트 호스팅: Azure CDN과 Azure Storage 계정 통합을 참조하세요.

동적으로 게시된 정적 콘텐츠

애플리케이션이 애플리케이션에서 업로드/생성되었지만 생성 후 변경할 수 없는 정적 콘텐츠를 허용하는 경우, 위에서 설명한 대로 Azure Blob Storage 및 Azure CDN과 Azure Function을 사용하여 업로드 및 CDN 새로 고침을 처리할 수 있습니다. Azure Functions를 사용하여 정적 콘텐츠를 업로드 및 CDN 미리 로드할 때 사용할 샘플 구현을 제공했습니다.

서비스에 OS 관련 코드가 포함되어 있는지 확인

호스트 OS에 대한 종속성이 있는 코드가 애플리케이션에 포함되어 있는 경우 해당 종속성을 제거하려면 이 코드를 리팩터링해야 합니다. 예를 들어 파일 시스템 경로에서 사용하고 있는 / 또는 \File.Separator 또는 Paths.get으로 바꿔야 할 수 있습니다.

지원되는 플랫폼으로 전환

Azure Spring Apps는 특정 버전의 Java 및 특정 버전의 Spring Boot 및 Spring Cloud를 제공합니다. 호환성을 보장하려면 먼저 애플리케이션을 현재 환경에서 지원되는 Java 버전 중 하나로 마이그레이션한 다음, 나머지 마이그레이션 단계를 진행합니다. 결과 구성을 완전히 테스트해야 합니다. 이러한 테스트에서 Linux 배포판의 안정적인 최신 릴리스를 사용합니다.

참고 항목

이 유효성 검사는 현재 서버가 지원되지 않는 JDK(예: Oracle JDK 또는 IBM OpenJ9)에서 실행 중인 경우에 특히 중요합니다.

현재 Java 버전을 가져오려면 프로덕션 서버에 로그인하고 다음 명령을 실행합니다.

java -version

지원되는 버전의 Java, Spring Boot 및 Spring Cloud와 업데이트에 대한 지침은 Azure Spring Apps에서 배포할 애플리케이션 준비를 참조 하세요.

Spring Boot 버전 식별

마이그레이션되는 각 애플리케이션의 종속성을 검사하여 Spring Boot 버전을 확인합니다.

Maven

Maven 프로젝트에서 Spring Boot 버전은 일반적으로 POM 파일의 <parent> 요소에 있습니다.

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

Gradle 프로젝트에서 Spring Boot 버전은 일반적으로 플러그 인 버전 org.springframework.boot 으로 섹션에서 찾을 plugins 수 있습니다.

plugins {
  id 'org.springframework.boot' version '2.7.10'
  id 'io.spring.dependency-management' version '1.0.15.RELEASE'
  id 'java'
}

Spring Boot 1.x를 사용하는 모든 애플리케이션의 경우 Spring Boot 2.0 마이그레이션 가이드에 따라 지원되는 Spring Boot 버전으로 업데이트합니다. 지원되는 버전은 Azure Spring Apps에서 배포할 애플리케이션 준비의 Spring Boot 및 Spring Cloud 버전 섹션을 참조하세요.

Spring Cloud 버전 식별

마이그레이션하는 각 애플리케이션의 종속성을 검사하여 사용하는 Spring Cloud 구성 요소의 버전을 확인합니다.

Maven

Maven 프로젝트에서 Spring Cloud 버전은 일반적으로 속성에 spring-cloud.version 설정됩니다.

  <properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>2021.0.6</spring-cloud.version>
  </properties>
Gradle

Gradle 프로젝트에서 Spring Cloud 버전은 일반적으로 "추가 속성" 블록에 설정됩니다.

ext {
  set('springCloudVersion', "2021.0.6")
}

지원되는 버전의 Spring Cloud를 사용하도록 모든 애플리케이션을 업데이트해야 합니다. 지원되는 버전 목록은 Azure Spring Apps에서 배포할 애플리케이션 준비의 Spring Boot 및 Spring Cloud 버전 섹션을 참조하세요.

로그 집계 솔루션 식별

마이그레이션하는 애플리케이션에서 사용 중인 로그 집계 솔루션을 식별합니다. 기록된 이벤트를 사용할 수 있도록 마이그레이션에서 진단 설정을 구성해야 합니다. 자세한 내용은 콘솔 로깅 보장 및 진단 설정 구성 섹션을 참조하세요.

APM(애플리케이션 성능 관리) 에이전트 식별

애플리케이션과 함께 사용 중인 애플리케이션 성능 모니터링 에이전트를 식별합니다. Azure Spring Apps는 Application Insights, New Relic, Elastic APM, Dynatrace 및 AppDynamics와의 통합을 지원합니다. 애플리케이션이 지원되는 APM을 사용하는 경우 마이그레이션에서 통합을 구성합니다. 애플리케이션에서 지원되는 APM을 사용하지 않는 경우 Application Insights를 대신 사용하는 것이 좋습니다. 자세한 내용은 마이그레이션 섹션을 참조하세요.

Zipkin 종속성 식별

애플리케이션에 Zipkin에 대한 종속성이 있는지 여부를 확인합니다. Application Insights를 대신 사용하도록 애플리케이션을 업데이트합니다. 자세한 내용은 Azure Spring Apps마이그레이션 후 섹션에서 Application Insights Java In-Process 에이전트 사용을 참조하세요.

인벤토리 외부 리소스

데이터 원본, JMS 메시지 브로커 및 다른 서비스의 URL과 같은 외부 리소스를 식별합니다. Spring Cloud 애플리케이션에서는 일반적으로 다음 위치 중 하나에서 이러한 리소스에 대한 구성을 찾을 수 있습니다.

  • src/기본/디렉터리 폴더의 파일에서 일반적으로 application.properties 또는 application.yml.
  • 이전 단계에서 식별한 Spring Cloud 구성 리포지토리에서

데이터베이스

SQL 데이터베이스의 연결 문자열을 확인합니다.

Spring Boot 애플리케이션의 경우 연결 문자열 일반적으로 구성 파일에 표시됩니다.

다음은 application.properties 파일의 예제입니다.

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

다음은 application.yaml 파일의 예제입니다.

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

가능한 구성 시나리오는 다음 Spring Data 설명서를 참조하세요.

JMS 메시지 브로커

관련 종속성에 대한 빌드 매니페스트(일반적으로 pom.xml 또는 build.gradle 파일)를 확인하여 사용 중인 broker 또는 broker를 식별합니다.

예를 들어 ActiveMQ를 사용하는 Spring Boot 애플리케이션은 일반적으로 pom.xml 파일에 이 종속성을 포함합니다.

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

상업용 브로커를 사용하는 Spring Boot 애플리케이션은 일반적으로 broker의 JMS 드라이버 라이브러리에 직접 종속성을 포함합니다. build.gradle 파일의 예제는 다음과 같습니다.

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.0.4.0")
      ...
    }

사용 중인 broker 또는 broker를 식별한 후 해당 설정을 찾습니다. Spring Cloud 애플리케이션에서는 일반적으로 애플리케이션 디렉터리 또는 Spring Cloud 구성 서버 리포지토리의 application.propertiesapplication.yml 파일에서 찾을 수 있습니다.

application.properties 파일의 ActiveMQ 예제는 다음과 같습니다.

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=tryandguess

ActiveMQ 구성에 대한 자세한 내용은 Spring Boot 메시징 설명서를 참조하세요.

application.yaml 파일의 IBM MQ 예제는 다음과 같습니다.

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: big$ecr3t

IBM MQ 구성에 대한 자세한 내용은 IBM MQ Spring 구성 요소 설명서를 참조 하세요.

외부 캐시 확인

사용 중인 외부 캐시를 확인합니다. Redis는 Spring Data Redis를 통해 자주 사용됩니다. 구성 정보는 Spring Data Redis 설명서를 참조하세요.

Java 또는 XML에서 각 구성을 검색하여 Spring Session을 통해 세션 데이터가 캐시되는지 여부를 확인합니다.

ID 공급자

인증 및/또는 권한 부여가 필요한 모든 ID 공급자 및 모든 Spring Cloud 애플리케이션을 확인합니다. ID 공급자를 구성하는 방법에 대한 자세한 내용은 다음 리소스를 참조하세요.

  • OAuth2 구성은 Spring Cloud Security 빠른 시작을 참조 하세요.
  • Auth0 Spring Security 구성은 Auth0 Spring Security 설명서를 참조하세요.
  • PingFederate Spring Security 구성은 Auth0 PingFederate 지침을 참조 하세요.

VMware TAS(Tanzu Application Service) (이전의 Pivotal Cloud Foundry)를 통해 구성된 리소스입니다.

TAS를 사용하여 관리되는 애플리케이션의 경우 앞에서 설명한 리소스를 포함한 외부 리소스는 TAS 서비스 바인딩을 통해 구성되는 경우가 많습니다. 이러한 리소스에 대한 구성을 검사하려면 TAS(Cloud Foundry) CLI를 사용하여 애플리케이션에 대한 변수를 VCAP_SERVICES 확인합니다.

# Log into TAS, if needed (enter credentials when prompted)
cf login -a <API endpoint>

# Set the organization and space containing the application, if not already selected during login.
cf target org <organization name>
cf target space <space name>

# Display variables for the application
cf env <Application Name>

애플리케이션에 VCAP_SERVICES 바인딩된 외부 서비스의 구성 설정에 대한 변수를 검사합니다. 자세한 내용은 TAS(Cloud Foundry) 설명서를 참조하세요.

기타 모든 외부 리소스

이 가이드에서 가능한 모든 외부 종속성을 문서화하는 것은 불가능합니다. 마이그레이션 후에는 애플리케이션의 모든 외부 종속성을 충족할 수 있는지 확인해야 합니다.

인벤토리 구성 원본 및 비밀

인벤토리 암호 및 보안 문자열

모든 비밀 문자열 및 암호는 프로덕션 배포의 모든 속성 및 구성 파일 및 모든 환경 변수를 확인합니다. Spring Cloud 애플리케이션에서는 일반적으로 개별 서비스 또는 Spring Cloud 구성 리포지토리의 application.properties 또는 application.yml 파일에서 이러한 문자열을 찾을 수 있습니다.

인증서 인벤토리화

공용 SSL 엔드포인트 또는 백 엔드 데이터베이스 및 기타 시스템과의 통신에 사용되는 모든 인증서를 문서화합니다. 다음 명령을 실행하여 프로덕션 서버의 모든 인증서를 볼 수 있습니다.

keytool -list -v -keystore <path to keystore>

Spring Cloud Vault 사용 여부 확인

Spring Cloud Vault를 사용하여 비밀을 저장하고 액세스하는 경우 백업 비밀 저장소(예: HashiCorp Vault 또는 CredHub)를 식별합니다. 그런 다음, 애플리케이션 코드에서 사용하는 모든 비밀을 확인합니다.

구성 서버 원본 찾기

애플리케이션에서 Spring Cloud 구성 서버를 사용하는 경우 구성이 저장되는 위치를 식별합니다. 일반적으로 이 설정은 bootstrap.yml 또는 bootstrap.properties 파일 또는 application.yml 또는 application.properties 파일에서 찾을 수 있습니다. 설정은 다음 예제와 같습니다.

spring.cloud.config.server.git.uri: file://${user.home}/spring-cloud-config-repo

git은 Spring Cloud Config의 백업 데이터 저장소로 가장 일반적으로 사용되지만, 앞에서 설명한 것처럼 다른 가능한 백 엔드 중 하나가 사용 중일 수 있습니다. JDBC(관계형 데이터베이스), SVN로컬 파일 시스템과 같은 다른 백 엔드에 대한 정보는 Spring Cloud 구성 설명서를 참조하세요.

참고 항목

구성 서버 데이터가 GitHub Enterprise와 같은 온-프레미스에 저장된 경우 Git 리포지토리를 통해 Azure Spring Apps에서 사용할 수 있도록 해야 합니다.

배포 아키텍처 검사

각 서비스에 대한 하드웨어 요구 사항 문서화

각 Spring Cloud 서비스(구성 서버, 레지스트리 또는 게이트웨이 제외)에 대해 다음 정보를 문서화합니다.

  • 실행되는 인스턴스 수
  • 각 인스턴스에 할당되는 CPU 수
  • 각 인스턴스에 할당되는 RAM 양

지역 복제/배포 문서화

Spring Cloud 애플리케이션이 현재 여러 지역 또는 데이터 센터에 분산되어 있는지 확인합니다. 마이그레이션하는 애플리케이션의 작동 시간 요구 사항/SLA를 문서화합니다.

서비스 레지스트리를 우회하는 클라이언트 식별

Spring Cloud Service Registry를 사용하지 않고 마이그레이션할 서비스를 호출하는 클라이언트 애플리케이션을 확인합니다. 마이그레이션 후에는 이러한 호출을 더 이상 수행할 수 없습니다. 마이그레이션하기 전에 Spring Cloud OpenFeign을 사용하도록 이러한 클라이언트를 업데이트합니다.

마이그레이션

제한된 구성 제거

마이그레이션하는 서비스에서 다음 제한된 설정의 명시적 할당을 찾아서 제거합니다. 이러한 속성은 구성 서버 및 서비스 검색에 액세스하기 위해 애플리케이션 환경에 자동으로 삽입됩니다. 이러한 속성이 Config Server 애플리케이션 파일에 있는 경우 충돌 및 예기치 않은 동작이 발생할 수 있습니다. 자세한 내용은 Azure Spring Apps에서 관리되는 Spring Cloud Config Server 구성의 제한 섹션을 참조하세요.

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Azure Spring Apps 인스턴스 및 앱 만들기

Azure 구독에서 Azure Spring Apps 인스턴스를 프로비전합니다. 그런 다음, 마이그레이션하는 모든 서비스에 대해 앱을 프로비저닝합니다. Spring Cloud 레지스트리 및 구성 서버는 포함하지 않습니다. Spring Cloud Gateway 서비스를 포함합니다. 지침은 빠른 시작: Azure Spring Apps에 첫 번째 애플리케이션 배포를 참조하세요.

Spring Cloud 구성 서버 준비

Azure Spring Apps 인스턴스에서 구성 서버를 구성합니다. 자세한 내용은 서비스에 대한 Spring Cloud Config Server 인스턴스 설정을 참조하세요.

참고 항목

현재 Spring Cloud Config 리포지토리가 로컬 파일 시스템 또는 온-프레미스에 있는 경우 먼저 GitHub, Azure Repos 또는 BitBucket과 같은 프라이빗 클라우드 기반 리포지토리로 구성 파일을 마이그레이션하거나 복제본(replica).

콘솔 로깅 확인 및 진단 설정 구성

모든 출력이 파일이 아닌 콘솔로 라우팅되도록 로깅을 구성합니다.

애플리케이션이 Azure Spring Apps 에 배포된 후 Azure Monitor Log Analytics를 통해 기록된 이벤트를 사용할 수 있도록 진단 설정을 추가합니다.

LogStash/ELK Stack

LogStash/ELK Stack을 로그 집계에 사용하는 경우 콘솔 출력을 Azure Event Hub로 스트림하도록 진단 설정을 구성합니다. 그런 다음 LogStash EventHub 플러그 인을 사용하여 LogStash에 기록된 이벤트를 수집합니다.

Splunk

로그 집계에 Splunk를 사용하는 경우 콘솔 출력을 Azure Blob Storage로 스트리밍하도록 진단 설정을 구성합니다. 그런 다음, Microsoft Cloud Services용 Splunk 추가 기능을 사용하여 기록된 이벤트를 Splunk에 수집합니다.

영구 스토리지 구성

애플리케이션의 일부가 로컬 파일 시스템에 읽거나 쓰는 경우 로컬 파일 시스템을 대체하도록 영구 스토리지를 구성해야 합니다. 자세한 내용은 Azure Spring Apps에서 기본 제공 영구 스토리지 사용을 참조 하세요.

임시 파일은 /tmp 디렉터리에 써야 합니다. OS 독립의 경우 .를 사용하여 System.getProperty("java.io.tmpdir")이 디렉터리를 가져올 수 있습니다. 임시 파일을 만드는 데 사용할 java.nio.Files::createTempFile 수도 있습니다.

VMware Tanzu 구성 요소

엔터프라이즈 계층에서는 앱에 대한 외부화된 구성을 지원하기 위해 VMware Tanzu®용 Application Configuration Service가 제공됩니다. 관리되는 Spring Cloud 구성 서버는 엔터프라이즈 계층에서 사용할 수 없으며 Azure Spring Apps의 표준 및 기본 계층에서만 사용할 수 있습니다.

Application Configuration Service for Tanzu

Application Configuration Service for Tanzu는 상용 VMware Tanzu 구성 요소 중 하나입니다. Tanzu용 Application Configuration Service는 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>
    

Tanzu용 Application Configuration Service는 Kubernetes에서 실행됩니다. 투명한 로컬 개발 환경을 사용하도록 설정하기 위해 다음과 같은 제안을 제공합니다.

  • 외부화된 구성을 저장할 Git 리포지토리가 이미 있는 경우 Spring Cloud Config Server를 애플리케이션에 대한 중앙 집중식 구성으로 로컬로 설정할 수 있습니다. 구성 서버가 시작되면 Git 리포지토리를 복제하고 웹 컨트롤러를 통해 리포지토리 콘텐츠를 제공합니다. 자세한 내용은 Spring 설명서의 Spring Cloud 구성 을 참조하세요. 애플리케이션 spring-cloud-config-client 이 구성 서버에서 외부 구성을 자동으로 선택할 수 있는 기능을 제공합니다.

  • Git 리포지토리가 없거나 Config Server를 로컬로 설정하지 않으려는 경우 프로젝트에서 직접 구성 파일을 사용할 수 있습니다. 개발 환경에서만 사용되도록 프로필을 사용하여 구성 파일을 격리하는 것이 좋습니다. 예를 들어 프로필로 사용합니다 dev . 그런 다음 src/기본/resource 폴더에 application-dev.yml 파일을 만들어 구성을 저장할 수 있습니다. 앱에서 이 구성을 사용하도록 하려면 앱을 로컬로 시작합니다 --spring.profiles.active=dev.

Tanzu 서비스 레지스트리

VMware Tanzu® 서비스 레지스트리 는 상용 VMware Tanzu 구성 요소 중 하나입니다. Tanzu Service Registry는 마이크로 서비스 기반 아키텍처의 주요 테넌트 중 하나인 서비스 검색 패턴을 구현하여 엔터프라이즈 계층 앱을 제공합니다. 앱은 Tanzu 서비스 레지스트리를 사용하여 등록된 서비스를 동적으로 검색하고 호출할 수 있습니다. Tanzu Service Registry를 사용하는 것이 어려울 수 있는 서비스의 각 클라이언트를 직접 구성하거나 프로덕션에서 취약할 수 있는 일종의 액세스 규칙을 채택하는 것이 좋습니다. 자세한 내용은 Tanzu Service Registry 사용을 참조하세요.

Spring Cloud Vault 비밀을 Azure KeyVault로 마이그레이션

Azure KeyVault Spring Boot Starter를 사용하여 Spring을 통해 애플리케이션에 직접 비밀을 삽입할 수 있습니다. 자세한 내용은 Azure Key Vault용 Spring Boot Starter를 사용하는 방법을 참조 하세요.

참고 항목

마이그레이션을 수행하려면 일부 비밀의 이름을 바꿔야 할 수 있습니다. 이에 따라 애플리케이션 코드를 적절히 업데이트하세요.

모든 인증서를 KeyVault로 마이그레이션

Azure Spring Apps는 JRE 키 저장소에 대한 액세스를 제공하지 않으므로 인증서를 Azure KeyVault로 마이그레이션하고 KeyVault의 인증서에 액세스하도록 애플리케이션 코드를 변경해야 합니다. 자세한 내용은 Java용 Key Vault 인증서Azure Key Vault 인증서 클라이언트 라이브러리 시작을 참조하세요.

APM(애플리케이션 성능 관리) 통합 구성

Azure Spring Apps는 다음과 같은 APM 통합을 제공합니다. 링크를 따라 필요한 APM을 사용하도록 설정합니다.

애플리케이션에서 지원되는 APM을 사용하지 않는 경우 Application Insights를 대신 사용하는 것이 좋습니다. Azure Spring Apps는 성능 관리 및 수차에 대한 실시간 응답을 위해 Application Insights와 긴밀한 통합을 제공합니다.

애플리케이션에서 메트릭 클라이언트 및 엔드포인트 사용 안 함

사용된 메트릭 클라이언트 또는 애플리케이션에 공개된 메트릭 엔드포인트를 모두 제거합니다.

서비스 배포

빠른 시작: Azure Spring Apps에 첫 번째 애플리케이션 배포에 설명된 대로 마이그레이션된 각 Spring 앱(Spring Cloud Config 및 레지스트리 서버 포함 안 함)을 배포합니다.

서비스별 비밀 및 외부화된 설정 구성

서비스별 구성 설정을 환경 변수로 각 서비스에 삽입할 수 있습니다. Azure Portal에서 다음 단계를 사용합니다.

  1. Azure Spring Apps 인스턴스로 이동하고 앱을 선택합니다.
  2. 구성할 서비스를 선택합니다.
  3. 구성을 선택합니다.
  4. 구성할 변수를 입력합니다.
  5. 저장을 선택합니다.

Spring Cloud App Configuration Settings

ID 공급자 마이그레이션 및 사용

Spring Cloud 애플리케이션에 인증 또는 권한 부여가 필요한 경우 ID 공급자에 액세스하도록 구성되었는지 확인합니다.

  • ID 공급자가 Microsoft Entra ID인 경우 변경할 필요가 없습니다.
  • ID 공급자가 온-프레미스 Active Directory 포리스트인 경우 Microsoft Entra ID를 사용하여 하이브리드 ID 솔루션을 구현하는 것이 좋습니다. 지침은 하이브리드 ID 설명서를 참조하세요.
  • ID 공급자가 PingFederate와 같은 다른 온-프레미스 솔루션인 경우 Microsoft Entra 커넥트 항목의 사용자 지정 설치를 참조하여 Microsoft Entra ID와의 페더레이션을 구성합니다. 또는 Spring Security를 사용하여 OAuth2/OpenID 커넥트 또는 SAML을 통해 ID 공급자를 사용하는 것이 좋습니다.

클라이언트 애플리케이션 업데이트

마이그레이션된 애플리케이션에 게시된 Azure Spring Apps 엔드포인트를 사용하도록 모든 클라이언트 애플리케이션의 구성을 업데이트합니다.

마이그레이션 후

  • 일관된 자동 배포를 위해 배포 파이프라인을 추가하는 것이 좋습니다. Azure Pipelines, GitHub ActionsJenkins에 대한 지침을 사용할 수 있습니다.

  • 최종 사용자가 일부 또는 전부를 사용할 수 있기 전에 스테이징 배포를 사용하여 프로덕션의 코드 변경 내용을 테스트하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps에서 스테이징 환경 설정을 참조하세요.

  • 서비스 바인딩을 추가하여 애플리케이션을 지원되는 Azure 데이터베이스에 연결하는 것이 좋습니다. 이러한 서비스 바인딩을 사용하면 자격 증명을 포함한 연결 정보를 Spring Cloud 애플리케이션에 제공할 필요가 없습니다.

  • Azure 애플리케이션 Insights를 사용하여 애플리케이션의 성능 및 상호 작용을 모니터링하는 것이 좋습니다. 자세한 내용은 Azure Spring Apps에서 Application Insights Java In-Process 에이전트를 참조하세요.

  • Azure Monitor 경고 규칙 및 작업 그룹을 추가하여 비정상적인 조건을 신속하게 감지하고 해결하는 것이 좋습니다. 자세한 내용은 자습서: 경고 및 작업 그룹을 사용하여 Spring Cloud 리소스 모니터링을 참조 하세요.

  • 대기 시간이 짧고 안정성 및 내결함성이 높아지려면 다른 지역에 Azure Spring Apps 배포를 복제본(replica) 것이 좋습니다. Azure Traffic Manager를 사용하여 배포 간에 부하를 분산하거나 Azure Front Door를 사용하여 DDoS 보호를 사용하여 SSL 오프로드 및 웹 애플리케이션 방화벽을 추가합니다.

  • 지역 복제본(replica)tion이 필요하지 않은 경우 Azure 애플리케이션 게이트웨이를 추가하여 DDoS 보호를 사용하여 SSL 오프로드 및 웹 애플리케이션 방화벽을 추가하는 것이 좋습니다.

  • 애플리케이션에서 레거시 Spring Cloud Netflix 구성 요소를 사용하는 경우 현재 대안으로 교체하는 것이 좋습니다.

    레거시 현재
    Spring Cloud Eureka Spring Cloud Service Registry
    Spring Cloud Netflix Zuul Spring Cloud Gateway
    Spring Cloud Netflix Archaius Spring Cloud 구성 서버
    Spring Cloud Netflix 리본 메뉴 Spring Cloud Load Balancer(클라이언트 쪽 부하 분산 장치)
    Spring Cloud Hystrix Spring Cloud 회로 차단기 + Resilience4J
    Spring Cloud Netflix 터빈 Micrometer + Prometheus