๋ค์ด๊ฐ๊ธฐ์ ์์
Javascript ๋ ์ฑ๊ธ ์ค๋ ๋์ด๋ค.
Node.js ๊ณต๋ถ๋ฅผ ์์ํ ์ง 3์ผ ์ฐจ์ด๋ค. ์์ ๊ณต๋ถํ ๋น๋๊ธฐ ๋ ผ ๋ธ๋กํน I/O ๋ชจ๋ธ๊ณผ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ ์ ํตํด Node.js ๊ฐ ์ด๋ค ์์คํ ์ ๊ฐ์ง๊ณ ์๋ํ๋์ง ๊ฐ์ ์ก์ ์ ์์๋ค. ํ์ง๋ง ์์ง ๋ถ์กฑํ ๋ถ๋ถ์ด ์๋๋ฐ, ์์ ๋ ๋ถ๋ถ์ ๊ณต๋ถํ๋ฉด์ Javascript ๋ ์ฑ๊ธ ์ค๋ ๋๋ผ๋ ๋ง์ด ๊ต์ฅํ ๋ง์ด ๋์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฑ๊ธ ์ค๋ ๋๋ ๋ญ๊ณ , ๋ ๊น์ด ๋ค์ด๊ฐ์ ์ค๋ ๋์ ์ ์๋ ๋ฌด์์ผ๊น?
์ค๋์ ๊ทธ ์ค๋ ๋์ ๋ํด์ ๊ณต๋ถํ๋ ์๊ฐ์ ๊ฐ์ง๋ ค๊ณ ํ๋ค.
์ค๋ ๋?
์์ฆ ์ธํฐ๋ท ๋ฐ์ผ๋ก ๋ ๋๋ ์ฌ์ง ํ ์ฅ์ด ์๋ค.
์์ ์ฌ์ง์์ ๋ ธ์๋ผ๋ ์๊ฐ ์ข ๋ง์ง๋ ์๊ฒ ์ง๋ง ์ค๋ ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ํ๋ก์ธ์ค๋ผ๋ ๊ฒ์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค.
ํ๋ก์ธ์ค?
- ํ๋ก์ธ์ค๋ผ๋ ๊ฒ์ ์ด์์ฒด์ ์์ ํ ๋นํ๋ ์์
์ ๋จ์๋ค.
๋น์ ๋ฅผ ํ์๋ฉด ๋ด๊ฐ ๊ณ ์ฉํด์ ์ผ์ ์ํจ ์๋ฐ์์ด๋ผ๊ณ ์๊ฐํด๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ๋ค.
์ด๋ฌํ ํ๋ก์ธ์ค์ ์์ญ์ ์ํ๋ ๊ฒ์ ๋ ธ๋๋ ์น ๋ธ๋ผ์ฐ์ ๋ฑ์ด ์๋๋ฐ ์ด๋ค์ ๊ฐ๋ณ์ ์ธ ํ๋ก์ธ์ค์ด๋ฉฐ ์ด๋ค ํ๋ก์ธ์ค ๊ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ์ง ์๋๋ค.
์ค๋ ๋?
- ์ฆ, ์ค๋ ๋๋ ์๋ฐ์(ํ๋ก์ธ์ค)์ด ๋ช ๊ฐ์ ์(์ค๋ ๋)์ ๊ฐ์ง๊ณ ์๋์ง๋ฅผ ๋งํ๋ค.
ํ๋ก์ธ์ค๋ ์ค๋ ๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํด ์ฌ๋ฌ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ฉฐ,
์ด๋ฌํ ์ค๋ ๋๋ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๋ค.
์ฌ๊ธฐ์ Node.js๋ ์ฑ๊ธ ์ค๋ ๋์ด๋ฉฐ, ์ด๋ฌํ ์ด์ ๋๋ฌธ์ ์์์ ์๋๋ก ์์๋๋ก ์์ ์ ์ํํ๋ค.
์๋ฐํ ๋งํ๋ฉด Node.js ๋ ์ฑ๊ธ ์ค๋ ๋๋ ์๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ค์ ์์ฑํ๋๋ฐ, ์ฐ๋ฆฌ๊ฐ ์ง์ ์ปจํธ๋กคํ ์ ์๋ ์ค๋ ๋์ ๊ฐ์๊ฐ ํ๋๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ๊ธ ์ค๋ ๋๋ผ๊ณ ํํํ๋ค.(๋ผ๊ณ ํ๋๋ผ..)
๊ทธ๋ ๋ค๋ฉด Node.js๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ , ๋น๋๊ธฐ ๋ ผ ๋ธ๋กํน I/O ๋ชจ๋ธ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋๋ฐ ์ฑ๊ธ ์ค๋ ๋์ด๋ฉด์ ์ด๋ป๊ฒ ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง ์์ ์ ํ ์ ์๋ ๊ฑธ๊น?
์ฝ๊ฒ ์ดํดํ์๋ฉด Node.js ํผ์์๋ง ์ผ์ ํ๋ค๋ฉด ์ฑ๊ธ ์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ํ ์์ ์์ ์ฌ๋ฌ ๊ฐ์ง ์ผ์ ์ฒ๋ฆฌํ ์ ์์์ ๊ฒ์ด๋ค.
ํ์ง๋ง ์์ ๊ณต๋ถํ Web API(Ajax, ๋ธ๋ผ์ฐ์ - ๋ฐฑ๊ทธ๋ผ์ด๋์ ํ์คํฌ ํ)์ ํจ๊ป ์ผํ๋ค๋ฉด ์ด์ผ๊ธฐ๋ ์กฐ๊ธ ๋ฌ๋ผ์ง ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋จํธ์ ์ผ๋ก ์ค๋ ๋์ ์ด์ผ๊ธฐํ๋ฉด ์ค๋ ๋๋ ๋ฌด์กฐ๊ฑด ๋ง์ ๊ฒ ์ข์ ๊ฑฐ ์๋์ผ?๋ผ๊ณ ์๊ฐํ๊ธฐ ์ฝ๋ค.
ํ์ง๋ง ๊ณผ์ ๋ถ๊ธ์ด๋ผ๋ ๋ง์ฒ๋ผ ๋ง๋ค๊ณ ๋ฌด์กฐ๊ฑด ์ข๊ฑฐ๋ ์ ๋ค๊ณ ์ข์ง ์์ ๊ฒ ์๋๋ค.
์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ๋ ๋ฟ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฑ๊ธ ์ค๋ ๋์ผ ๋์ ๋ฉํฐ ์ค๋ ๋์ผ ๋์ ์ฅ๋จ์ ์ ๋น๊ต ๋ถ์ํด๋ณด์!
์ฑ๊ธ, ๋ฉํฐ ์ค๋ ๋?
๊ทธ๋์ ์ด์ฉ๊ณ ์ ์ฉ๊ณ ์ธ๋ฐ?
์์ ๋ด์ฉ์ ์ฐ๊ฒฐํ์ฌ ์ค๋ ๋๊ฐ ํ ๋ช ์ ์๋ฐ์์ด๋ผ๊ณ ์๊ฐํ์.
์์ 1
๋ผ๋ฉ์ง์ ํ ์ด๋ธ์ด ์ด 3 ํ ์ด๋ธ์ด ์๊ณ , ์๋ฐ์(์ค๋ ๋)์ด ํ ํ ์ด๋ธ์ ๋ํ ์ฃผ๋ฌธ์ ์์ ํ ์ฒ๋ฆฌํด์ผ ๋ค์ ์๋์ ์ฃผ๋ฌธ์ ๋ฐ๊ณ ์ฒ๋ฆฌํ ์ ์๋ค.
์ด๋ฌํ ์์๊ฐ ๋ฐ๋ก ์ฑ๊ธ ์ค๋ ๋, ๋ธ๋กํน ๋ชจ๋ธ์ด๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ผ๋ฉด ์ฒซ ๋ฒ์งธ ์๋๋ง ์์ ๊ฒฝ์ฐ๋ ๊ด์ฐฎ์๋ฐ(์์ ์ด ๋จ ํ๋์ผ ๊ฒฝ์ฐ) ์ฒซ ๋ฒ์งธ ์๋ ์ดํ์ ์๋์ด ๊ณ์ ๋ค์ด์จ๋ค๋ฉด?
ํ์คํ ๋นํจ์จ ์ ์ด๋ผ๊ณ ํ ์ ์๋ค. ์๋ํ๋ฉด ๋ ๋ฒ์งธ ์๋์ ์ฒซ ๋ฒ์งธ ์๋์ ๋ํ ์ผ์ ์๋ฐ์์ด ๋ชจ๋ ์ฒ๋ฆฌํ ๋๊น์ง ๋ง๋ฅ ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋นํจ์จ์ ์ด๋ผ๊ณ ๋งํ ์ ์๋ค.
์์ 2
๊ทธ๋ ๋ค๋ฉด ์ด๋ฒ์๋ ์๋ฐ์์ด ์ฒซ ๋ฒ์งธ ์๋์ ์๋ฆฌ๊ฐ ๋์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฃผ๋ฌธ๋ง ์ฃผ๋ฐฉ์ผ๋ก ๋๊ธด ๋ค ๋ค์ ์๋์ ์ฃผ๋ฌธ์ ๋ฐ์ผ๋ฉด ์ด๋จ๊น? ๊ทธ๋ฌ๋ฉด ์ ์ ์ ์ํฉ๋ณด๋ค ํ์คํ ํจ์จ์ ์ด๋ค.
(๋ฌผ๋ก ์๋ฆฌ์ ํน์ฑ์ ๋ฐ๋ผ ๋์ค๋ ์์๋ ๋ฌ๋ผ์ง ์ ์๋ค. -> ๋ธ๋กํน์ธ์ง ๋
ผ๋ธ๋กํน์ธ์ง์ ๋ฐ๋ผ์)
์ด๋ฌํ ๋ฐฉ์์ด Node.js ์์ ์ถ๊ตฌํ๋ ์ฑ๊ธ ์ค๋ ๋, ๋ ผ ๋ธ๋กํน ๋ชจ๋ธ์ด๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์๋ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค. ์๋ฐ์์ด ์ํ์ ๋ชป ๋์ค๊ฑฐ๋ ์๋ฆฌ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด ๋ง์ด๋ค.
์์ 3
์ด๋ฒ ์์์์ ์๋ฐ์์ ์๋ฅผ ํ ์ด๋ธ ๊ฐ์๋งํผ ๋๋ฆฐ๋ค๋ฉด ์ด๋จ๊น?
๊ธฐ์กด์ ์๋ฐ์ ํ ๋ช ์ด ํ๋ ์ผ์ ๋๋จธ์ง ์๋ฐ์๋ค์๊ฒ ๋ถ๋ฐฐํ ์ ์์ผ๋ ์๋น์ ๋ ๋นจ๋ฆฌ ์ํํ ์ ์๋ค.
์ด๋ฌํ ๋ฐฉ์์ด ๋ฉํฐ ์ค๋ ๋, ๋ธ๋กํน ๋ชจ๋ธ์ด๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์๋ ๋ง๋ฅ ์ข์ง๋ ๋ชปํ ์ด์ ๋ ๋ผ๋ฉ์ง์ด ์๋ผ์ ๊ฐ๊ฒ๋ฅผ ํ์ฅํ๋ฉด์ ํ ์ด๋ธ ๊ฐ์๋ฅผ 3๊ฐ์์ 10๊ฐ, 100๊ฐ๋ก ๋๋ฆฌ๊ฒ ๋๋ค๋ฉด ์๋ฐ์๋ ํ ์ด๋ธ ๊ฐ์๋งํผ ๋๋ ค์ผ ํ๋ ๊ฒ์ด๋ค. 100๊ฐ์ ํ ์ด๋ธ์ ์๋์ด ์๋ค๋ฉด 100๋ช ์ ์๋ฐ์๋ค์ด ์ฌ์ง ์๊ณ ์ ์ ํ ์ผํ ์ ์์ง๋ง 100๊ฐ์ ํ ์ด๋ธ ์ค 1๊ฐ์ ํ ์ด๋ธ์๋ง ์๋์ด ์๋ค๋ฉด 1๋ช ์ ์๋ฐ์๋ง ์ผํ๊ณ ๋๋จธ์ง 99๋ช ์ ์๋ฐ์๋ค์ ์๋ฌด๊ฒ๋ ํ์ง ์๊ณ ๋๊ณ ์๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ์์์ฒ๋ผ ๋ฉํฐ ์ค๋ ๋, ๋ธ๋กํน ๋ชจ๋ธ์ ๋จ์ ์ ์ ์ ์์ ์์ ์ ์ํํ ๋ ๋ถํ์ํ ์์์ ๋ญ๋นํ ์ ์๋ค๋ ์ ์ด ์๋ค.
๋ง์ง๋ง ์์๋ฅผ ํตํด
๊ทธ๋ ๋ค๋ฉด ์ฌ๋ ค ๋ช ์ ์ ์์ด ๋ ผ ๋ธ๋กํน์ผ๋ก ์ผํ๋ฉด ํจ์จ์ ์ด์ง ์์๊น?
ํ๋ ์๋ฌธ์ด ์๊ธธ ์ ์๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ๋ฉํฐ ์ค๋ ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๊ฒ์ ์๋นํ ์ด๋ ต๋ค๊ณ ํ๋ค.
์ด๋ฌํ ์ด์ ๋๋ฌธ์ Node.js ๋ I/O ์์ฒญ์ ๋ํด์ ๋ฉํฐ ์ค๋ ํธ ๋ฐฉ์์ด ์๋ ๋ฉํฐ ํ๋ก์ธ์ค ๋ฐฉ์์ ๋์ ์ฌ์ฉํ๋ค.
์ฆ, ์ด๋ฒคํธ ๋ฃจํ๊ฐ ์ฑ๊ธ ์ค๋ ๋์์ ๋์ํ๋ค๋ ์๋ฏธ์ด๋ฉฐ ๋ด๋ถ์ ์ผ๋ก๋ ์ค๋ ๋ ํ์ ๋์ด I/O ์์ ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋กํ๋ค.(๋ณ๋ ฌ์ ์์ ์งํ)
ํ๋ก์ธ์ค, ์ค๋ ๋์ ๋ํ ๊ฐ๋ตํ ๊ณต๋ถ๋ฅผ ๋ง์น๋ฉฐ
ํ์คํ ๋น์ ๊ณต์๋ผ์ ๊ทธ๋ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ญ์ง ์ค๋ ๋๊ฐ ๋ญ์ง ๋์ถฉ ๊ฐ์ ์ค๋๋ฐ ๋ด๊ฐ ์ค๋ช ํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ด ๋ง์๋ค.
ํนํ๋ ์ ์ ์ ๊ณต๋ถํ ๋น๋๊ธฐ ๋ ผ ๋ธ๋กํน I/O ๋ชจ๋ธ์ ๊ณต๋ถํ ๋ ๋ง์ด ๋๊ผ๋ค.
ํ์ง๋ง ํด๋น ๋ถ๋ถ์ ๊ณต๋ถํ๋ ์ํด๊ธฐ๋ ํ๋๋ผ๊ณ ๋ด๊ฐ ์ง์ ์ค๋ช ํ ์ ์์ ๊ฒ๋ง ๊ฐ๋ค.
๊ทธ๋๋ ์์ง ๋ช ํํ์ง ์์ ๋ถ๋ถ์ด ๋ง๋ค. ๋ ๋ง์ด ๊ฒ์ํ๊ณ ๊ณต๋ถํด์ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค์ด์ผ๊ฒ ๋ค..!
'Programming > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Javascript ์ดํดํ๊ธฐ - Prototype / Class (0) | 2020.10.05 |
---|---|
Node.js ์ดํดํ๊ธฐ - ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ (0) | 2020.09.26 |
Node.js ์ดํดํ๊ธฐ - ๋น๋๊ธฐ ๋ ผ ๋ธ๋กํน I/O ๋ชจ๋ธ์ ๋ํด (0) | 2020.09.26 |