우리네 장
[MSA] Config 서버에 actuator 적용하기 - no빌드, no재기동! 본문
전 게시글에서 spring cloud config 서버에 대한 설정과 config 서버를 사용하는 서비스들에 대한 설정을 끝냈습니다.
config서버를 사용하는 이유가 서비스를 재기동 하지 않고 변경된 설정 내용을 반영하기 위함인데, 사용자 서비스를 다시 재기동을 했었죠...ㅠ-ㅠ
config 서버의 변경 사항을 서비스가 알아차리는 데는 3가지 방법이 있습니다.
재기동 < actuator 사용 < spring cloud bus 사용
자동화 순서로 정리해봤습니다. 가장 간편한 bus를 사용하기 전에, actuator 사용에 대해 먼저 알아보겠습니다.
Actuator란?
spring에서 제공해주는 api로, 어플리케이션의 상태나 표준 지표, Metrics 정보를 제공하여 줍니다.
다양한 endpoint를 제공하여 http url 형식으로 호출하여 사용합니다. prefix로 /actuator 경로를 붙입니다.
예) /actuator/health, /actuator/beans
어떻게 이렇게 사용이 가능할까요?
- spring-boot-starter-actuator 라이브러리를 디펜던시에 추가하면, actuator 설정이 진행되면서 EnvironmentController가 생성됩니다. 해당 컨트롤러에서 위 경로에 대한 요청을 수행해줍니다.
다양한 endpoint 중 저희는 설정정보를 다시 패치받기 위해 /actuator/refresh 를 사용하겠습니다. 해당 경로는 POST 방식으로 호출하여야 합니다.
Actuator 적용해보기
먼저, dependency를 추가해줍니다.
actuator를 사용하기 위해, 사용하고자 하는 endpoint를 설정해줍니다.
httptrace 라는 endpoint는 서비스의 요청이 어떻게 처리되는지에 대한 trace를 출력하여 주는 endpoint 인데요.
httptrace를 사용하기 위해선, HttpTraceRepository 구현체를 bean으로 등록해 주어야 합니다.
서비스 요청이 어떻게 처리되는지에 대한 정보를 메모리에 저장해서 알려주기 때문입니다.
해당 구현체를 사용해서 게이트웨이의 커스텀 필터에서 로깅으로 출력하려고 하였지만, findAll 메서드 밖에 제공이 되지 않네요.. 다음에 특정 요청 값만 뽑을 수 있는지 알아보겠습니다.
참고로 메모리에 저장하는 데이터라서 가장 최근 100건 까지의 요청 이력만 저장하고 있습니다.
이제 설정이 완료되었습니다!
postman에서 위와 같이 호출하면, 변경된 설정사항이 적용된 것을 확인 할 수 있습니다.
그러나, 이 방법의 단점이 있습니다. Config 서버를 사용하는 서비스가 수천 수백개라면 하나하나 해당 서버들의 액추에이터 url을 호출해주어야 한다는 점인데요 😭😭
이를 해결하기 위해서 다음에는 spring cloud bus를 사용해보도록 하겠습니다!!
'MSA' 카테고리의 다른 글
[ MSA ] Config 서버에 Spring Cloud Bus 합해보기! (0) | 2024.01.10 |
---|---|
[ MSA ] Spring Cloud Config 소개 (0) | 2024.01.10 |
[ MSA ] Spring Cloud Gateway에 커스텀 필터 적용하기 (1) | 2024.01.10 |
[ MSA ] Spring Cloud Gateway와 Discovery Server 같이 사용하기 (0) | 2024.01.10 |
[ MSA ] Spring Cloud Gateway 소개 (0) | 2023.03.08 |