NestJS 라이프사이클 훅: 모듈 및 앱 종료 시점 관리 및 활용법
🤖 AI 추천
NestJS 기반의 백엔드 개발자라면 누구나 애플리케이션의 생명주기를 이해하고 리소스 관리를 효율적으로 수행하기 위해 알아야 할 내용입니다. 특히 모듈별 초기화 및 정리 작업이 필요한 경우 유용합니다.
🔖 주요 키워드

NestJS 라이프사이클 훅: 모듈 및 앱 종료 시점 관리 및 활용법
핵심 기술
NestJS는 의존성 주입(DI) 기반 프레임워크로, 애플리케이션의 컴포넌트(모듈, 프로바이더 등) 생성 및 소멸 시점에 특정 로직을 실행할 수 있도록 라이프사이클 훅(Lifecycle Hook)을 제공합니다. 이를 통해 개발자는 애플리케이션의 초기화 및 종료 과정을 효과적으로 제어할 수 있습니다.
기술적 세부사항
- 기본 실행 흐름:
main.ts
실행 →AppModule
로딩 → 모듈/프로바이더 의존성 주입 → 컨트롤러/서비스 작동 → 요청 처리 완료 순으로 진행됩니다. - 라이프사이클 훅: NestJS는 특정 이벤트 발생 시 개발자가 작성한 메서드를 자동으로 호출하는 인터페이스를 제공합니다.
OnModuleInit
: 모듈의 모든 프로바이더가 초기화된 직후 호출됩니다. 초기 설정 로직에 사용됩니다.OnApplicationBootstrap
: NestJS 애플리케이션이 완전히 부트스트랩된 후 호출됩니다. 전역 설정 등에 활용됩니다.OnModuleDestroy
: 모듈이 종료되기 직전에 호출됩니다. 모듈별 리소스 정리 작업에 적합합니다.OnApplicationShutdown
: 애플리케이션 종료 시그널을 감지했을 때 호출됩니다. 전역적인 리소스(예: 데이터베이스 커넥션) 정리 작업에 사용됩니다.
- 훅 사용 예시:
@Injectable()
데코레이터와implements
키워드를 사용하여OnModuleInit
또는OnApplicationShutdown
등의 인터페이스를 구현하고 해당 메서드를 작성하여 로직을 정의합니다.async
메서드도 지원합니다. OnModuleDestroy
vsOnApplicationShutdown
:OnModuleDestroy
는 개별 모듈의 종료 시점에,OnApplicationShutdown
은 애플리케이션 전체의 종료 시점에 호출되어 호출 범위가 다릅니다.
📚 관련 자료
NestJS
NestJS 프레임워크 자체의 소스 코드로, 라이프사이클 훅의 구현 및 동작 방식을 깊이 이해하는 데 가장 직접적인 자료입니다.
관련도: 100%
nestjs-command
NestJS 애플리케이션에서 커맨드라인 인터페이스(CLI)를 구현하는 라이브러리로, 앱의 시작 및 종료 시점에 커맨드를 실행하는 예제를 통해 라이프사이클 훅의 활용 사례를 엿볼 수 있습니다.
관련도: 70%
nest-realtime-chat-gateway
NestJS를 사용한 실시간 채팅 게이트웨이 예제 프로젝트로, WebSocket 연결 설정 및 해제와 같은 애플리케이션 생명주기 이벤트와 관련된 로직을 라이프사이클 훅을 통해 어떻게 관리하는지 보여줄 수 있습니다.
관련도: 60%