Node.js
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
Node.js๋ ๋ฌด๋ฃ ์คํ์์ค ํฌ๋ก์ค ํ๋ซํผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ด๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ์๋ฒ, ์น์ฑ, ๋ช ๋ น์ค ๋๊ตฌ, ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ์กด์ ์น ๋ธ๋ผ์ฐ์ ์์ ํด๋ผ์ด์ธํธ ์ธก์ ๋์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ฐ์๋ง ์ฌ์ฉ๋์์ผ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ชจ๋ธ์ด ์๋ฒ ์ธก์์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์์ ๊ฒ์ด๋ผ ํ๋จ๋์ด ๋ธ๋ผ์ฐ์ ๋ฐ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ๊ฐ๋ฅํ๋๋ก Node.js๋ ๋ฐํ์์ด ์๊ฒจ๋ฌ๋ค.
Node.js ํน์ง
- Google์ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฌ์ฉ
- ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ
- ๋ ผ ๋ธ๋กํน (๋น๋๊ธฐ I/O)
์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ Node.js
์ฑ๊ธ ์ค๋ ๋๋, ํ๋ก์ธ์ค์์ ํ๋์ ์ค๋ ๋๊ฐ ํ๋์ ์์ฒญ๋ง์ ์ํํ๋ ๊ฒ์ด๋ค.
* ํ๋ก์ธ์ค: ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค (ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋์ด CPU์์ ์คํ๋๋ ๋จ์) ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ํ๋ก์ธ์ค ์์ฑ์ ๋ง์ ์์(๋ฉ๋ชจ๋ฆฌ, CPU ์๊ฐ ๋ฑ)์ ์๋ชจํ๋ค. * ์ค๋ ๋: ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์์ ์ ๊ฐ์ฅ ์์ ๋จ์. ํ๋ก์ธ์ค๋ ํ๋ ์ด์์ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. (๋ฉํฐ ์ค๋ ๋ฉ) |
Node.js๋ ์ฑ๊ธ ์ค๋ ๋๋ก ์๋ํ์ฌ ํ๋ก์ธ์ค ํ๋์ ๋ฉ์ธ ์ค๋ ๋๊ฐ ๋จ ํ๋์ด๋ค. Node.js๋ ํ๋์ ์์ ๋ง์ ์ฒ๋ฆฌํ๊ณ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์๋ ๋น๋๊ธฐ I/O ์์ ์ ํตํด ์๋ง์ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋์๋ค.
์ด๋ฒคํธ ๊ธฐ๋ฐ ๋น๋๊ธฐ I/O
Node.js๋ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด Libuv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์์ฒญ๋ค์ ๋ธ๋กํนํ์ง ์๊ณ ์คํํ ์ ์๋ค.
๋ธ๋กํน์ด๋, ํน์ ์์ ์ ์๋ฃํ ๋๊น์ง ๋ค๋ฅธ ์์ ์ ์ค์งํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ฅผ ๋งํ๋ค. ์ฆ, ํ๋์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ์์ ์ด ์คํ๋์ง ์๊ฒ ๋์ด ๋นํจ์จ์ ์ด๋ค.
Node.js๋ ์ด๋ฒคํธ ๋ฃจํ์ ์ฝ๋ฐฑ ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ ผ๋ธ๋กํน ๋ฐฉ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
โก๏ธ ์ด๋ฒคํธ ๋ฃจํ: ์์ ์ด ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋๋๋ก ๊ด๋ฆฌํ๊ณ , ์์ ์ด ์๋ฃ๋๋ฉด ๊ด๋ จ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํ
๋ ผ๋ธ๋กํน ๋ฐฉ์ ๋์ ์์
- Node.js๊ฐ ๋น๋๊ธฐ ์์ ์ ์์ฒญ
- ์ด ์์ฒญ์ ๋ฐฑ๊ทธ๋ผ์ด๋(์ด๋ฒคํธ ๋ฃจํ, ์ค๋ ๋ ํ(Libuv), ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ)์์ ์ฒ๋ฆฌ๋๊ณ Node.js๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํ
- ๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋๋ฉด ์ด๋ฒคํธ ๋ฃจํ๊ฐ ์ฝ๋ฐฑ์ ํ์ ์ถ๊ฐ
- Node.js๋ ํ์ฌ ์์ ์ด ์๋ฃ๋๋ฉด ์ด๋ฒคํธ ๋ฃจํ์ ๋๊ธฐ ์ค์ธ ์ฝ๋ฐฑ์ ์คํ
Node.js ๊ตฌ์กฐ
Libuv๋ด์ Thread Pool๊ณผ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ํตํด ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ค.
์ด๋ฅผ ํตํด Node.js๋ ์ฑ๊ธ ์ค๋ ๋ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์๋ ๋ฉํฐ์ค๋ ๋์ ์ฅ์ ์ ํ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
*๋ฐ์ธ๋ฉ: Node.js๋ ์ผ๋ถ ์ ์์ค ์์ (ํ์ผ ์์คํ ์ ๊ทผ, ๋คํธ์ํฌ ํต์ , ์ํธํ ๋ฑ)์ ๊ตฌํํ๊ธฐ ์ํด JavaScript๋ก ๊ตฌํํ๋ ๊ฒ์ด ์๋ C/C++๋ก ์์ฑ๋ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ์ฌ์ฉํด ์ฑ๋ฅ์ ์ต์ ํ ํจ. ์ด๋ฌํ ๋ค์ดํฐ๋ธ ๋ชจ๋์ JavaScript์์ ํธ์ถํ ์ ์๋๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ๋ฉ์ปค๋์ฆ
Node.js ๋จ์
Node.js๋ ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ ๋น๋๊ธฐ ๋ ผ ๋ธ๋กํน I/O์ ํน์ง์ ๊ฐ์ง๊ณ ์์ด ๋ง์ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ง๋ง ์ด์ ๋ฐ๋ฅธ ํ๊ณ๋ ์กด์ฌํ๋ค.
- ๋ณต์กํ ์ฝ๋ ๊ตฌ์กฐ: ์ฝ๋ฐฑ ์ง์ฅ๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. Promise์ Async/await ๋์ ์ผ๋ก ์ฝ๋ฐฑ ์ง์ฅ์ ๋ฌธ์ ๊ฐ ์ํ๋์์ง๋ง ๋น๋๊ธฐ ํ๋ฆ์ ์ ์ค๊ณํด์ผ ํ๋ ๋ถ๋ด
- ์๋์ ์ผ๋ก ๋ฎ์ ์ฑ๋ฅ: CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์์ ์ ์ฒ๋ฆฌํ ๋ ๋ค๋ฅธ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์ ๋นํด ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค.
- ๋ณต์กํ ์๋ฌ ์ฒ๋ฆฌ
๊ทธ๋ฌ๋ ๋ชจ๋ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ๋ก ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๊ณ npm ํจํค์ง ์ํ๊ณ๋ก ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ ๋น ๋ฅด๊ฒ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
'๊ฐ๋ฐ ๊ณต๋ถ > ์น ์ง์ ์ฐฝ๊ณ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
GraphQL vs Rest API (1) | 2024.11.07 |
---|---|
JWT (JSON Web Token) ๊ฐ๋ (0) | 2024.11.06 |