๊ฐœ๋ฐœ Code/์›น๊ฐœ๋ฐœ WebDev

[WebDev][Node.js] Node.js๋ž€? ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํŠน์ง• ์ •๋ฆฌ

5hr1rnp 2025. 1. 30. 13:29
๋ฐ˜์‘ํ˜•

 


1. Node.js๋ž€?


  • Node.js๋Š” Chrome V8 JavaScript ์—”์ง„ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค, ํฌ๋กœ์Šค ํ”Œ๋žซํผ JavaScript ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ž„
  • ๊ธฐ์กด์—๋Š” JavaScript๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์‹คํ–‰๋˜์—ˆ์ง€๋งŒ, Node.js๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ๋„ JavaScript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

2. Node.js์˜ ํŠน์ง•


2.1. ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๊ธฐ๋ฐ˜

  • Node.js๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋งŒ, ์ด๋ฒคํŠธ ๋ฃจํ”„์™€ ๋น„๋™๊ธฐ I/O ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋†’์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•จ
  • ๋ธ”๋กœํ‚น(Blocking) ๋ฐฉ์‹์ด ์•„๋‹Œ ๋…ผ๋ธ”๋กœํ‚น(Non-blocking) ๋ฐฉ์‹์œผ๋กœ ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋งŽ์€ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

2.2. ๋น„๋™๊ธฐ I/O

  • Node.js๋Š” ์ฝœ๋ฐฑ(callback), ํ”„๋กœ๋ฏธ์Šค(Promise), async/await ๊ฐ™์€ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ์ง€์›ํ•˜์—ฌ ๋†’์€ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•จ
  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•จ

2.3. ๋น ๋ฅธ ์‹คํ–‰ ์†๋„

  • V8 ์—”์ง„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋น ๋ฅธ ์†๋„๋กœ JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • JIT(Just-In-Time) ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ JavaScript๋ฅผ ์ตœ์ ํ™”๋œ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒํ•จ

2.4. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ง€์›

  • Windows, macOS, Linux ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•จ
  • Docker์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ๋„ ์‰ฝ๊ฒŒ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•จ

2.5. ํ’๋ถ€ํ•œ ๋ชจ๋“ˆ ์ƒํƒœ๊ณ„ (NPM)

  • Node.js๋Š” ์„ธ๊ณ„ ์ตœ๋Œ€์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(NPM, Node Package Manager)๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, 200๋งŒ ๊ฐœ ์ด์ƒ์˜ ํŒจํ‚ค์ง€๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฐœ๋ฐœ์ž๋Š” ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ

728x90
๋ฐ˜์‘ํ˜•

3. Node.js์˜ ์ฃผ์š” ํ™œ์šฉ ์‚ฌ๋ก€


3.1. ์›น ์„œ๋ฒ„ ๋ฐ API ์„œ๋ฒ„

  • Express.js์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ณ  ๊ฐ€๋ฒผ์šด ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ
  • RESTful API ๋ฐ GraphQL API ์„œ๋ฒ„ ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋จ

3.2. ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • WebSocket๊ณผ Socket.io๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋น„์Šค, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

3.3. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

  • Node.js๋Š” ๊ฒฝ๋Ÿ‰ ์„œ๋ฒ„๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์–ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์— ์ ํ•ฉํ•จ

3.4. ์„œ๋ฒ„๋ฆฌ์Šค(Serverless) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • AWS Lambda, Google Cloud Functions, Azure Functions ๋“ฑ๊ณผ ๊ฐ™์€ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ๋„ Node.js๋ฅผ ํ™œ์šฉ ๊ฐ€๋Šฅํ•จ

3.5. ํฌ๋กค๋ง ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

  • Puppeteer์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›น ํฌ๋กค๋ง ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์ž๋™ํ™” ๊ฐ€๋Šฅํ•จ

4. ๋งˆ๋ฌด๋ฆฌ


  • Node.js๋Š” ๋น ๋ฅธ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์ ์ธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๊ฐ–์ถ˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์œผ๋กœ, ์›น ์„œ๋ฒ„, ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํฌ๋กค๋ง ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅํ•จ
  • ํŠนํžˆ NPM์„ ํ†ตํ•œ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ
๋ฐ˜์‘ํ˜•