๋ ธ๋๋ ์ ๋ฐ์ ์ผ๋ก ์๋ฒ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋์ง๋ง, Javascript ๋ฐํ์์ผ๋ก์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ฐ์๋ ์ฌ์ฉ๋ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์๋ฒ์ ๋ฐํ์์ ์ฐจ์ด์ ์ ๋ฌด์์ผ๊น?
ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์์ ์ ๋ ฅ ํ, ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ด๋ ค๋ฐ๊ธฐ, ์ฆ ์๋ต์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , ์ ์ฅํ๊ณ , ์ ์กํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด ์ฆ ์๋ฒ์ด๋ค.
ํน์ ์ธ์ด๋ก ๋ง๋ ํ๋ก๊ทธ๋จ๋ค์ ์คํํ ์ ์๋ ํ๊ฒฝ์ ๋ปํ๋ค.
์ฆ, ๋ ธ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ๊ธฐ๋ผ๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค.
์ด๋ฒคํธ (ํด๋ฆญ, ๋คํธ์ํฌ ์์ฒญ ๋ฑ) ๋ฐ์ ์, ๋ฏธ๋ฆฌ ์ง์ ํด ๋ ์์ ์ ์ํํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ ์ ๋ฑ๋กํด ๋๊ณ , ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ๋ฆฌ์ค๋์ ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ด๋ค.
โ ์ด๋ฒคํธ ๋ฃจํ
์ฌ๋ฌ ์ด๋ฒคํธ๊ฐ ๋์์ ๋ฐ์ํ์ ๋, ์ด๋ค ์์๋ก ํจ์๋ฅผ ํธ์ถํ ์ง ํ๋จํ๋ ์ญํ
FILO ์์๋ก ์คํ์ด ๋๋ฉฐ, ๋ ธ๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์์ ์ ๋ฐ๋ณตํ๊ธฐ์ ๋ฃจํ(Loop)๋ผ๊ณ ๋ ๋ถ๋ฆ
I/O == Input, Output, ์ ๋ ฅ/์ถ๋ ฅ์ ์๋ฏธํ๋ฉฐ, ํ์ผ ์์คํ ์ ๊ทผ (ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ํด๋ ๋ง๋ค๊ธฐ ๋ฑ) ๋๋ ๋คํธ์ํฌ๋ฅผ ํตํ ์์ฒญ ๋ฑ์ด I/O์ ์ผ์ข ์ด ๋ ์ ์๋ค.
๋ ผ๋ธ๋กํน I/O ๋ชจ๋ธ์ ์ด์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํ์ง ์๊ณ , ๋ฐ๋ก ๋ค์ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
โ ๋ธ๋กํน ๋ชจ๋ธ
์ด์ ์์ ์ด ๋๋์ผ์ง๋ง ๋ค์ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํจ
๋ ผ๋ธ๋กํน์ ๋ธ๋กํน์ ๋นํด ์์ ์๊ฐ๋ ๋จ์ถ๋๋ฉฐ, ์ด์ ๋ฐ๋ผ ์ฑ๋ฅ๋ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์๋ค.
I/O ์์ ์ด ์๋๋ผ๋, ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ์ฒ๋ฆฌํ ๋ ์คํ ์์๋ฅผ ๋ฐ๊ฟ์ค์ผ๋ก์จ ์์ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
๋๋ถ์ด, ๋ ผ๋ธ๋กํน๊ณผ ๋์๋ ๋ค๋ฅธ ์๋ฏธ์ด๋ค.
โ ๋์์ฑ
๋์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์์ ์ ๋ ผ ๋ธ๋กํน ์ฒ๋ฆฌํด์ผ ์ป์ ์ ์๋ ๊ฒ
์ค๋ ๋๊ฐ ํ๋๋ฟ์ด๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ๋์์ ์คํ๋ ์ ์๋ ์ด์ ์ด๊ธฐ๋ ํ๋ค.
โ ํ๋ก์ธ์ค VS ์ค๋ ๋
ํ๋ก์ธ์ค : ์ด์์ฒด์ ์์ ํ ๋นํ๋ ์์ ์ ๋จ์๋ก, ํ๋ก์ธ์ค ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์์์ ๊ณต์ ํ์ง ์์
์ค๋ ๋ : ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์๋ก, ์ฌ๋ฌ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ๊ฐ์ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํด, ๋ฐ์ดํฐ๋ฅผ ์๋ก ๊ณต์ ํ ์ ์์
๋ ธ๋๊ฐ ์ค์ ๋ก ์ฑ๊ธ ์ค๋ ๋์ธ ๊ฒ์ ์๋์ง๋ง, ์ฐ๋ฆฌ๊ฐ ์ง์ ์ ์ดํ ์ ์๋ ์ค๋ ๋๋ ํ๋๋ฟ์ด๊ธฐ์ ์ฑ๊ธ ์ค๋ ๋๋ผ๊ณ ์ฌ๊ฒจ์ง๋ค.
์ฑ๊ธ ์ค๋ ๋๋ ์ ์ ํ๋๊ฐ ํผ์์ ๋ง์ ์ผ์ ์ฒ๋ฆฌํ ์ ์์ผ๋, CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์์ ๋๋ ์ ์์ด ์ํ๊ฒ ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
๋ฉํฐ ์ค๋ ๋์ ๋นํด ๋นํจ์จ์ ์ด๋ผ๊ณ ๋๊ปด์ง ์ ์์ผ๋, ์ค์ ๋ก ๋ฉํฐ ์ค๋ ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ๊ฒ์ ์ด๋ ค์ฐ๋ฏ๋ก ๋ฉํฐ ํ๋ก์ธ์ฑ ๋ฐฉ์์ ๋์ ์ฌ์ฉํ๋ค.
โ ๋ฉํฐ ์ค๋ ๋ฉ VS ๋ฉํฐ ํ๋ก์ธ์ฑ
๋ฉํฐ ์ค๋ ๋ฉ | ๋ฉํฐ ํ๋ก์ธ์ฑ |
ํ๋์ ํ๋ก์ธ์ค ์ ์ฌ๋ฌ ์ค๋ ๋ ์ฌ์ฉ | ์ฌ๋ฌ ํ๋ก์ธ์ค ์ฌ์ฉ |
CPU ์์ ์ด ๋ง์ ๋ ์ฌ์ฉ | I/O ์์ฒญ์ด ๋ง์ ๋ ์ฌ์ฉ |
ํ๋ก๊ทธ๋๋ฐ์ด ์ด๋ ค์ | ํ๋ก๊ทธ๋๋ฐ์ด ๋น๊ต์ ์ฌ์ |
์๋ฒ์๋ I/O ์์ฒญ์ด ๋ง์ด ๋ฐ์ํ๊ธฐ์, I/O ์์ ์ ๋ ผ๋ธ๋กํน ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ ธ๋๋ฅผ ์ฌ์ฉํ์ ๋ ์ฅ์ ์ด ๋๋ฌ๋๋ค.
๊ทธ๋ฌ๋ CPU ๋ถํ๊ฐ ํฐ ์์ ์ผ๋ก๋ ์ ํฉํ์ง ์๊ธฐ์, ๊ฐ์๋ ๋ง์ง๋ง ํฌ๊ธฐ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ ์ ํฉํ๋ค.
์ค์๊ฐ ์ฑํ , ์ฃผ์ ์ฐจํธ, JSON ๋ฐ์ดํฐ ์ ๊ณต API ์๋ฒ ๋ฑ์์ ๋ ธ๋๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
๋ ธ๋๋ ์น ์๋ฒ๋ฅผ ๋ด์ฅํ๊ณ ์์ด, WAS๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ์ง ์์๋ ๋๋ค๋ ์ฅ์ ์ด ์์ผ๋ฉฐ, ์๋ฐ์ผํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋๋ก ๋ชจ๋ ์น ์ฌ์ดํธ๋ฅผ ์ ์ํ ์ ์๋ค.
์์ ์ด์ผ๊ธฐํ ๊ฒ์ฒ๋ผ, ๋ ธ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์์ด๊ธฐ์ ์๋ฒ ์ธ๋ก๋ ์ฌ์ฉํ ์ ์๋ค.
์น ํ๋ ์์ํฌ์ธ ์ต๊ทค๋ฌ, ๋ฆฌ์กํธ, ๋ทฐ ๋ฑ์ด ๋ ธ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ๋ ๋ํ์ ์ธ ์์๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ,
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ ๋๊ตฌ์ธ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ, ๋ฐ์คํฌํฑ ๊ฐ๋ฐ ๋๊ตฌ์ธ ์ผ๋ ํธ๋ก ๋ ๋ ธ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์๊ฐ๊ณ ์๋ค.
๋ ธ๋ ๊ณต์ ์ฌ์ดํธ : https://nodejs.org/ko/
Node.js
Node.jsยฎ is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
๋ ธ๋ ๊ณต์ ๊ฐ์ด๋ : https://nodejs.org/ko/docs/guides/
๊ฐ์ด๋ | Node.js
Node.jsยฎ is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
[Node.js] 5์ฅ ํจํค์ง ๋งค๋์ (0) | 2022.10.13 |
---|---|
[Node.js] 4์ฅ http ๋ชจ๋๋ก ์๋ฒ ๋ง๋ค๊ธฐ (0) | 2022.10.06 |
[Node.js] 3์ฅ ๋ ธ๋ ๊ธฐ๋ฅ (0) | 2022.09.29 |
[Node.js] 3์ฅ ๋ ธ๋ ๊ธฐ๋ฅ (0) | 2022.09.22 |
[Node.js] 2์ฅ ์์๋์ด์ผ ํ ์๋ฐ์คํฌ๋ฆฝํธ (0) | 2022.09.19 |