기본 패턴
javascript
process.on("SIGINT", () => {
console.log("graceful shutdown");
process.exit(0);
});설명
- 서버나 CLI는 언젠가 종료되며, 그 종료가 항상 정상적인 코드 경로만으로 일어나지는 않습니다.
SIGINT,SIGTERM같은 시그널을 받으면 정리 작업을 수행하고 종료 흐름을 제어할 수 있습니다.- 이 정리 작업에는 서버 닫기, 파일 flush, 연결 종료, 임시 파일 삭제 같은 것이 포함될 수 있습니다.
- 특히 장기 실행 프로세스에서는 "시작"만큼이나 "어떻게 멈추는가"가 중요합니다.
- 운영 환경에서 재시작과 배포를 안전하게 하려면 종료 훅과 시그널 처리를 미리 갖춰 두는 편이 좋습니다.
짧은 예제
javascript
process.on("SIGTERM", () => {
server.close(() => {
process.exit(0);
});
});빠른 정리
| 항목 | 의미 |
|---|---|
SIGINT | 터미널에서 중단 신호 |
SIGTERM | 종료 요청 신호 |
process.on(signal, handler) | 시그널 처리기 등록 |
| 종료 정리 | 서버 종료, 자원 해제, 로그 flush |
주의할 점
시그널을 받았다고 해서 무조건 process.exit()를 바로 호출하는 것은 위험할 수 있습니다.
먼저 필요한 정리 작업이 끝났는지 확인하고, 종료 코드와 종료 순서를 함께 설계하는 편이 좋습니다.
참고 링크
1 sources