Node.js
Node.js๊ฐ ์์
์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
๋ฐํ์ ํ๊ฒฝ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ์ ์ฒ๋ฆฌํ๋ ์์ ์ V8 ์์ง์ ํตํด์ ํ๊ฒ๋จ
ํ์ง๋ง ํ์ผ์ ์ฝ๋ ๊ฒ(*DB ์ ๊ทผ ๋ฑ)์ V8 ์์ง์ผ๋ก๋ ๋ถ๊ฐ๋ฅ
์ด๋ฌํ ๋ถ๋ถ์
libuv๋ฅผ ํตํด์ ์์ ํ๊ฒ๋จNode.js๋ V8 ์์ง๊ณผ libuv๋ฅผ ์ฐ๊ฒฐ(๋ฐ์ธ๋ฉ)
V8์ด ์ฝ๋๋ฅผ ๋ณผ ๋ ํ์ผ ์์คํ ๊ฐ์ ๊ธฐ๋ฅ์ด ํ์ํ๋ค๋ฉด Node.js API๋ฅผ ํธ์ถํจ
API๋ JS๋ก ์์ฑ๋๊ฒ๋ ์์ง๋ง low level ์์๋ C++, C ์ธ์ด๋ก ๋์ด์์
๊ทธ๋์ JS๊ฐ C๋ C++๋ฅผ ํธ์ถํ ์ ์๊ฒ
Node.js binding์ ์ฌ์ฉ
libuv๋ ๋น๋๊ธฐ input/output task๋ฅผ ์ฒ๋ฆฌ (C๋ก ์์ฑ๋จ)
์ฆ, V8์ด ์ฝ๋๋ฅผ ํด์ํ๊ณ Node.js APIs ์ค ํ๋์ ํจ์๋ฅผ ํธ์ถํ๊ณ Node.js ๋ฐ์ธ๋ฉ์ ํตํด์ libuv์ ์ํด ์ํ๋ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ํจ
libuv (์ ๋์ฝ ๋ฒจ๋ก์๋ ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
์ด๋ฒคํธ ๋ฃจํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋น๋๊ธฐ I/O๋ฅผ ์ง์ํ๋ ๋ฉํฐ ํ๋ซํผ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ฃผ๋ก node.js์์ ์ฌ์ฉ๋๋๋ก ๊ฐ๋ฐ๋์์ง๋ง ๋ค๋ฅธ ๋๊ตฌ์์๋ ์ฌ์ฉ๋จ
๊ฐ ํ๋ซํผ(๋งฅ, ์๋์ฐ)์ ๊ฐ์ฅ ๋น ๋ฅธ ๋น๋๊ธฐ I/O ์ธํฐํ์ด์ค๋ก ํต์ผ๋ ์ฝ๋๋ก ๋๋ฆด ์ ์๋ ์ฅ์ ์์
ํ์ผ์์คํ , DNS, ๋คํธ์ํฌ, ํ์ดํ, ์ ํธ ์ฒ๋ฆฌ, ํด๋ง ๋ฐ ์คํธ๋ฆฌ๋ฐ์ ์ฒ๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ ์ ๊ณต
unix(๋ฆฌ๋ ์ค or ๋งฅ)๊ณผ window์์ ํ์ผ์ ์ปจํธ๋กคํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฅด์ง๋ง libuv์์ ์๋ก ํธํ๋๊ฒ ํด์ฃผ๋ฏ๋ก ๋ ธ๋์์๋ ์ด ๋ถ๋ถ์ ์ ๊ฒฝ์ฐ์ง ์๊ณ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ๋จ
Last updated