자습서: Azure Spring Apps와 함께 회로 차단기 대시보드 사용

Warning

Hystrix 개발은 더 이상 활성 상태가 아니며 현재 유지 관리 모드에 있습니다.

참고 항목

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

이 문서의 적용 대상: ✔️ Java ❌ C#

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

이 문서에서는 Azure Spring Apps에서 Netflix Turbine과 Netflix Hystrix를 사용하는 방법을 설명합니다. Spring Cloud Netflix Turbine은 Hystrix 대시보드를 사용하여 단일 뷰에서 스트림을 모니터링할 수 있도록 여러 Netflix Hystrix 메트릭 스트림을 집계하는 데 많이 사용됩니다.

참고 항목

Netflix Hystrix는 기존의 많은 Spring 앱에서 널리 사용되고 있지만 실제 개발에는 더 이상 사용되지 않습니다. 새 프로젝트를 개발 중일 경우 resilience4j와 같은 Spring Cloud 회로 차단기 구현을 대신 사용해야 합니다. 이 자습서에 표시된 Turbine과는 달리, 새 Spring Cloud 회로 차단기 프레임워크는 메트릭 데이터 파이프라인의 모든 구현을 마이크로미터로 통합합니다. Azure Spring Apps에서도 지원됩니다. 자세한 내용은 Micrometer로 Spring Cloud Resilience4J 회로 차단기 메트릭 수집(미리 보기)을 참조하세요.

샘플 애플리케이션 준비

샘플은 이 리포지토리에서 포크됩니다.

개발 환경에 샘플 리포지토리를 복제합니다.

git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
cd azure-spring-apps-samples/hystrix-turbine-sample

이 자습서에 있는 세 가지 애플리케이션을 빌드합니다.

  • user-service: /personalized/{id}라는 단일 엔드포인트가 있는 간단한 REST 서비스
  • recommendation-service: user-service가 호출할 /recommendations라는 단일 엔드포인트가 있는 간단한 REST 서비스
  • hystrix-turbine: Hystrix 스트림을 표시하는 Hystrix 대시보드 서비스와 다른 서비스에서 Hystrix 스트림을 집계하는 Turbine 서비스
mvn clean package -D skipTests -f user-service/pom.xml
mvn clean package -D skipTests -f recommendation-service/pom.xml
mvn clean package -D skipTests -f hystrix-turbine/pom.xml

Azure Spring Apps 인스턴스 프로비저닝

빠른 시작: Azure Spring Apps에 첫 번째 애플리케이션 배포Azure Spring Apps 인스턴스 프로비전 섹션에 명시된 단계를 수행합니다.

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

이러한 앱은 Config Server를 사용하지 않으므로 Azure Spring Apps용 Config Server를 설정할 필요가 없습니다. 다음과 같이 만들고 배포합니다.

az configure --defaults \
    group=<resource-group-name> \
    spring=<Azure-Spring-Apps-instance-name>

az spring app create --name user-service --assign-endpoint
az spring app create --name recommendation-service
az spring app create --name hystrix-turbine --assign-endpoint

az spring app deploy \
    --name user-service \
    --artifact-path user-service/target/user-service.jar
az spring app deploy \
    --name recommendation-service \
    --artifact-path recommendation-service/target/recommendation-service.jar
az spring app deploy \
    --name hystrix-turbine \
    --artifact-path hystrix-turbine/target/hystrix-turbine.jar

앱 인증

모든 앱이 실행되고 검색 가능하면 브라우저에서 https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1 경로로 user-service에 액세스합니다. 사용자 서비스가 recommendation-service에 액세스할 수 있는 경우 다음 출력을 가져와야 합니다. 웹 페이지가 작동하지 않는 경우 여러 번 새로 고칩니다.

[{"name":"Product1","description":"Description1","detailsLink":"link1"},{"name":"Product2","description":"Description2","detailsLink":"link3"},{"name":"Product3","description":"Description3","detailsLink":"link3"}]

Hystrix 대시보드 및 메트릭 스트림에 액세스

퍼블릭 엔드포인트 또는 프라이빗 테스트 엔드포인트를 사용하여 인증합니다.

퍼블릭 엔드포인트 사용

브라우저에서 https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix 경로를 사용하여 hystrix-turbine에 액세스합니다. 다음 그림은 이 앱에서 실행되는 Hystrix 대시보드를 보여 줍니다.

지연 및 제목 세부 정보를 보여 주는 Hystrix 대시보드의 스크린샷.

텍스트 상자에 Turbine 스트림 URL https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default를 복사하고 스트림 모니터링을 선택합니다. 이 작업을 통해 대시보드가 표시됩니다. 뷰어에 아무것도 표시되지 않는 경우 user-service 엔드포인트를 눌러 스트림을 생성합니다.

회로 및 스레드 풀 세부 정보를 보여 주는 Hystrix 스트림 페이지의 스크린샷.

참고 항목

프로덕션 환경에서는 Hystrix 대시보드 및 메트릭 스트림이 인터넷에 노출되지 않아야 합니다.

프라이빗 테스트 엔드포인트 사용

test-endpoint에서 Hystrix 메트릭 스트림에 액세스할 수도 있습니다. 백 엔드 서비스이므로 recommendation-service에 대한 퍼블릭 엔드포인트가 할당되지 않았지만 https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream에서 테스트 엔드포인트를 사용하여 메트릭을 표시할 수 있습니다.

Hystrix 테스트 엔드포인트 스트림 페이지의 스크린샷.

웹앱인 Hystrix 대시보드는 test-endpoint에서 작동해야 합니다. 제대로 작동하지 않을 경우 두 가지 이유가 있을 수 있습니다. 첫 번째는 test-endpoint를 사용해서 기본 URL이 /에서 /<APP-NAME>/<DEPLOYMENT-NAME>으로 변경된 경우이고, 두 번째는 웹앱이 정적 리소스의 절대 경로를 사용하는 경우입니다. test-endpoint에서 작동하도록 프런트 엔드 파일에서 <base>를 수동으로 편집해야 할 수 있습니다.

다음 단계