Spring
서비스 우아한 종료
까망거북
2022. 6. 10. 10:01
MSA의 강점은 서비스를 잘게 잘게 잘라서 업데이트를 잘게 잘게 하는 장점이 있다..
그러나 문제는 구동중인 서비스를 업데이트 하기 위하여 셧다운을 하면
SGW는(스프링게이트웨이) 종료한 서비스가 아직 살아 있는줄 알고 계속 트렌젝션을 시도 한다.
설정에 따라 다르겠지만 기본으론 유레카가 90초를 기다린다. 그 90초 동안은 계속 접속을 시도 한다.
이걸 우아하게 하기 위하여 이글을 작성한다.
일단 actuator를 추가 한다.
build.gradle
dependencies{
implementation 'org.springframework.boot:spring-boot-starter-actuator'
}
application.yml
server:
shutdown: graceful
management:
endpoints:
web:
exposure:
include: shutdown
endpoint:
shutdown:
enabled: true
http://xxxx.xxxx.xxxx.xxxx:port/actuator/shutdown 을 포스트로 전송을 한다.
그럼 어플리케이션 서버는 유레카에서 자신의 정보를 지우고 지금 처리 중인 트렌젝션을 처리 후에 서비스를 종료 한다.