โ ์น ์๋ฒ์ Node.js์ ๊ด๊ณ
1. ์น ํ๊ฒฝ
1) ํด๋ผ์ด์ธํธ : ์ฌ์ฉ์๊ฐ ๋ณด๋ ์ปดํจํฐ
2) ์๋ฒ : ์น ์๋น์ค๊ฐ ํ ๋ฆฌ์์ค๊ฐ ์ ์ฅ๋์ด ์๋ ์ปดํจํฐ (๋จ์ํ๊ฒ ์ปดํจํฐ ํ๋ก๊ทธ๋จ ์ค ํ๋!)
์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ผ๊ณ www.google.com/์ ์ ๋ ฅํ๋ค๊ณ ๊ฐ์
1) ํด๋ผ์ด์ธํธ = ๋ด ์ปดํจํฐ
- ์์ฒญ : ๋ด๊ฐ ์ ๋ ฅํ url(๊ตฌ๊ธ ์น ํ์ด์ง)์ ๋์์ค!
2) ์๋ฒ = ๊ตฌ๊ธ ์ปดํจํฐ
- ์๋ต : ๊ตฌ๊ธ ์น ํ์ด์ง์ html ํ์ผ์ ๋ด ๋ธ๋ผ์ฐ์ ๋ก ์ ์ก
โก ์น ๊ฐ๋ฐ : ์์ฒญ๊ณผ ์๋ต ์์ ์ ์ฒ๋ฆฌํ๋ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๊ฒ!
2. ์น ์๋ฒ์ Node.js
์น ์๋ฒ๋?
ํด๋ผ์ด์ธํธ์์ ๋ณด๋ด๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด์ฃผ๋ ํ๋ก๊ทธ๋จ
1) ์น์๋ฒ ๋ง๋ค๊ธฐ ์ํ ๋ณดํธ์ ํ๋ ์์ํฌ
- ํ์ด์ฌ ๊ธฐ๋ฐ์ Django
: ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด ์์ด ํธ๋ฆฌํ๊ณ ๋ฐ์ดํฐ ์กฐ์์ ๋ง์ด ํ๋ ์๋น์ค(CRUD)์ ๊ฒฝ์ฐ ์ข์ ์ ํ, ํ๊ณ๊ฐ ์กด์ฌํจ.
- ์๋ฐ ๊ธฐ๋ฐ์ Spring
: ์์ ์ ์ด๊ณ ์ ํํ๋ ํจํด์ด ์์ง๋ง, ์์ ๋๊ฐ ๋ฎ์ ํน์ ํ ๊ธฐ๋ฅ์ ๋ง๋ค์ง ๋ชปํ ์ ์์.
ํ๋ ์์ํฌ : ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ฐํ์ด ๋๋ ํ ํ๋ฆฟ๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์งํฉ
CRUD : ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์์ฑ, ์กฐํ, ์์ , ์ญ์ (Create, Read, Update, Delete)
Node.js๋?
Chrome V8 JavaScript ์์ง์ผ๋ก ๋น๋๋ JavaScript ๋ฐํ์
(์น ๋ธ๋ผ์ฐ์ ๋ฐ์์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฒ ์ฝ๋๋ฅผ ์คํํด์ฃผ๋ ํ๊ฒฝ)
1) ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ Node.js
: ์์ ๋๊ฐ ๋์ ํ์ฉํ์ฌ ๋ง๋ค ์ ์๋ ์๋น์ค๊ฐ ๋ง์.
2) ๋ณดํต ์๋ฒ๋ฅผ ๋ง๋๋ ๋ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํจ (Node.js๋ง์ API๋ฅผ ์ด์ฉํ์ฌ ์น ์๋ฒ๋ฅผ ๋ง๋ค ์ ์์.)
3) Node.js๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ์๋น์ค
- ๋ด๊ฐ ๋ง๋ค ์น์ด ๋ฆฌ์ผํ์์ด๋ค.
- ๋ด๊ฐ ๋ง๋ค ์น์ ์ปค์คํฐ๋ง์ด์ง์ด ๋ง์ด ํ์ํ๋ค.
- ๋ด๊ฐ ๋ง๋ค ์น์ ์๋ฐ์คํฌ๋ฆฝํธ API๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ๋ด๊ฐ ๋ง๋ค ์น์ ๋น ๋ฅธ ์คํ๊ณผ ์ฑ๋ฅ์ด ์ค์ํ๋ค.
๋ฐํ์ : ์คํํ๊ฒฝ, ์คํ๊ธฐ
๋ฆฌ์ผํ์ : ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ค ์์ฒญ์ ์ ์ํ๊ฒ ์ฒ๋ฆฌํ์ฌ ์๋ตํด์ผ ํ๋ ๊ฒ
โ Node.js๊ฐ ๋์ํ๋ ๋ฐฉ์
1. ๋๊ธฐ์ ์ฒ๋ฆฌ์ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ
1) ๋๊ธฐ์ ์ฒ๋ฆฌ : ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ์ผ์ ํด๊ฒฐ
- ์ฅ์ : ์์ ์ ์ด๋ฏ๋ก ์ค์ผ์ค์ ๋ค๋ฃจ๊ธฐ ์ฌ์
- ๋จ์ : ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ
2) ๋น๋๊ธฐ์ ์ฒ๋ฆฌ : ํ๋ฒ์ ์ฌ๋ฌ ์ผ์ ์์ํ๊ณ ๋ณด๋ ๋ฐฉ๋ฒ
- ์ฅ์ : ํจ์ฌ ๋น ๋ฅธ ์๊ฐ ์์ ์ผ์ ๋๋ผ ์ ์์
- ๋จ์ : ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ณ , ์๋ชปํ๋ฉด ๋๊ธฐ์ ์ฒ๋ฆฌ๋ณด๋ค ๋ ์ค๋๊ฑธ๋ฆด ์๋ ์์
โก Node.js๋ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉ!
2. Node.js๊ฐ ์ฌ๋ฌ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ
์์)
์๋ง์ ์์ด ์ ์ด ๋งํธ์ ํจ๊ป ๊ฐ๋ค. ์๋ง๋ ์์ด๋ค์๊ฒ ๊ฐ๊ฐ ์ฌ๊ณผ, ๋น๊ทผ, ๋ฐฐ๋ฅผ ๊ฐ์ ธ์ค๋ผ๊ณ ์ํฌ ๊ฒ์ด๋ค.
์๋๋ฆฌ์ค 1
์์ด๋ค์๊ฒ ์์ง ์ฌ๋ถ๋ฆ์ ๋งก๊ธฐ๊ธฐ๊ฐ ๋ถ์ํ ์๋ง๋ ์นดํธ ํ ๊ฐ๋ฅผ ๊ฐ๊ณ ๋ค๊ฐ์ด ๋งํธ๋ฅผ ๋์๋ค๋๋ฉฐ,
์์ด 1์๊ฒ๋ ์ฌ๊ณผ, ์์ด 2์๊ฒ๋ ๋น๊ทผ, ์์ด 3์๊ฒ๋ ๋ฐฐ๋ฅผ ๊ฐ๊ณ ์ค๋๋ก ํ๋ค.
์๋๋ฆฌ์ค 2
์์ด๋ค์ ๋ ๋ฆฝ์ฌ์ ํค์ฐ๊ธฐ ์ํด ์๋ง๋ ์์ด๋ค์๊ฒ ๊ฐ์ ์นดํธ๋ฅผ ํ ๊ฐ์ฉ ์ฃผ๊ณ ,
๊ฐ์ ๋งก์ ๋ฌผ๊ฑด์ ๋ด๊ณ ๋ค์ ์๋ง ์นดํธ์ ๋ฃ์ผ๋ผ๊ณ ํ๋ค.
์์ด๋ค์ ๊ฐ์ ๋งก์ ๋ฌผ๊ฑด์ ๊ฐ๊ณ ์ค๋ ์์๋๋ก ์๋ง ์นดํธ์ ๋ด๋๋ค.
์๋๋ฆฌ์ค 1
- ์นดํธ๋ฅผ ํ ๊ฐ๋ง ์ฌ์ฉ
- ์์ด ํ ๋ช ์ ์ฌ๋ถ๋ฆ์ด ๋๋ ๋๊น์ง ๋ค๋ฅธ ์์ด์๊ฒ ์ฌ๋ถ๋ฆํ ๊ธฐํ๋ฅผ ์ฃผ์ง ์์
(์ ์ด๊ถ์ ๋๊ฒจ์ฃผ์ง ์๊ณ ๋๊ธฐํ๊ฒ ๋ง๋๋ ๊ฒ = '๋ธ๋กํน'๋ฐฉ์)
โก ๋ธ๋กํน ๋ฐฉ์ / ๋๊ธฐ์ ๋ฐฉ์ ์ฌ์ฉ
์๋๋ฆฌ์ค 2
- ์นดํธ๋ฅผ 3๊ฐ ์ฌ์ฉ
- ๋ค๋ฅธ ์์ด์ ๊ด๊ณ์์ด ์ฌ๋ถ๋ฆํ ๊ธฐํ๋ฅผ ๋์์ ์ค
(๋ค๋ฅธ ์์ ๊ณผ ๊ด๊ณ์์ด ์ผ์ ์ํํ๋ ๋ ผ๋ธ๋กํน ๋ฐฉ์)
โก ๋ ผ๋ธ๋กํน / ๋น๋๊ธฐ์ ๋ฐฉ์ ์ฌ์ฉ
Node.js๋?
๋ ผ๋ธ๋กํน / ๋น๋๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํจ
๋๊ธฐ์ ๋ฐฉ์์ ์ด์ฉํ๋ค๋ฉด?
- ์น ์๋ฒ์ ๊ฐ์ด ๋ง์ ์ฌ๋์ ์์ฒญ์ด ๋ค์ด์ ์ฒ๋ฆฌํด์ผ ํ๋ ์์ ์ ์ ํฉํ์ง ์์.
- ํ๋์ CPU๋ฅผ ๋๋ ์ฌ์ฉํ์ฌ ํ๋์ ์์ ์ด ๋๋๊ณ ,
์์ ์ด ์๋ฃ๋๋ค๋ ์๋ต์ด ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด ๊ทธ ์๊ฐ ๋์ ์์์ ๋ญ๋นํ๊ฒ ๋จ.
3. ์ฑ๊ธ ์ค๋ ๋์ ์ด๋ฒคํธ ๋ฃจํ
Node.js๋ ์ฑ๊ธ ์ค๋ ๋์ ์ด๋ฒคํธ ๋ฃจํ ๊ธฐ๋ฐ
1) ์ค๋ ๋ : ๊ฒฝ๋ํ๋ ํ๋ก์ธ์ค
ex) ์ธํฐ๋ท ์ํ
ํ๋ก์ธ์ค : ํ๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํ
์ค๋ ๋ : ๋ธ๋ผ์ฐ์ ๋ด์์ ์ด๋, ๊ฒ์ ๋ฑ ๋ค๋ฅธ ์์ ์ ์ํํ๋ ๊ฒ
๋ ผ๋ธ๋กํน/๋น๋๊ธฐ ๋ฐฉ์์ ์ฑํํ๋ฉด์ ์ฑ๊ธ ์ค๋ ๋๋ก ๋น ๋ฅด๊ฒ ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์?
: ์ด๋ฒคํธ ๋ฃจํ
2) ์ด๋ฒคํธ ๋ฃจํ
: ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ , ์์ ์ด ์ข ๋ฃ๋๋ฉด ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ ์ฝ๋ฐฑ ํ(์์ ํ)์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ!
(์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ , ๋ค๋ฅธ ์์ ์ ๋จผ์ ์ํํ๋ ๊ฒ)
- ์์ ์ด ์๋ฃ๋ ๊ฒ์ ์๋ ๋ฐฉ๋ฒ์?
: ์ด๋ฒคํธ ๋ฃจํ๊ฐ ๊ณ์ํด์ ๊ฐ์
- ์ด๋ฒคํธ ๋ฃจํ๋ ์ง์์ ์ผ๋ก ์ฝ ์คํ์ด ๋น์ด์๋์ง ์ฒดํฌํจ.
- ์ฝ ์คํ์ด ๋น์ด์๋ค๋ฉด?
: ์ฝ๋ฐฑ ํ์ ์์ ์ ์ฝ ์คํ์ผ๋ก ๋ฐ์ด ๋ฃ์
์ฝ๋ฐฑ ํ : ์ด๋ฒคํธ ๋ฐ์ ํ ํธ์ถ๋์ด์ผ ํ ์์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์๋ฃ๊ตฌ์กฐ (์ด๋ฒคํธ ํ)
ํด ์คํ : ํจ์์ ํธ์ถ์ ๊ธฐ๋กํ๋ ์๋ฃ๊ตฌ์กฐ, ํ์ฌ ์คํ ์ค์ธ ์์ ์ด ๋๋ฌ์ ๋ ์ด๋ ์คํ ๋ถ๋ถ์ผ๋ก ๋์๊ฐ์ง ๋ณด๊ด
โก ์ฝ ์คํ์ ๋จผ์ ์คํํ๋ ์์ ์ด ์๋ ๊ณณ / ์ฝ๋ฐฑ ํ๋ ๋์ค์ ์คํํ ์์ ์ด ์๋ ๊ณณ
4. Node.js์ ๋์ ๊ณผ์
1) '์ด๋ฒคํธ ๋ฃจํ'๊ฐ ์ด๋ค ์ด๋ฒคํธ๊ฐ ์๋์ง ๊ณ์ํด์ ๊ฐ์ โก ์ด๋ฒคํธ๊ฐ ๊ฐ์ง๋๋ฉด ๊ทธ ์์ ์ ์ํด '์์ ์ค๋ ๋'๋ฅผ ์์ฑ
2) ์ด๋ฒคํธ ๋ฃจํ๋ ์ฒ๋ฆฌ ์์ ์ ์์ ์ค๋ ๋์๊ฒ ๋งก๊ธฐ๊ณ โก ๋ค๋ฅธ ์ด๋ฒคํธ๊ฐ ์๋ ๋ค์ ๊ฐ์
('์์ ์ค๋ ๋'๋ ์ผ์ข ์ ์์ ๊ณต๊ฐ)
3) ์์ ์ค๋ ๋๊ฐ ์์ ์ ๋ฐ์ ๋, '์ฝ๋ฐฑ ํจ์'๋ผ๋ ๊ฒ์ ๋ฐ์. (์ฝ๋ฐฑ ํจ์ = ์์ ์ด ๋๋๋ฉด ์คํํ๋ ํจ์)
4) ์์ ์ค๋ ๋๋ ์์ ์ ๋ง์น๋ฉด โก ์ด ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๊ณ ์ถ๋ค๊ณ ์ต๊ณ ๊ฐ์์(์ด๋ฒคํธ ๋ฃจํ)์๊ฒ ์๋ต์ ๋ณด๋
5) ์๋ต์ ๋ฐ์ ์ด๋ฒคํธ ๋ฃจํ๋ ์ฝ๋ฐฑ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก (์ฐ๋ฆฌ๊ฐ ๋ณผ ์ ์๋ ๊ฒฐ๊ณผ)
์ ๋ฆฌ!
1. ์น ์๋ฒ : ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด์ฃผ๋ ํ๋ก๊ทธ๋จ
2. Node.js๋? ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์, Node.js๋ง์ API
3. Node.js๊ฐ ๋น ๋ฅด์ง๋ง ์ฌ์ฉ์ด ์ด๋ ค์ด ์ด์ ๋? ๋ ผ๋ธ๋กํน/๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์ ๋๋ฌธ
4. ๋ ผ๋ธ๋กํน/๋น๋๊ธฐ๋? ์์ ์ ํ๋ฆ์ด ์์ฐจ์ ์ด์ง ์๊ณ , ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค์ ์์ ์ ๋ฐ๋ก ์คํ
5. ์น ์๋ฒ์ ๊ฐ์ด ์๋ง์ ์์ฒญ์ด ๋ค์ด์ ์ฒ๋ฆฌํด์ผ ํ๋ ์์ ์ ๋ธ๋กํน/๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด ์์ ๋ญ๋น
6. Node.js๋ ์ฑ๊ธ ์ค๋ ๋๊ฐ ์์ง๋ง ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์ด์ ๋? ์ด๋ฒคํธ ๋ฃจํ
7. ์ด๋ฒคํธ ๋ฃจํ๋ ์ด๋ค ์ด๋ฒคํธ๊ฐ ์๋์ง ๊ฐ์! -> ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๋ฉด ์์ ์ค๋ ๋๋ฅผ ์์ฑํ์ฌ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๋งก๊น