Node.js / NestJS

Node.js ๊ธฐ์ดˆ

Event loop, ๋…ผ๋ธ”๋กœํ‚น I/O, CommonJS/ES6 ๋ชจ๋“ˆ, package.json, npm/yarn

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

Node.js์˜ event loop๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

event loop๋Š” ๋น„๋™๊ธฐ ์‹คํ–‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Node.js์˜ ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. call stack๊ณผ callback queue๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉฐ, call stack์ด ๋น„์–ด ์žˆ์„ ๋•Œ callback์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋•๋ถ„์— Node.js๋Š” ์ถ”๊ฐ€ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ ๋„ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด, I/O ์ž‘์—…์— ๋งค์šฐ ํšจ์œจ์ ์ธ ๋ชจ๋ธ์ด ๋ฉ๋‹ˆ๋‹ค.

2

Node.js I/O ๋ชจ๋ธ์˜ ์ฃผ์š” ํŠน์ง•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

Node.js๋Š” ๋…ผ๋ธ”๋กœํ‚น ๋น„๋™๊ธฐ I/O ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. I/O ์ž‘์—…(ํŒŒ์ผ ์ฝ๊ธฐ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ)์ด ์‹œ์ž‘๋˜๋ฉด Node.js๋Š” ๊ทธ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ๊ณ„์† ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด callback์ด queue์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ๋™์‹œ I/O ์ž‘์—…์ด ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

3

require()์™€ import์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ต๋ณ€

require()๋Š” CommonJS ๊ตฌ๋ฌธ์œผ๋กœ, ๋Ÿฐํƒ€์ž„์— ๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. import๋Š” ES6 modules ๊ตฌ๋ฌธ์œผ๋กœ, ์‹คํ–‰ ์ „์— ์ •์ ์œผ๋กœ ๋ถ„์„๋ฉ๋‹ˆ๋‹ค. ES6 modules๋Š” tree-shaking(๋ฏธ์‚ฌ์šฉ ์ฝ”๋“œ ์ œ๊ฑฐ)์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ ๋” ๋‚˜์€ ์ตœ์ ํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CommonJS๋Š” ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์—ฌ์ „ํžˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ES6 modules๊ฐ€ ํ˜„๋Œ€์ ์ธ ํ‘œ์ค€์ด ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

4

package.json ํŒŒ์ผ์˜ ์šฉ๋„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

5

node_modules ํด๋”์˜ ์—ญํ• ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

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

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๊ฐœ ์งˆ๋ฌธ

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

Junior
15๊ฐœ ์งˆ๋ฌธ

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, ๊ธฐ์ˆ  ํ…Œ์ŠคํŠธ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์—ฐ์Šต, ๋ฉด์ ‘ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์„ธ์š”.

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