Nest.js Lifecycle

ClassBinu·2024년 5월 23일

F-lab

목록 보기
38/65

https://docs.nestjs.com/fundamentals/lifecycle-events#lifecycle-sequence

request-response cycle 와는 다름! 이것도 정리해야겠다.

Lifecycle sequence

크게 나누면 초기화 - 실행 - 종료

초기화

모듈과 서비스 초기화
설정 로드, 데이터베이스 설정
필요한 리소스 준비

실행

실제 요청을 받아 처리하고 응답을 반환

종료

개방된 연결 정리
사용 중인 리소스 해제
종료 신호 받으면 종료 전 필요한 작업을 수행할 수 있도록 종료 훅을 제공(graceful shutdown)

Nest.js 애플리케이션 생명주기

1. 부트스트래핑 시작

  • Nest 코어 부트스트래핑: 애플리케이션의 핵심 기능을 초기화합니다.

2. onModuleInit

  • 각 모듈 초기화 후:
    • 자식 컨트롤러 및 프로바이더의 onModuleInit() 메소드 대기: 각 모듈에 속한 컨트롤러와 프로바이더의 onModuleInit() 메소드를 비동기적으로 실행합니다.
    • 모듈의 onModuleInit() 메소드 대기: 모듈 자체의 onModuleInit() 메소드를 실행합니다.

3. onApplicationBootstrap

  • 각 모듈에 대하여:
    • 자식 컨트롤러 및 프로바이더의 onApplicationBootstrap() 메소드 대기: 모듈 내의 각 컨트롤러와 프로바이더가 onApplicationBootstrap() 메소드를 실행합니다.
    • 모듈의 onApplicationBootstrap() 메소드 대기: 모듈 자체의 onApplicationBootstrap() 메소드를 실행합니다.

4. 애플리케이션 실행 중

  • 리스너 시작: HTTP 서버, WebSocket 서버, 각 마이크로서비스 등의 리스너를 시작하고 연결을 준비합니다.
  • 정상적인 애플리케이션 처리: 일반적인 애플리케이션 작업을 수행합니다.

5. 종료 신호 수신

  • 애플리케이션을 종료하기 위한 신호를 받습니다.

6. onModuleDestroy

  • 각 모듈에 대하여:
    • 자식 컨트롤러 및 프로바이더의 onModuleDestroy() 메소드 대기: 각 모듈의 컨트롤러와 프로바이더가 onModuleDestroy() 메소드를 실행합니다.
    • 모듈의 onModuleDestroy() 메소드 대기: 모듈 자체의 onModuleDestroy() 메소드를 실행합니다.

7. beforeApplicationShutdown

  • 각 모듈에 대하여:
    • 자식 컨트롤러 및 프로바이더의 beforeApplicationShutdown() 메소드 대기
    • 모듈의 beforeApplicationShutdown() 메소드 대기

8. 리스너 중지

  • HTTP 서버, WebSocket 서버 등의 연결 종료를 기다립니다.

9. onApplicationShutdown

  • 각 모듈에 대하여:
    • 자식 컨트롤러 및 프로바이더의 onApplicationShutdown() 메소드 대기
    • 모듈의 onApplicationShutdown() 메소드 대기

10. 프로세스 종료

  • 프로세스를 종료합니다.

시작 -> 모듈 설정 -> 애플리케이션 시작 -> 실행 -> 모듈 종료 -> 애플리케이션 종료 준비 -> 리스터 중지 -> 애플리케이션 종료 -> 프로세스 종료

0개의 댓글