Node.js / NestJS

์ž‘์—… ์Šค์ผ€์ค„๋ง

Cron jobs, intervals, timeouts, ๋™์  ์Šค์ผ€์ค„๋ง, ๋ถ„์‚ฐ ์Šค์ผ€์ค„๋ง

15 ๋ฉด์ ‘ ์งˆ๋ฌธยท
Junior
1

NestJS๊ฐ€ ์˜ˆ์•ฝ๋œ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ณต์‹ npm ํŒจํ‚ค์ง€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

@nestjs/schedule๋Š” cron jobs, intervals, timeouts๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด NestJS์— ํ†ตํ•ฉ๋œ ๊ณต์‹ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ node-cron ํŒจํ‚ค์ง€์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด providers์—์„œ @Cron, @Interval, @Timeout ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2

NestJS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์Šค์ผ€์ค„๋ง ๋ชจ๋“ˆ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฃจํŠธ ๋ชจ๋“ˆ์—์„œ ScheduleModule.forRoot()๋ฅผ ์ž„ํฌํŠธํ•˜๋ฉด ์Šค์ผ€์ค„๋ง ์‹œ์Šคํ…œ์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” scheduler๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ์˜ˆ์•ฝ๋œ ์ž‘์—… ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž„ํฌํŠธ๊ฐ€ ์—†์œผ๋ฉด ์˜ˆ์•ฝ๋œ ์ž‘์—…์ด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3

๋งค์ผ ์ž์ •์— ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” cron ๊ตฌ๋ฌธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

cron ๊ตฌ๋ฌธ '0 0 * * *'๋Š” ๋ถ„ 0, ์‹œ 0, ๋งค์›” ๋ชจ๋“  ์ผ, ๋งค์›”, ๋งค์ฃผ ๋ชจ๋“  ์š”์ผ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์ผ ์ž์ •์— ์ž‘์—…์„ ์˜ˆ์•ฝํ•˜๋Š” ํ‘œ์ค€ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค. cron ํ˜•์‹์€ '๋ถ„ ์‹œ ์ผ ์›” ์š”์ผ' ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

4

NestJS์—์„œ 5๋ถ„๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” cron job์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

5

'0 * * * *' ๋Œ€์‹  CronExpression.EVERY_HOUR๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

+12 ๋ฉด์ ‘ ์งˆ๋ฌธ

๊ธฐํƒ€ Node.js / NestJS ๋ฉด์ ‘ ์ฃผ์ œ

Node.js ๊ธฐ์ดˆ

Junior
20๊ฐœ ์งˆ๋ฌธ

Node.js ์ฝ”์–ด API

Junior
25๊ฐœ ์งˆ๋ฌธ

๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Junior
25๊ฐœ ์งˆ๋ฌธ

Express.js ๊ธฐ์ดˆ

Junior
20๊ฐœ ์งˆ๋ฌธ

NestJS ๊ธฐ์ดˆ

Junior
23๊ฐœ ์งˆ๋ฌธ

REST API ์„ค๊ณ„

Junior
20๊ฐœ ์งˆ๋ฌธ

๊ฒ€์ฆ๊ณผ DTO

Junior
20๊ฐœ ์งˆ๋ฌธ

API ๋ฌธ์„œํ™” ๋ฐ ๊ณ„์•ฝ

Junior
20๊ฐœ ์งˆ๋ฌธ

์—๋Ÿฌ ์ฒ˜๋ฆฌ

Junior
20๊ฐœ ์งˆ๋ฌธ

๋‹จ์œ„ ํ…Œ์ŠคํŠธ

Junior
20๊ฐœ ์งˆ๋ฌธ

NestJS ๋ชจ๋“ˆ๊ณผ DI

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

๊ตฌ์„ฑ ๋ฐ ํ™˜๊ฒฝ ๊ด€๋ฆฌ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

JWT ์ธ์ฆ

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

์ธ๊ฐ€ ๋ฐ RBAC

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

TypeORM์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

Mid-Level
30๊ฐœ ์งˆ๋ฌธ

Prisma ORM

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

๋ฏธ๋“ค์›จ์–ด์™€ ์ธํ„ฐ์…‰ํ„ฐ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

ํŒŒ์ผ ์—…๋กœ๋“œ

Mid-Level
15๊ฐœ ์งˆ๋ฌธ

WebSockets

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

NestJS๋ฅผ ์‚ฌ์šฉํ•œ GraphQL

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

์—”๋“œํˆฌ์—”๋“œ ํ…Œ์ŠคํŠธ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

Redis๋ฅผ ์‚ฌ์šฉํ•œ ์บ์‹ฑ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

Bull์„ ์‚ฌ์šฉํ•œ ํ

Mid-Level
20๊ฐœ ์งˆ๋ฌธ

DevOps, Logging, CI/CD

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

Docker ๋ฐ ์ปจํ…Œ์ด๋„ˆํ™”

Mid-Level
25๊ฐœ ์งˆ๋ฌธ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

Senior
30๊ฐœ ์งˆ๋ฌธ

๋ณด์•ˆ ๋ชจ๋ฒ” ์‚ฌ๋ก€

Senior
25๊ฐœ ์งˆ๋ฌธ

์„ฑ๋Šฅ ๋ฐ ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ

Senior
30๊ฐœ ์งˆ๋ฌธ

๋‹ค์Œ ๋ฉด์ ‘์„ ์œ„ํ•ด Node.js / NestJS์„ ๋งˆ์Šคํ„ฐํ•˜์„ธ์š”

๋ชจ๋“  ์งˆ๋ฌธ, flashcards, ๊ธฐ์ˆ  ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์—ฐ์Šต, ๋ฉด์ ‘ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์„ธ์š”.

๋ฌด๋ฃŒ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ