Skip to main content

NestJs - LifeCycle

NestJs - LifeCycle

Sequence LifeCycleโ€‹

NestJs ์‹คํ–‰ ์‹œํ€€์Šค ์ „์ฒด ์ฃผ๊ธฐ๋ฅผ 3๋‹จ๊ณ„๋กœ ํฌ๊ฒŒ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • ์ดˆ๊ธฐํ™” (initializing)
  • ์‹คํ–‰ (running)
  • ์ข…๋ฃŒ (terminatitng)

์ดˆ๊ธฐํ™” (Initializing)โ€‹

  1. BootStrapping Starts
    • Nest Core BootStrapping
  2. onModuleInit
    • ๋ชจ๋“  ๋ชจ๋“ˆ์˜ child controller์™€ provider์˜ onModuleInit ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
    • ๋ชจ๋“ˆ์˜ onModuleInit ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  3. onApplicationBootstrap
    • ๋ชจ๋“  ๋ชจ๋“ˆ์˜ child controller์™€ provider์˜ onApplicationBootstrap ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
    • ๋ชจ๋“ˆ์˜ onApplicationBootstrap ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.

์‹คํ–‰ (running)โ€‹

  1. Start listeners
    • HTTP ์„œ๋ฒ„, WS ์„œ๋ฒ„, ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ์ปค๋„ฅ์…˜์ด ์—ด๋ฆฌ๊ณ , ์ค€๋น„๋ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  2. Application is Running
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹œ์ž‘๋œ๋‹ค.

์ข…๋ฃŒ (terminating)โ€‹

  1. onModuleDestroy
    • ๋ชจ๋“  ๋ชจ๋“ˆ์˜ child controller์™€ provider์˜ onModuleDestroy ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
    • ๋ชจ๋“ˆ์˜ onModuleDestroy ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  2. beforeApplicationShutdown
    • ๋ชจ๋“  ๋ชจ๋“ˆ์˜ child controller์™€ provider์˜ beforeApplicationShutdown ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
    • ๋ชจ๋“ˆ์˜ beforeApplicationShutdown ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  3. Stop Listeners
    • HTTP ์„œ๋ฒ„, WS ์„œ๋ฒ„, ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๊ฐ€ ์ปค๋„ฅ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  4. onApplicationShutdown
    • ๋ชจ๋“  ๋ชจ๋“ˆ์˜ child controller์™€ provider์˜ onApplicationShutdown ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
    • ๋ชจ๋“ˆ์˜ onApplicationShutdown ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•œ๋‹ค.
  5. Process Exits

LifeCycle Eventsโ€‹

LifeCycle ์ด๋ฒคํŠธ๋“ค์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ณ , ์ข…๋ฃŒ๋˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. Nest๋Š” LifeCycle ์‹œํ€€์Šค ์ ˆ์ฐจ์— ๋งž์ถฐ์„œ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ, ์ปจํŠธ๋กค๋Ÿฌ, providers์— ๋“ฑ๋ก๋œ LifeCycle Hook ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

onModuleInit()โ€‹

ํ˜ธ์ŠคํŠธ ๋ชจ๋“ˆ์˜ ์˜์กด์„ฑ์ด ํ•ด์†Œ๋˜์—ˆ์„ ๋•Œ, ํ•œ๋ฒˆ ํ˜ธ์ถœ๋œ๋‹ค.

onApplicationBootstrap()โ€‹

๋ชจ๋“  ๋ชจ๋“ˆ์ด ์ดˆ๊ธฐํ™”๋˜๊ณ , ์ปค๋„ฅ์…˜์ด ์—ด๋ฆฌ๊ธฐ ์ „์— ํ•œ๋ฒˆ ํ˜ธ์ถœ๋œ๋‹ค.

onModuleDestory()โ€‹

์ข…๋ฃŒ ์‹œ๊ทธ๋„(SIGTERM)์„ ์ˆ˜์‹ ๋ฐ›์•˜์„ ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.

beforeApplicationShutdown()โ€‹

onModuleDestory ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค. ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด app.close()์˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์ปค๋„ฅ์…˜์˜ ์ข…๋ฃŒ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.

onApplicationShutdown()โ€‹

๋ชจ๋“  ์ปค๋„ฅ์…˜์ด ์ข…๋ฃŒ๋œ ํ›„, ํ˜ธ์ถœ๋œ๋‹ค.