WEBBOOK CHAPTER

NestJS 11, 시작부터 런칭까지: 30장. Provider lifetime과 종료 순서를 이해한다

30장. Provider lifetime과 종료 순서를 이해한다

singleton provider에 currentUser 같은 요청별 값을 저장하면 동시 요청이 섞인다. context는 explicit parameter 또는 안전한 async context를 사용하고, request scope는 객체 생성·성능 비용을 측정한 뒤 제한한다. dynamic module은 동일 configuration instance를 재사용할지 명확히 하며 NestJS 11의 module 식별 변화가 test double 대상에 주는 영향을 확인한다.

startup provider가 DB, Redis, JWKS를 무제한 기다리지 않게 timeout과 failure 정책을 둔다. 필수 dependency 없이는 process를 실패시키고, 일시적으로 없어도 조회가 가능한 dependency는 readiness와 degraded mode로 구분한다. partial initialization 상태에서 traffic을 받지 않는다.

shutdown hook은 API 신규 traffic 차단, queue intake 중지, 처리 중 job 완료/lease 반환, WebSocket 종료 안내, telemetry flush, DB close 순서다. NestJS 11의 destroy hook 역순을 module dependency와 함께 test한다. Kubernetes grace보다 내부 drain timeout이 짧아야 한다.