티스토리 뷰

  • Spring Boot Actuator란?
    • 정의
      • 어플리케이션의 상태와 여러지표들을 API로 제공
      • 어플리케이션을 조작할 수도 있음( shutdown, restart, pause, ... )
      • 기타 정보를 더 알고싶으면 https://supawer0728.github.io/2018/05/12/spring-actuator/ 를 참고 하기 바란다. 사용법과 기능에 대한 자세한 소개가 있다.
  • Actuator + Eureka를 이용한 무중단 서비스 구축 ( /actuator/shutdown 호출 시 )
    • 거래 가 진행중일 때 Shutdown(요구사항)
      • 1. Eureka같은 Service Discovery와 연동 상황에서도 제거 한다고 알리고, 즉시 다른서비스에서 호출하지 않도록 하는가?
        • OK => Eureka Client이 Actuator Shutdown의 /actuator/shutdown API가 호출될 시 Eureka에도 알리는 기능이 있음. 
      • 2. 진행중인 거래가 정상적으로 진행되어야 한다.(최소한 정해진 Time동안은 기다려야함.)
        •  NO => /actuator/shutdown 만으로는 진행중인 거래를 기다렸다가 해제하지 않음.  ThreadPool에서 진행중인 거래도 반환처리 되지않고 즉시 종료 처리하게됨.
        • 어떻게 해결할 수 있을까?
          • => 스프링 어플리케이션이 종료되는 이벤트인 ContextClosedEvent 를 가로채서 Request에 활용되는 ThreadPool를 리소스가 정리될 때까지 기다린 후 내리는 코드를 추가해야 한다.
          • 참고 : https://heowc.dev/2018/12/27/spring-boot-graceful-shutdown/
    • 최종 해결 방법
      • 서비스 /actuator/pause 호출 : 유레카 클라이언트 라이브러리가 탑재된 서비스는 해당 pause 요청을 intercept 하여 유레카 서버에 DOWN으로 자신의 상태를 알린다. ( 하지만 서비스는 그대로 작동함. )
      • 2중화, 3중화이상의 구성을 했다면 해당 서비스에 어느순간 거래가 들어오지 않게 된다. ( 다른 모든 유레카 클라이언트들이 해당 서버가 DOWN 됬다고 인지했으므로... 기본설정이라면 최대 2분가량 걸린다. ) 
      • 거래가 더이상 들어오지 않으면 해당 서비스를 배포한다. 끝..!
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함