TIL - 2/11

헨도·2025년 2월 11일
0

TIL

목록 보기
1/21
post-thumbnail

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" 의존성을 포함시키지 않았기 때문이다.

  • build.gradle, actuator 의존성 주입

  • API 실행

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

아름답다!!!!!!!!!

오류 내용을 확인했으니 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 의 상태 체크 기능이 운영 안정성을 보장하는데 유용합니다.
profile
Junior Backend Developer

0개의 댓글