๐ Node.js๋?
Node.js๋ Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์ ํ๊ฒฝ์ด๋ค. ์ฆ, ์๋๋ ๋ธ๋ผ์ฐ์ ์์๋ง ์คํ๋๋ JavaScript๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์๋ฒ ํ๊ฒฝ์์๋ ์คํํ ์ ์๋๋ก ๋ง๋ ํ๋ซํผ์ด๋ค. Node.js๋ ๋ธ๋ผ์ฐ์ ์์ด๋ JavaScript๋ฅผ ์คํํ ์ ์๋๋ก ํด์ฃผ๋ฉฐ, ์ด๋ก ์ธํด JavaScript๋ ๋จ์ํ ํด๋ผ์ด์ธํธ ์ธก ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ๋์ด, ์๋ฒ ๊ฐ๋ฐ, API ๊ตฌ์ถ, ๋ง์ดํฌ๋ก์๋น์ค, CLI ๋๊ตฌ ๊ฐ๋ฐ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ ๊ฐ๋ฅํ ๋ฒ์ฉ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํ์ฅ๋์๋ค.
+ ์ถ๊ฐ ์ง์
๋ฐํ์
~> ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ํ๊ฒฝ์ผ๋ก, ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์คํ๋ ์ ์๋๋ก ํด์ํ๊ณ ์คํํ๋ ์์คํ
~> ์๋ฅผ ๋ค์ด, Java๋ JVM(Java Virtual Machine), Python์ Python ์ธํฐํ๋ฆฌํฐ, JavaScript๋ ๋ธ๋ผ์ฐ์
ํฐ๋ฏธ๋
~> ์ฌ์ฉ์๊ฐ ์ด์์ฒด์ (OS)์ ํ ์คํธ ๊ธฐ๋ฐ์ผ๋ก ์ํธ์์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ์ธํฐํ์ด์ค
~> ๋ง์ฐ์ค ๋์ ํค๋ณด๋๋ก ๋ช ๋ น์ด(Command)๋ฅผ ์ ๋ ฅํ์ฌ ์ปดํจํฐ๋ฅผ ์กฐ์ํ๋ ์ฐฝ
~> ํฐ๋ฏธ๋ ์์ฒด๋ ๋จ์ํ ์ ๋ ฅ ์ฐฝ์ผ ๋ฟ์ด๊ณ , ์ค์ ๋ช ๋ น์ด๋ฅผ ํด์ํ๊ณ ์คํํ๋ ์ญํ ์ ์(Shell)์ด ๋ด๋น
(Windows์์๋ cmd๋ PowerShell, Linux์ macOS์์๋ bash, zsh ๊ฐ์ ์์ด ๋ช ๋ น์ ์ฒ๋ฆฌ)
npm(Node Package Manager)
~> Node.js์ ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ) ๊ด๋ฆฌ ๋๊ตฌ
~> Node.js์์ ์ฌ์ฉํ ์ ์๋ ์คํ์์ค ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ
๐ Node.js์ ํน์ง
1๏ธโฃ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฐ Non-blocking I/O
โ
์ผ๋ฐ์ ์ธ ์๋ฒ(์: PHP, Java Servlet)๋ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์์
์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ์ง๋ง,
โ
Node.js๋ Non-blocking I/O ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋๊ธฐ ์์ด ๋ค์ ์์
์ ์คํ ๊ฐ๋ฅ
๐ ์ฅ์
• ์ฌ๋ฌ ๊ฐ์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ → ๋๊ท๋ชจ ํธ๋ํฝ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ
• ๋น ๋ฅธ ์๋ต ์๋ → ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์ฝ๊ธฐ ๊ฐ์ ์ ์ถ๋ ฅ(I/O) ์์ ์ ์ต์ ํ
2๏ธโฃ Single-thread ๊ธฐ๋ฐ
โ
์ผ๋ฐ์ ์ธ ์๋ฒ(์: Java, Python)๋ ์์ฒญ๋ง๋ค ์๋ก์ด ์ค๋ ๋๋ฅผ ์์ฑํ์ง๋ง,
โ
Node.js๋ Event Loop๋ฅผ ์ฌ์ฉํด ํ๋์ ์ฑ๊ธ ์ค๋ ๋๋ก ๋น๋๊ธฐ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ
๐ ์ฅ์
• ์ ์ ๋ฆฌ์์ค๋ก๋ ๋ง์ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ → ์๋ฒ ๋น์ฉ ์ ๊ฐ
• ๋ฉํฐ์ค๋ ๋ ๋ฐฉ์๋ณด๋ค ์ฝ๋๊ฐ ๊ฐ๊ฒฐ → ๋๊ธฐํ ๋ฌธ์ ๊ฐ ์์
• ํ์ง๋ง, CPU ์์ ์ด ๋ง์ ๊ฒฝ์ฐ(์: ๋๊ท๋ชจ ์ฐ์ฐ, ๋จธ์ ๋ฌ๋ ๋ฑ)์๋ ์ ํฉํ์ง ์์
3๏ธโฃ JavaScript ํ์คํ ๊ฐ๋ฐ ๊ฐ๋ฅ
โ
๊ธฐ์กด์๋ ํด๋ผ์ด์ธํธ(Frontend)๋ JavaScript, ์๋ฒ(Backend)๋ Java, Python ๋ฑ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง,
โ
Node.js๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฑ์๋๋ JavaScript๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ
๐ ์ฅ์
• ๊ฐ๋ฐ ์๋ ์ฆ๊ฐ → ํ๋์ ์ธ์ด(JavaScript)๋ก ํ์คํ ๊ฐ๋ฐ ๊ฐ๋ฅ
• ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ํตํฉ์ด ์ฌ์ → ๊ฐ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํ์ ์ด ์ํ
• React, Vue, Angular ๊ฐ์ ํ๋ ์์ํฌ์ ์ ๋ง์ → JSON ๊ธฐ๋ฐ REST API ๊ฐ๋ฐ์ด ์ฉ์ด
4๏ธโฃ npm(Node Package Manager)
โ
Node.js๋ npm(Node Package Manager) ๋๋ถ์ ์๋ง์ ์คํ์์ค ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์
โ
ํ๋ ์์ํฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ
์คํธ ๋๊ตฌ ๋ฑ ๋ค์ํ ๋ชจ๋์ ๊ฐํธํ๊ฒ ์ค์น & ๊ด๋ฆฌ ๊ฐ๋ฅ
๐ ์ฅ์
• ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฐ๋ฅ → ํ์ํ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํ์ง ์๊ณ ํจํค์ง ํ์ฉ ๊ฐ๋ฅ
• ํจํค์ง ์๋ ์ ๋ฐ์ดํธ & ์์กด์ฑ ๊ด๋ฆฌ ์ฌ์ → package.json์ ํตํด ํ๋ก์ ํธ ๊ด๋ฆฌ
• ๊ธ๋ก๋ฒ ํจํค์ง & ๋ก์ปฌ ํจํค์ง ์ง์ → ํ๋ก์ ํธ ๋จ์ ๋๋ ์์คํ ์ ์ฒด์์ ์ฌ์ฉ ๊ฐ๋ฅ
+ ์ถ์ฒ
'๐ Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
NUnit์ ๋ํ์ฌ (0) | 2025.03.08 |
---|---|
Rendering์ ๋ํ์ฌ (0) | 2025.03.07 |
Database์ ๋ํ์ฌ (0) | 2025.02.21 |
Ping, Jitter, Packet Loss์ ๋ํ์ฌ (0) | 2025.02.19 |
TCP์ UDP์ ๋ํ์ฌ (0) | 2025.02.19 |