✋ k8s 에서 Springboot Graceful Shutdown 방법
처음 Kubernetes 를 공부하고 적용해보기 시작했을 때, 무중단 배포의 필수조건인 Graceful Shutdown 을 하려면 어떻게 해야할까를 고민한적이 있었습니다. 어설프게 알고 있던 지식을 활용하여 Readness Probe 와 Spring Actuator 를 활용하여 Custom Health Indicator 를 구현하고 preStop 훅을 통해 Application 상태를 변경하여 Service 에서 제외시키면 Pod 가 종료되기 전에 요청이 들어오지 않는 상태로 바뀌기 때문에 Graceful Shutdown 을 할 수 있겠지? 라고 생각하며 나름 자신있게 정리했는데 막상 Spring 공식 문서를 보니 preStop 훅에 Sleep 을 걸어주는게 Best Practice 라는 내용을 보고 얼마나 허무했는지 모릅니다. 🥲 공식문서와 전체적인 개념을 제대로 보지 않고 어설픈 지식으로 해결하려다 생긴 해프닝이었는데요, (이때부터였어요.. 제가 공식문서에 집착하기 시작한게..) 왜 Sleep 만 걸어도 Graceful Shutdown 이 가능한지에 대해 간단히 정리한 내용을 공유드립니다. Kubernetes 를 공부하신 분들이라면 대부분 아는 간단한 내용이지만, 그때 받았던 충격이 아직도 선명하여 기록으로 남겨보았습니다. 📚 원문 https://yang1s.tistory.com/33