백엔드 개발자 블로그

헬스 체크 본문

테크 블로그 리뷰

헬스 체크

backend-dev 2024. 1. 7. 19:43

[참고](https://toss.tech/article/how-to-work-health-check-in-spring-boot-actuator)

헬스 체크란?

정상적으로 서비스가 가능한 서버에만 트래픽을 보내서 서비스의 고가용성을 확보하기 위해서 체크하는 것

 

Spring Boot Actuator

  1. 의존성 추가
  2. application.yaml로 퍼블릭하게 접근 가능하게 하기
  3. HealthEndpointSupport 클래스의 getAggregateContribution 메서드
    • 각 HealthContributor를 순회하면서 헬스 체크
  4. HealthEndpointSupport 클래스의 getCompositeHealth 메서드
    • 각 HealthIndicator로부터 수집한 상태를 바탕으로 현재 서버의 상태를 진단
  5. SimpleStatusAggregator의 getAggregateStatus 메서드
    • 각 상태를 수집해서 하나의 Status 반환(StatusComparator 사용)
    • Status 순서 설정 가능
    • Down을 반환한 HealthIndicator 하나라도 있다면 서버를 Down으로 생각해서 503 반환

 

주의점

의도치 않은 장애 발생

  • 상황
    • 서비스 DB + 로그 DB by 비동기 처리
    • 서비스가 정상적이라도 비동기 처리 부분에서 하나라도 장애가 발생하면 서버 장애라고 판단
  • 해결
    • Spring Boot Actuator 대신 직접 헬스 체크 API 구현하기
    • 헬스 체크에 영향을 끼치지 않길 희망하는 것들을 비활성화 하기
    • 문제가 되는 HealthIndicator 빈을 직접 생성해서 Auto Configuration 오버라이딩 하기

 

트러블 슈팅의 지연

  • 상황
    • 외부 의존성이 있는 ES만 죽었는데, 죽었다고 판단함
    • 격리했다고 생각한 시스템에만 문제가 있는 경우 트러블 슈팅이 지연될 수 있음

'테크 블로그 리뷰' 카테고리의 다른 글

대용량 트래픽 처리 전략  (0) 2024.02.07
MSA로 전환2  (0) 2024.02.07
대규모 로그 처리 by Elasticsearch 클러스터  (1) 2024.01.07
Gateway  (0) 2024.01.07
MSA로 전환1  (1) 2024.01.07