Node.js๋ ์ฑ๊ธ ์ค๋ ๋์์ ๋์ํ์ง๋ง, ๋๋๊ฒ๋ ๋์์ฑ๊ณผ ํจ์จ์ ์ด๊ณ ๋น ๋ฅธ ์๋ต ์๊ฐ์ ์ ์งํ ์ ์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค. ์ค์ผ์คํธ๋ผ์ ์งํ์์ฒ๋ผ Node.js๋ ๋ฉ์ธ ์ค๋ ๋์์ ๋น๋๊ธฐ ์์ ์ ๊ด๋ฆฌํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ I/O ์์ (๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์์คํ ์์ )๋ค์ด ์๋ฃ๋๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ์ฃ .
์ด ๊ธ์์๋ Node.js์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ชจ๋ธ๊ณผ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ libuv ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ญํ ์ ์ค๋ช ํ๊ณ , ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ค๋ ๋ ํ๊ณผ ์ธ๋ถ API ํธ์ถ์ด ์ด๋ป๊ฒ ๋์ํ๊ณ ์ฑ๋ฅ์ ์ต์ ํํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
1. Node.js์ ์ด๋ฒคํธ ๋ฃจํ์ ๋น๋๊ธฐ ๋ ผ๋ธ๋กํน I/O ๋ชจ๋ธ
Node.js๋ ๋จ์ผ ์ค๋ ๋ ๊ธฐ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด์ง๋ง, ๋ชจ๋ ์์ ์ ์ง์ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค. ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ด๋ถ์ ์ผ๋ก ๋ค์ค ์ค๋ ๋๋ฅผ ํ์ฉํฉ๋๋ค. ํนํ, ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์์คํ ์ ๊ทผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ๊ณผ ๊ฐ์ I/O ์์ ๋ค์ libuv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋ฐฑ๊ทธ๋ผ์ด๋์ ์ค๋ ๋ ํ์ ์์๋ฉ๋๋ค. ๋ฉ์ธ ์ค๋ ๋์์๋ ์ด ์์ ๋ค์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง ๋ค๋ฅธ ์์ ์ ๊ณ์ ์ํํ๊ณ , ์๋ฃ๋ ๊ฒฐ๊ณผ๋ง ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
์ด๋ฒคํธ ๋ฃจํ๋ Node.js์ ํต์ฌ์ ์ธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ผ๋ก, ๋ฉ์ธ ์ค๋ ๋์์ ๋น๋๊ธฐ ์์ ์ ์งํํ๋ฉฐ ๊ฐ ์์ ์ด ์๋ฃ๋์์ ๋ ์ ์ ํ ์ฝ๋ฐฑ์ ์คํํฉ๋๋ค. ์ด ๋ ผ๋ธ๋กํน I/O ๋ชจ๋ธ ๋๋ถ์ Node.js๋ ์ค์๊ฐ ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ผ ์์ฒ, ์๋ง ๊ฐ์ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํด์ผ ํ๋ ํ๊ฒฝ์์ ๋์ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ ์ฌ์ฉ์๋ก๋ถํฐ ๋ค์ด์ค๋ ์์ฒญ์ ์ฆ์ ์ฒ๋ฆฌํ๋ฉด์๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ํํ ์ ์์ด, ๋ง์ ์ฌ์ฉ์๋ค์ด ๋์์ ์ ์ํด๋ ์ํํ๊ฒ ์ด์๋ ์ ์์ต๋๋ค.
๋ง์ฝ Node.js๊ฐ ์๋, ๋๊ธฐ์ ์ธ ์์คํ ๋๋ ์๋ฒ์๋ค๋ฉด, ๊ฐ I/O ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ชจ๋ ๋ค๋ฅธ ์์ฒญ์ ์ฐจ๋จ๋์ด ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ํ๋์ ๋คํธ์ํฌ ์์ฒญ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ์์ฒญ๋ค์ด ๋๊ธฐ ์ํ์ ๋จธ๋ฌผ๊ฒ ๋์ด, ๋์์ฑ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ณ , ๋ง์ ์ฌ์ฉ์๊ฐ ์ ์ํ๋ ์ํฉ์์ ์ฑ๋ฅ ์ ํ์ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ๊ฒ ๋์๊ฒ ์ฃ .
2. ๋น๋๊ธฐ ๋ชจ๋ธ์ ์ฑ๋ฅ๊ณผ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฆฌ์์ค
๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์์ ์ค์ํ ์ ์, ์์ ์ ๋ฉ์ธ ์ค๋ ๋์์ ๋น๋๊ธฐ๋ก ๋์ง๋ค๊ณ ํด์ ์๋์ผ๋ก ๋ฌดํํ ๋์์ฑ์ ๋ณด์ฅํ ์๋ ์๋ค๋ ๊ฒ์ ๋๋ค. Node.js์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ libuv์ ์ค๋ ๋ ํ๊ณผ ๊ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฆฌ์์ค์ ์์กดํฉ๋๋ค. ์ด ์ค๋ ๋ ํ์ ๋์์ ์ฌ๋ฌ I/O ์์ ์ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ๊ทธ ํฌ๊ธฐ์ ์ฑ๋ฅ์ ์ ํ์ ์ ๋๋ค. ๋ฐ๋ผ์, ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค์ ๋ก ๋ณ๋ ฌ๋ก ์์ ์ ์ํํ ์ถฉ๋ถํ ์ปดํจํ ํ์๊ฐ ์์ด์ผ ๋น๋๊ธฐ ๋ชจ๋ธ์ ์ด์ ์ด ์ ๋๋ก ๋ฐํ๋ฉ๋๋ค. ์ฆ, ๋น๋๊ธฐ ๋ชจ๋ธ์ด ๋์์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด ๋ด๋ถ ๋ฆฌ์์ค๊ฐ ์ด๋ฅผ ๋ท๋ฐ์นจํด์ผ๊ฒ ์ฃ .
๊ทธ๋ฌ๋, ๋๊ท๋ชจ ์์ ์ ์ฒ๋ฆฌํ ๋ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋์ , API ํธ์ถ์ ํตํด ์ธ๋ถ ๋ฆฌ์์ค์ ์ปดํจํ ๋ถ๋ด์ ๋ถ์ฐ์ํค๋ ๋ฐฉ๋ฒ์ ๋ง์ด ์ฌ์ฉํ์ฃ . Node.js๋ ๋น๋๊ธฐ API ํธ์ถ์ ํตํด ์ 3์ ์๋ฒ(์: ํด๋ผ์ฐ๋ ์๋น์ค, ์ธ๋ถ API)์ ์์ ์ ์์ํ๊ณ , ์ค์ ๋ฆฌ์์ค ์๋น๋ ์ธ๋ถ์์ ์ด๋ฃจ์ด์ง๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด, Node.js ์๋ฒ๋ ๋คํธ์ํฌ ๋์ญํญ๊ณผ API ์๋ต ๋๊ธฐ ์๊ฐ๋ง ๊ด๋ฆฌํ๋ฉด ๋๊ณ , ์ง์ ์ ์ธ ์ปดํจํ ํ์๋ ์ธ๋ถ์์ ์ ๊ณต๋ฐ๋ ๊ตฌ์กฐ๊ฐ ๋ฉ๋๋ค.
Node.js์ ๋น๋๊ธฐ ๋ชจ๋ธ ๋๋ถ์ ์ด๋ฌํ API ํธ์ถ์ ๋ ผ๋ธ๋กํน์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, ์ฌ๋ฌ ์์ ์ ๋์์ ๋์ ธ๋๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์๋ค์ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๋ฐฉ์์ ๋ด๋ถ ์ปดํจํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์์ ๋์์ฑ๊ณผ ์ฑ๋ฅ์ ์ ์งํ๋ ํ๋ฅญํ ์ ๋ต์ด ๋ ์ ์์ต๋๋ค.
3. libuv์ ์ญํ ๊ณผ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ
Node.js์ ๋น๋๊ธฐ ์ฑ๋ฅ์ libuv ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ถ์ ๊ฐ๋ฅํด์ก์ต๋๋ค. libuv๋ ์ด๋ฒคํธ ๋ฃจํ์ ๋น๋๊ธฐ I/O ์์ ์ ๊ด๋ฆฌํ์ฌ, Node.js๊ฐ ๋จ์ผ ์ค๋ ๋๋ก ๋์ํ๋ฉด์๋ ๋์ ์ฑ๋ฅ์ ๋ฐํํ ์ ์๊ฒ ํฉ๋๋ค. Node.js๋ ์ ํต์ ์ธ ๋ฉํฐ์ค๋ ๋ ๋ฐฉ์ ๋์ , ๋จ์ผ ์ค๋ ๋ ๊ธฐ๋ฐ์์ ํ์ผ ์์คํ ์์ , ๋คํธ์ํฌ ์์ฒญ, ํ์ด๋จธ ๋ฑ ๋ค์ํ I/O ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ง์ ์ ์ธ ์ฐ๋ ๋ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ํผํ๊ณ , ๊ฐํธํ๊ฒ ๋น๋๊ธฐ ํจ์, ์ฝ๋ฐฑ, Promise, async/await ํจํด์ ํ์ฉํ ์ ์์ต๋๋ค.
libuv๋ ๋ ผ๋ธ๋กํน ๋ฐฉ์์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ๋ฉฐ, ์ผ๋ถ ๋ธ๋กํน ์์ ์ ๊ฒฝ์ฐ ๋ด๋ถ ์ฐ๋ ๋ ํ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ต์ํํ๊ณ , I/O ์์ ์ด ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ํจ์จ์ฑ์ ๋ฐํํฉ๋๋ค. ํนํ, ๋ด๋ถ์ ์ผ๋ก ์ฐ๋ ๋ ํ์ ํตํด ๋ธ๋กํน ์์ ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ ๋ฉํฐ์ค๋ ๋ ๊ด๋ฆฌ์ ๋ถ๋ด ์์ด ๋น๋๊ธฐ ์์ ์ ์ง๊ด์ ์ผ๋ก ๋ค๋ฃฐ ์ ์์ผ๋ฉฐ, ์ฑ๋ฅ๊ณผ ์์ฐ์ฑ์ ๋์์ ํ๋ณดํ ์ ์์ต๋๋ค.
4. libuv์ ์ค๋ ๋ ํ
๊ธฐ๋ณธ์ ์ผ๋ก Libuv์ ์ค๋ ๋ ํ์ 4๊ฐ์ ์ค๋ ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ์์คํ ์์ I/O ์์ ์ด ๊ทธ๋ค์ง ๋ง์ ์ค๋ ๋๋ฅผ ์๊ตฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ CPU ์ง์ฝ์ ์ธ ์์ ์ ์์ฃผ ์ํํ๊ฑฐ๋, I/O ์์ ์ด ๋ง์ ๊ฒฝ์ฐ์๋ ์ค๋ ๋ ํ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
์์คํ ์ฑ๋ฅ์ ๋ฐ๋ผ ๋ ๋ง์ ๋ณ๋ ฌ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋๋ก UV_THREADPOOL_SIZE๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ ๋ ํ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
UV_THREADPOOL_SIZE=8 node app.js
5. ๋น๋๊ธฐ I/O ์์ ๊ณผ ์ค๋ ๋ ํ์ ๊ด๊ณ
Node.js๋ ๋น๋๊ธฐ I/O ์์ ์ ์ฒ๋ฆฌํ ๋ libuv์ ์ค๋ ๋ ํ์ ํ์ฉํฉ๋๋ค. ๋ค๋ง, ๋ชจ๋ ๋น๋๊ธฐ ์์ ์ด ์ค๋ ๋ ํ์์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด, ๋คํธ์ํฌ ์์ฒญ๊ณผ ๊ฐ์ ์์ ์ ์ปค๋์ ๋น๋๊ธฐ I/O ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ค๋ ๋ ํ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ฐ๋ฉด์, ํ์ผ ์์คํ ์์ ์ฒ๋ผ ๋ธ๋กํน I/O ์์ ์ libuv์ ์ค๋ ๋ ํ์ ํตํด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ ๋ฉ์ธ ์ค๋ ๋๋ ๋ธ๋กํน ์์ด ๋ค๋ฅธ ์์ ์ ๊ณ์ ์ฒ๋ฆฌํ ์ ์์ด ๋์์ฑ์ ๋์ด๊ณ ์์ ํ์ฉ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด๋ CPU ์์์ ๋ง์ด ์ฌ์ฉํ์ง ์๋ I/O ์์ ์์๋ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
๊ทธ๋ฌ๋ CPU ์ง์ฝ์ ์ธ ์์ (์: ๋ณต์กํ ๊ณ์ฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ)์ด ๋ฐ์ํ ๊ฒฝ์ฐ, Node.js์ ๋จ์ผ ์ค๋ ๋ ๋ชจ๋ธ์์๋ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋๋ Worker Threads๋ฅผ ์ฌ์ฉํ์ฌ CPU ์์ ์ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด CPU ์ฌ์ฉ์ด ๋ง์ ์์ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด์, Node.js์ ์ฑ๋ฅ์ ๊ทน๋ํํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ ์ด์ CPU ๋ฐ์ด๋ ์์ ์ ๋ง์ด ์ฒ๋ฆฌํด์ผ ํ๋ ์๋ฒ๋ผ๋ฉด, ๋ค๋ฅธ ์ธ์ด(์: C++, Go, Rust)๋ก ์์ฑํ๋ ๊ฒ์ด ๋ ์ ํฉํ ์ ์์ต๋๋ค.
6. ์ค๋ ๋ ํ์ ๋๋ ธ์ ๋ ์ด์ ์ด ์๋ ์์ ์ ๊ตฌ๋ถ
1. ์ 3์ API ํธ์ถ ์์ (์: ํด๋ผ์ฐ๋ API ํธ์ถ)
- ์ค๋ ๋ ํ ์ํฅ ์์: ์ด๋ฌํ ์์ ๋ค์ ์ฃผ๋ก ๋คํธ์ํฌ I/O๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ปค๋์ ๋น๋๊ธฐ I/O ๊ธฐ๋ฅ์ ํตํด ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ libuv์ ์ค๋ ๋ ํ๊ณผ ๋ฌด๊ดํฉ๋๋ค. ๋คํธ์ํฌ ์์ฒญ์ ๋ ผ๋ธ๋กํน์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ํฉ์์๋ ์ค๋ ๋ ํ์ ๋๋ฆฐ๋ค๊ณ ํด์ ํฐ ์ด์ ์ ์ป์ ์๋ ์์ต๋๋ค.
- ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ค์ผ์ผ ์์์ด ์ฑ๋ฅ ํฅ์์ ๋ ํจ๊ณผ์ ์ ๋๋ค. ์ฌ๋ฌ ์ธ์คํด์ค๋ก ๋คํธ์ํฌ ์์ฒญ์ ๋ถ์ฐ ์ฒ๋ฆฌํ์ฌ ๋ถํ๋ฅผ ์ค์ด๊ณ , ๋๊ท๋ชจ ํธ๋ํฝ์์๋ ์์ ์ ์ธ ์ฑ๋ฅ์ ์ ์งํ ์ ์์ต๋๋ค.
2. CPU ์ง์ฝ์ ์ธ ์์ (์: ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๋ณต์กํ ๊ณ์ฐ)
- ์ค๋ ๋ ํ ์ํฅ ์์: ์ด์ ๊ฐ์ CPU ์ง์ฝ์ ์ธ ์์ ์ libuv์ ์ค๋ ๋ ํ์์ ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉฐ, ์ด๋ฌํ ์์ ์ Worker Threads๋ฅผ ํตํด ๋ฉํฐ์ค๋ ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํด์ผ ์ฑ๋ฅ์ ๊ทน๋ํํ ์ ์์ต๋๋ค. ์ค๋ ๋ ํ์ ๋๋ ค๋ CPU ์์ ์ ๋ํ ์ฑ๋ฅ ํฅ์์ ์์ต๋๋ค.
3. ๋ด๋ถ I/O ์์ (์: ํ์ผ ์์คํ , DNS ์กฐํ ๋ฑ)
- ์ค๋ ๋ ํ ์ํฅ ์์: ํ์ผ ์์คํ ์ ๊ทผ์ด๋ ๋ธ๋กํน I/O ์์ ์ libuv์ ์ค๋ ๋ ํ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ค๋ ๋ ํ์ ๋๋ฆฌ๋ฉด ์ด๋ฌํ ์์ ๋ค์ ๋ ๋ง์ด ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์์ด, ํ์ผ ์ ์ถ๋ ฅ์ด๋ DNS ์กฐํ ์์ ์ ๋ง์ด ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฑ๋ฅ ํฅ์์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์, ์ค๋ ๋ ํ์ ๋๋ฆฌ๋ ๊ฒ์ ๋ธ๋กํน I/O ์์ ์ ๋ ๋น ๋ฅด๊ฒ ๋ณ๋ ฌ ์ฒ๋ฆฌํ ๋ ์ ์ฉํ๋ฉฐ, ๋คํธ์ํฌ I/O์ ๊ฐ์ ์์ ์ด๋ CPU ๋ฐ์ด๋ ์์ ์์๋ ์ค๋ ๋ ํ์ ๋๋ ค๋ ์ฑ๋ฅ์์ ํฐ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
Node.js๋ ๋จ์ผ ์ค๋ ๋ ๋ชจ๋ธ์์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ชจ๋ธ์ ํตํด ๋๋ผ์ด ๋์์ฑ๊ณผ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ libuv์ ์ด๋ฒคํธ ๋ฃจํ์ ์ค๋ ๋ ํ ๋๋ถ์ด๋ฉฐ, ํ์ผ ์์คํ ๊ณผ ๊ฐ์ ๋ธ๋กํน I/O ์์ ์์ ํฐ ํจ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์์ ์ด ์ค๋ ๋ ํ์ ์์กดํ์ง ์์ผ๋ฉฐ, ๋คํธ์ํฌ I/O๋ CPU ์ง์ฝ์ ์ธ ์์ ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ์ค๋ ๋ ํ์ ํฌ๊ธฐ ์กฐ์ ๋ฟ๋ง ์๋๋ผ Worker Threads๋ ์ค์ผ์ผ ์์ ์ ๋ต์ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ์ต๋๋ค.