핵심 요약
쏘카가 Node.js 컨테이너의 Graceful shutdown 이슈를 분석하고, PID 1 시그널 처리와 이벤트 루프 문제를 해결하기 위해 dumb-init 도입과 앱/인프라 타임아웃 정책을 정리했습니다.
구현 방법
- dumb-init를 PID 1로 실행해 시그널 전달과 좀비 프로세스 정리를 보장
- onModuleDestroy에서 Promise.race로 2분 타임아웃 적용 및 종료 시점 로깅
- Kubernetes terminationGracePeriodSeconds를 180초로 설정하고, 앱 타임아웃을 그에 맞춰 조정
- app.enableShutdownHooks()를 활성화
주요 결과
- 시그널 전달 안정화 및 예측 가능한 종료 확보
- 이벤트 루프의 남은 작업으로 인한 지연 최소화
- 인프라/앱 타임아웃 조합으로 안전한 종료 정책 확립

