๋ฐ์ํ

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์ ํตํ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋ค๋ ์ฅ์ ์ด ์์
๋ฐ์ํ