개념
하고 있던 작업을 적절히 마무리 한 뒤 종료되는 것이 핵심이다.
우아한 종료란 애플리케이션이 종료될 때 바로 종료하는 것이 아니라, 현재 처리하고 있는 작업을 마무리하고 리소스를 정리한 이후 종료하는 방식을 의미합니다. 서버 애플리케이션에서 일반적인 Graceful Shutdown은 SIGTERM 신호를 받았을 때, 새로운 요청은 차단하고 기존 처리 중인 요청을 모두 완료한 뒤에 프로세스를 종료합니다. 만약, 서버 애플리케이션이 요청을 처리하는 중에 즉각적으로 애플리케이션을 종료한다면 트랜잭션 비정상 종료, 데이터 손실, 사용자 경험 저하 문제가 발생할 수 있습니다.
우아한 종료(Graceful Shutdown)의 중요성
1.
데이터 무결성 보장
•
불완전한 작업이 없도록 보장
•
트랜잭션 완료 또는 롤백
•
디스크 버퍼 플러시
2.
클라이언트 영향 최소화
•
기존 연결의 적절한 종료
•
오류 메시지 대신 정상 응답 제공
•
세션 데이터 보존
3.
분산 시스템 일관성
•
클러스터 노드 간 상태 동기화
•
리더 선출 또는 장애 조치 트리거
•
로드 밸런서에서 노드 제거
그러니 우리가 만약 응용 프로그램을 직접 만들게 된다면, 이 "Graceful Shutdown" 을 위한 SIGTERM 핸들러를 직접 추가해서 처리하는 방향으로 접근

