Trouble...
Eureka 서버를 통하여 Order, Product Application을 띄우고 분산추적을 위해 Zipkin을 테스트하려 했다.
(오류때문에 무슨 테스트를 2일이나 소모해 ㅋㅋ)
- Eureka 서버에 등록된 Order, Product Application

테스트 방식
테스트는 "/order/1" API를 통해 product client를 통해 Product Application 내 productService가 실행되는 순서이며, Zipkin에는 Service: order/1 를 시작으로 product 가 실행되어야 했다.
원하는 기댓값 : order-service: order/{id}
-> product-service: product/{id}
하지만 내 Zipkin 에는 order 영역이 찍히지 않고 product 만 찍혔다.
-
"order/1" 실행 성공

-
Zipkin 을 통해 확인한 추적 결과

해결
뭐 오류가 나면 내 손의 실수지 ㅋㅋ.. 말모말모....
build.gradle 에서 외부 성능 모니터링 툴과 바로 연결해 데이터를 활용할 수 있는 "Actuator" 의존성을 포함시키지 않았기 때문이다.
아름답다!!!!!!!!!
오류 내용을 확인했으니 Actuator가 뭔데..?
Actuator 란?
- Spring Boot의 Actuator 는 애플리케이션의 모니터링(상태 확인) 과 관리(운영) 를 쉽게 할 수 있도록 도와주는 도구입니다.
간단히 말하면, Actuator 는 애플리케이션에 여러 중요한 정보와 기능을 노출하여 애플리케이션이 잘 작동하고 있는지 확인하고, 관련 데이터와 상태 정보를 바탕으로 운영의 편리성을 높여주는 역할을 합니다.
- 선생님이죠.
선생님이 숙제 검사하듯 = 애플리케이션 잘 작동하고 있는지 검사
선생님이 학생들의 상태를 검사하여 반의 분위기를 조성하고 공부할 수 있게 만들어주는 = 데이터와 상태 정보를 바탕으로 운영의 편리성을 높여주는
그 런 역 할
Actuator 가 하는 역할
1. 애플리케이션의 상태 정보 제공
- 애플리케이션이 지금 잘 동작하고 있는지 확인 가능
- 주요 상태 정보를 노출하는 EndPoints(엔드포인트)를 제공
ex) /actuator/health 를 통해 현재 애플리케이션의 헬스 상태를 체크
2. 진단 기능 제공
- 문제가 생길 때, 원인을 빨리 파악할 수 있도록 애플리케이션의 작동 상태를 진단
- 로그, 매트릭스(metrics), 환경 설정 등을 한눈에 볼 수 있음
3. 운영 데이터를 노출
- 메모리 사용량, CPU 상태, 요청 처리량, 환경 변수 등 런타임에 유용한 운영 데이터 제공
4. 모니터링 및 트러블슈팅 툴과 통합
- Prometheus 같은 모니터링 도구나 Zipkin, Micrometer 등의 추적 도구와 함께 사용할 수 있어 애플리케이션 모니터링 환경을 통합
5. 운영 명령 실행
- 애플리케이션에서 즉시 실행 가능한 관리 명령 제공
ex) 로그 레벨 변경
왜 Actuator 가 필요한가?
운영 환경에서 문제를 빠르게 진단해야 함
- 서비스가 다운되거나 성능 문제가 생겼을 때, 애플리케이션이 왜 안 되는지 또는 뭐가 잘못되었는지 정보를 바로 확인할 수 있어야 한다.
운영 비용 절감
- Actuator 를 통해 제공되는 정보를 사용하면, 추가적인 모니터링 도구를 설치하거나 복잡한 운영 작업을 직접 하지 않아도 됩니다.
모니터링 시스템과 손쉽게 연동 가능
- Prometheus, Grafana 같은 외부 성능 모니터링 툴과 바로 연결해 데이터를 활용할 수 있다.
관리 효율성 향상
- 따로 코드를 작성하지 않아도 로그 레벨 변경 같은 관리 작업을 Actuator 로 손쉽게 수행할 수 있다.
주요 Actuator Endpoint
- Actuator 를 추가하면 기본적으로 아래와 같은 엔드포인트를 사용할 수 있습니다.
(설정에 따라 다를 수도 있습니다)
/actuator/health
/actuator/metrics
- CPU, 메모리, 요청 처리량 등 메트릭 데이터 제공
/actuator/env
/actuator/loggers
/actuator/info
- 애플리케이션의 빌드 정보 등 커스텀 정보를 제공
마지막으로... MSA 코드에서 왜 필요할까?
- MSA 환경에서 Actuator 의 역할은 정말 중요합니다.
1. 분산 시스템 모니터링
- MSA 환경 내 저의 프로젝트는 Spring Cloud Netfilix Eureka 와 OpenFeign 클라이언트를 사용하는 마이크로서비스 환경입니다.
- 여러 서비스의 상태를 쉽게 체크하고 네트워크 장애나 성능 이슈를 진단하는데 필요합니다.
2. 추적(Tracing)과 계측(Metrics)
- Micrometer와 Zipkin을 사용하고 있는데, Actuator와 통합하면 애플리케이션 메트릭과 추적 정보를 보다 쉽게 노출하거나 상태를 확인할 수 있습니다.
3. 운영 안정성
- MSA 구조에서는 하나의 서비스라도 장애가 나면 전체 시스템에 영향을 줄 수 있기 때문에, Actuator 의 상태 체크 기능이 운영 안정성을 보장하는데 유용합니다.