다음을 통해 공유


자습서: Java Spring 앱에서 푸시 새로 고침을 사용하여 동적 구성 사용

App Configuration Java Spring 클라이언트 라이브러리는 요청 시 애플리케이션을 다시 시작하지 않고도 구성을 업데이트할 수 있습니다. 다음 두 가지 방법 중 하나 또는 둘 모두를 사용하여 App Configuration의 변경 내용을 검색하도록 애플리케이션을 구성할 수 있습니다.

  • 폴링 모델: 폴링 모델은 폴링을 사용하여 구성의 변경 내용을 검색하는 기본 동작입니다. 설정의 캐시된 값이 만료되면 다음 호출은 서버로 AppConfigurationRefreshrefreshConfigurations 요청을 보내 구성이 변경되었는지 확인하고 필요한 경우 업데이트된 구성을 가져옵니다.

  • 푸시 모델: App Configuration 이벤트를 사용하여 구성 변경 내용을 검색합니다. 웹후크를 사용하여 Event Grid와 함께 키 값 변경 이벤트를 보내도록 App Configuration이 설정되면 애플리케이션은 이러한 이벤트를 사용하여 구성을 업데이트된 상태로 유지하는 데 필요한 총 요청 수를 최적화할 수 있습니다.

이 자습서에서는 푸시 새로 고침을 사용하여 코드에서 동적 구성 업데이트를 구현하는 방법을 보여줍니다. 빠른 시작에 소개된 앱을 기반으로 합니다. 계속 진행하기 전에 먼저 App Configuration을 사용하여 Java Spring 앱 만들기를 완료하세요.

이 자습서의 단계는 임의의 코드 편집기를 사용하여 수행할 수 있습니다. Visual Studio Code는 Windows, macOS 및 Linux 플랫폼에서 사용할 수 있는 훌륭한 옵션입니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • App Configuration에서 웹후크로 구성 변경 이벤트를 보내도록 구독 설정
  • App Service에 Spring Boot 애플리케이션 배포
  • App Configuration의 변경에 대한 응답으로 구성을 업데이트하도록 Java Spring 앱 설정
  • 애플리케이션의 최신 구성을 사용합니다.

필수 조건

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

푸시 새로 고침 설정

  1. pom.xml을 열고 다음 종속성을 사용하여 파일을 업데이트합니다.
<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
</dependency>

<!-- Adds the Ability to Push Refresh -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependencyManagement>
    <dependencies>
        <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-dependencies</artifactId>
        <version>5.18.0</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  1. Maven을 통해 Azure App Service에 애플리케이션을 배포할 수 있도록 Maven App Service 배포를 설정합니다.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  2. 앱의 resources 디렉터리로 이동하여 Azure 앱 구성 푸시 새로 고침을 열고 bootstrap.properties 구성합니다. 파일이 없는 경우 만듭니다. 파일에 다음 줄을 추가합니다.

    App Configuration 저장소에 인증하는 데 사용합니다 DefaultAzureCredential . 지침따라 자격 증명에 App Configuration 데이터 판독역할을 할당합니다. 애플리케이션을 실행하기 전에 권한이 전파될 수 있는 충분한 시간을 허용해야 합니다. AppConfigCredential.java파일을 만들고 다음 줄을 추가합니다.

    spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT}
    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled= true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30d
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key= sentinel
    spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name= myToken
    spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret= myTokenSecret
    
    management.endpoints.web.exposure.include= appconfiguration-refresh
    

    또한 관리 ID를 사용하지 않으려면 프로젝트에 다음 코드를 추가해야 합니다.

    import org.springframework.stereotype.Component;
    
    import com.azure.data.appconfiguration.ConfigurationClientBuilder;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer;
    
    @Component
    public class AppConfigCredential implements ConfigurationClientCustomizer {
    
        @Override
        public void customize(ConfigurationClientBuilder builder, String endpoint) {
            builder.credential(new DefaultAzureCredentialBuilder().build());
        }
    }
    

    디렉터리 아래에 resources/META-INF 파일을 만들고 spring.factories 다음 줄을 추가하고 애플리케이션 이름 및 패키지로 업데이트 com.example.MyApplication 하여 구성 부트스트랩 구성을 추가합니다.

    org.springframework.cloud.bootstrap.BootstrapConfiguration=\
    com.example.MyApplication
    

잠재적인 제한을 줄이기 위해 캐시된 값이 더티로 표시되기 전에 임의 지연이 추가됩니다. 캐시된 값이 더티로 표시되기 전의 기본 최대 지연 시간은 30초입니다.

참고 항목

기본 토큰 이름은 App Configuration 키로 저장한 다음, 기본 토큰 암호를 보안 강화를 위한 App Configuration Key Vault 참조로 저장해야 합니다.

앱 서비스에서 앱 빌드 및 실행

Event Grid 웹후크를 만들려면 유효성 검사가 필요합니다. 이 가이드에 따라 또는 애플리케이션을 등록하는 Azure 앱 Configuration Spring Web Library가 이미 구성된 애플리케이션을 시작하여 유효성을 검사할 수 있습니다. 이벤트 구독을 사용하려면 다음 두 섹션의 단계를 수행합니다.

  1. 환경 변수를 설정합니다.

    APP_CONFIGURATION_ENDPOINT 환경 변수를 Azure Portal의 저장소 개요 아래에 있는 App Configuration 저장소의 엔드포인트로 설정합니다.

    Windows 명령 프롬프트를 사용하는 경우 다음 명령을 실행하고, 명령 프롬프트를 다시 시작하여 변경 내용을 적용합니다.

    setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    PowerShell을 사용하는 경우 다음 명령을 실행합니다.

    $Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
    

    macOS 또는 Linux를 사용하는 경우 다음 명령을 실행합니다.

    export APP_CONFIGURATION_ENDPOINT='endpoint-of-your-app-configuration-store'
    

    명령 프롬프트를 다시 시작하여 변경 내용을 적용합니다. 환경 변수의 값을 출력하여 올바르게 설정되었는지 확인합니다.


  2. azure-webapp-maven-pluginconfiguration 추가 아래에서 pom.xml 업데이트

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. 다음 명령을 실행하여 콘솔 앱을 빌드합니다.

     mvn package
    
  4. 빌드가 성공적으로 완료되면 다음 명령을 실행하여 앱을 로컬로 실행합니다.

    mvn azure-webapp:deploy
    

이벤트 구독을 설정

  1. Azure Portal에서 App Configuration 리소스를 연 다음 창에서 Events 선택합니다+ Event Subscription.

    이벤트 창에는 새 구독을 만드는 옵션이 있습니다.

  2. Event SubscriptionSystem Topic에 대한 이름을 입력합니다. 기본적으로 이벤트 유형 키-값이 수정되고 키-값이 삭제된 경우 필터 탭을 사용하여 푸시 이벤트가 전송되는 정확한 이유를 선택할 수 있는 이유와 함께 변경할 수 있습니다.

    이벤트에는 이름, 토픽 및 필터가 필요합니다.

  3. Endpoint TypeWeb Hook로 선택하고 Select an endpoint를 선택합니다.

    엔드포인트를 선택하면 엔드포인트 URI를 입력할 새 블레이드가 만들어집니다.

  4. 엔드포인트는 애플리케이션의 URI + "/actuator/appconfiguration-refresh?{your-token-name}={your-token-secret}"입니다. 예를 들어 https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. 이벤트 구독을 만들려면 선택합니다 Create . Create 이 옵션을 선택하면 웹 후크에 대한 등록 요청이 애플리케이션으로 전송됩니다. 요청은 Azure 앱 Configuration 클라이언트 라이브러리에서 수신되고, 확인되고, 유효한 응답을 반환합니다.

  6. 창에서 Events 선택하여 Event Subscriptions 구독이 성공적으로 만들어졌는지 확인합니다.

    웹 후크는 페이지 아래쪽의 테이블에 표시됩니다.

참고 항목

구성 변경을 구독할 때는 하나 이상의 필터를 사용하여 애플리케이션으로 전송되는 이벤트 수를 줄일 수 있습니다. 이러한 필터는 Event Grid 구독 필터로 구성할 수 있습니다. 예를 들어 구독 필터는 특정 문자열로 시작하는 키에 대한 변경의 이벤트만 구독하는 데 사용할 수 있습니다.

참고 항목

애플리케이션 인스턴스가 여러 개 실행 중인 경우 Azure Service Bus를 설정해야 하는 appconfiguration-refresh-bus 엔드포인트를 사용할 수 있습니다. 이 엔드포인트는 애플리케이션의 모든 인스턴스에 메시지를 보내 해당 구성을 새로 고치는 데 사용됩니다. 이것은 애플리케이션의 여러 인스턴스가 실행 중이고 모든 인스턴스를 최신 구성으로 업데이트하려는 경우에 유용합니다. 이 엔드포인트는 spring-cloud-bus를 종속성으로 구성해야만 사용할 수 있습니다. 자세한 내용은 Azure Service Bus Spring Cloud Bus 설명서를 참조 하세요. Service Bus 연결을 설정하기만 하면 되며 Azure App Configuration 라이브러리는 메시지 보내기 및 받기를 처리합니다.

애플리케이션 확인 및 테스트

  1. 애플리케이션이 실행되면 curl을 사용하여 애플리케이션을 테스트합니다. 예를 들어 다음과 같습니다.

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Azure Portal을 열고 애플리케이션과 연결된 앱 구성 리소스로 이동합니다. 작업 아래에서 구성 탐색기를 선택하고, 다음 키의 값을 업데이트합니다.

    application/config.message Hello - 업데이트됨
  3. 표시되는 새 메시지를 확인하려면 브라우저 페이지를 새로 고칩니다.

리소스 정리

이 문서에서 만든 리소스를 계속 사용하지 않으려면 여기서 만든 리소스 그룹을 삭제하여 요금이 부과되지 않도록 합니다.

Important

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 합니다. 유지하려는 다른 리소스가 포함된 리소스 그룹 내에서 이 문서에 대한 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 해당 창에서 각 리소스를 개별적으로 삭제합니다.

  1. Azure Portal에 로그인하고 리소스 그룹을 선택합니다.
  2. 이름으로 필터링 상자에서 리소스 그룹의 이름을 입력합니다.
  3. 결과 목록에서 리소스 그룹 이름을 선택하여 개요를 확인합니다.
  4. 리소스 그룹 삭제를 선택합니다.
  5. 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인하고 삭제를 선택합니다.

잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.

다음 단계

이 자습서에서는 Java 앱을 사용하도록 설정하여 App Configuration에서 구성 설정을 동적으로 새로 고칩니다. 자세한 내용은 참조 설명서를 확인하세요. Spring Cloud Azure App Configuration 라이브러리의 작동 방식에 대한 모든 정보가 포함되어 있습니다. Azure 관리 ID를 사용하여 App Configuration에 대한 액세스를 간소화하는 방법을 알아보려면 다음 자습서를 계속 진행하세요.