โ Layered Pattern์ด ๐1> ๋ฌด์์ด๊ณ ์ ํ์ํ์ง์ 2> server.js ํ์ผ์ ์๋ ์ฝ๋๋ฅผ ๐Layered Pattern์ ๊ธฐ์ค์ ๋ง๊ฒ ๋ถ๋ฆฌํ๋ ๋ฐฉ์์ ๋ํด์ ๋ฐฐ์๋ณด์
-WHY & WHNE USEโโ
๋ชจ๋ํ
๊ฐ ๋ฑ์ฅํ๊ฒ๋ ์ด์ ๋?
- ์ ์ฝ๋๋ ๋ฌด์์ผ๊น?
- ์ ๋์ 2. ๊ฐ๋ ์ฑ์ด ์ข์ ๋๊ตฌ๋ ์ดํดํ ์ ์๊ณ 3. ์ ์ง๋ณด์์ฑ์ด ๋ฐ์ด๋ ์ฝ๋๋ฅผ ์ข์ ์ฝ๋๋ผํ ์ ์๋ค.
- ์ด์ ์ธ๋์ ์ข์ ์ฝ๋์ ๊ธฐ์ค์ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ก์๋จน์ง์๋ ์ฝ๋๋ค์ด ์ข์ ์ฝ๋์๋ค
- ๊ทธ๋ฌ๋ ํ ์ธ๋์ ์ปดํจํฐ๊ฐ ์ ๋ ดํด์ง๋ฉด์ ์ธ๊ถ๋น๊ฐ ๋ ๋น์ธ์ง๊ณ ๊ฐ๋ฐ์๋ค์ด ์งง์ ์๊ฐ ์์ ๋ง์ ์ผ์ ํ ์ ์๋ ๊ฒ์ด ์ค์ํด์ก๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ค์ด ํ์ ์ ํ๋๋ฐ ์์ด์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ดํดํ ์ ์๋ ์ฝ๋๊ฐ ์ข์ ์ฝ๋์ ๊ธฐ์ค์ด ๋ ๊ฒ์ด๋ค.
- ๋๋ถ๋ถ์ ์๋ฃ๊ตฌ์กฐ๋ค์ด ์ด๋ฌํ ์ด์ ๋ก ๋ฑ์ฅํ๊ฒ ๋์๋ค.
-WHAT ISโโ
MVC ํจํด
์ด๋Model, Veiw, Controller
์ ์ค์๋ง๋ก server.js ํ์ผ์ ์ญํ ์ ๋ฐ๋ผ์ ์ปดํฌ๋ํธ๋ก ๋๋ ๋๋๊ฒ์ ์๋ฏธํ๋ค.
Veiw
๋ ํ๋ฉด์ ๊ตฌ์ฑํ๋ฉฐ ํ๋ก ํธ์๋์ ์๋ ์ฝ๋๋ค์ ๋ชจ์๋์ ๊ฒ์ด๊ณ
CONTROLLER์ MODEL์ ๊ฒฝ์ฐ๋ ๋ฐฑ์๋๋ก ๊ตฌ๋ถ๋๋ค.- Database๋ ๋ชจ๋ธ์ ๋จ์(๋ชจ๋ธ ๋ ์ด์ด)๋ก์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฑด๋๋ฆฌ๋ ์ฝ๋๋ค๋ง ๋ชจ์๋์ ๊ฒ์
Model
์ด๋ผ๊ณ ํ๋ค.Controller
๋ Veiw์ Model ์ฌ์ด๋ฅผ ์๋ ์ญํ ์ ํ๋ฉฐ Veiw์ ๋จ์์ ์์ฒญ์ด ์ค๋ฉด ๊ทธ ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ Database์ ์์ฒญ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ ธ์์ ์ ๋ฌํด์ค๋ค.- ์ฆ,
Controller
๋ ์ ์ ๋ก๋ถํฐ HTTP ์์ฒญ์ด ์์ ๋ ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ ์๋ตํด์ฃผ๋ ๋ถ๋ถ์ผ๋กVeiw์
์Model
๊ณผ ์ํตํ๋ค
๋ง์ฝ ๊ฐ๋ฐ์ค์ Database์ ๊ด๋ จ๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด?
=> ๋น์ฐํ
Model
ํด๋๋ก ๊ฐ์ ํ์ธ ํด์ผํ๋ค.
- ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ก seperation of concerns, 1> ์ผ๋ ค์ ๋ถ๋ฆฌ, ์ฆ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ถ๋ถ๋ง ๋น ๋ฅด๊ฒ ์ฐพ์์ 2> ์์ ์ด ์ฉ์ดํ ์ ์๊ณ ์ญํ ์ด ๋๋ ์ ธ์์ด 3>๋์์ ์ธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ณ ๊ฐ๊ฐ์ ๋ ์ด์ด์ ๋ ์ด์ด์ ์ํ ๋ชจ๋๋ค๋ค์ด ๋๋ ์ ธ์์ด ๊ฐ๊ฐ์ ๋ชจ๋๋ค์ ํ ์คํธํด๋ณด๋ฉฐ 4> ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
node.js project Layering pattern์ ์์๋๋ก ๋งํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1> ๊ฐ์ฅ ์๋ ๋จ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ํ์ผ์ธ ๋ชจ๋ธ์ด ์กด์ฌํ๊ณ
2> ๊ทธ ๋ค์ ์๋น์ค ํด๋ 3> ์ปจํธ๋กค๋ฌ ํด๋
4> ๋ง์ง๋ง์ ๋ผ์ฐํฐ ํด๋๋ก url์ด ์์ ๋ ๊ฐ์์ ๋ฌ๋๋ก ๋ถ๋ฆฌ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
์ค์ํ ๊ฑด ๊ฐ๊ฐ์ ๋ ์ด์ด๋ ์ค๋ก์ง ๋ฐ๋ก ์๋์ ์๋ ๋ ์ด์ด์๋ง ์์กดํ๋ค๋ ๊ฒ์ด๋ค.
- ๋ผ์ฐํฐ ํด๋์ ์๋ ํจ์๋ค์ ์ปจํธ๋กค๋ฌ ํด๋์ ์๋ ํจ์๋ค๋ง ํธ์ถ ํ ์ ์๊ณ ์ปจํธ๋กค๋ฌ์ ์๋ ํจ์๋ค์ ์๋น์ค ํด๋์ ์๋ ํจ์๋ค๋ง ํธ์ถ, ์๋น์ค์ ์๋ ํจ์๋ ๋ชจ๋ธ์ ์๋ ํจ์๋ค๋ง ํธ์ถํ์ฌ ์ ๊ทผํ ์๊ฐ ์๋ค.
- ์ฆ, ํ ๋ฐฉํฅ์ผ๋ก๋ง ํธ์ถํ๊ณ ์ ๊ทผํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
- getProducts()๋ผ๋ ํจ์๊ฐ ์๋ค๋ฉด ์ด ํจ์๋ 1>์ปจํธ๋กค๋ฌ, 2>์๋น์ค, 3>๋ค์ค(๋ชจ๋ธ)์์ 1> ์ปจํธ๋กค๋ฌ์์๋ ์ ์ ์๋น์ค๋ฅผ ํธ์ถํ๊ณ 2> ์๋น์์๋ ์ ์ ๋ค์ค๋ฅผ ํธ์ถํ์ฌ 3> ๋ค์ค์์๋ ํ๋ฆฌ์ฆ๋ง์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๊ฒฐ๊ณผ๋ก ๋ด์ ๋ฆฌํดํด์ค๋ค.
- ํ๋ฆฌ์ฆ๋ง๋ฅผ ์ฐ๊ฒฐํ๋ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ์ด ์๋ ์ฝ๋๋ก์ ๋ชจ๋ธ ๋จ์์ ๊ด๋ฆฌํ๋ค.
- ๋ฐ๋ก ํ๋ฆฌ์ฆ๋ง์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ๋ณด๋จ ํ๋ฆฌ์ฆ๋ง์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ server.js์ importํ์ฌ ๋ถ๋ฌ์ค๊ณ 1> ์ปจํธ๋กค๋ฌ 2> ์๋น์ค 3> ๋ค์ค๋ก ๊ณ์ธต์ ์ผ๋ก ๋๋ ๋ณด๋๊ฒ ์ข๋ค.
=> ์ด๋ ๊ฒ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ฑ ์ผ์ข ์ ์๋ช ํ๋ณต์(?)์ผ๋ก ์งํ๋๋ ๊ฑธ ์ ์ ์๋ค.
- 4> model์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ฝ๋๋ค์ด ๋ค์ด์์ด ํ๋ฆฌ์ฆ๋ง๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ์ฝ๋๋ค, ์ฆ ํจ์๊ฐ ๋ชจ์ฌ์๋ค.
Ex> select * from users์ฒ๋ผ DB๋ฅผ ๊ฑด๋๋ฆฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ด ๋ชจ์ฌ์๋ค.- 1> routes๋ view์ ์ฐ๊ฒฐํด์ฃผ๊ณ ํ๋ก ํธ์์ ์์ฒญ์ ๋ณด๋ด๋ฉด url์ ๋ถ์ํ์ฌ ์ฐ๊ฒฐํ์ฌ ํต์ ํด ์ฃผ๋ ์ฝ๋๋ค, ํจ์๋ฅผ ๋ชจ์๋์ ๊ฒ์ด๊ณ
Ex> url์ ๊ฒฝ๋ก๋ฅผ ๋ถ๊ธฐ์์ผ์ฃผ๊ณ ๋ถ๊ธฐ๋ ๊ฒฝ๋ก๋ง๋ค ์คํํ๋ ํจ์๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ ์ ๋ถ์ด๋ค.
- 3> controller๋ ์์ฒญ์ ์ด์ด์ ๋ถ์ํ์ฌ (get์ธ์ง post์ธ์ง ๋ฑ ํน์ header์ body์๋ ๋ฌด์์ด ๋ค์ด์๋์ง ๋ฑ์ ๋ํด์) ์์ฒญ ์์ฒด์ ๋ํ ํ๋ณ์ ์งํํ๋ค.
- ์ดํ ์์ฒญ์ ๋ง๋ค์ด ์ด ๋ช ๋ น์ service์๊ฒ ์ ๋ฌํ๊ณ service๋ก๋ถํฐ ๋ณด๊ณ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์๋ต์ผ๋ก์ view๋จ์ผ๋ก ๋ณด๋ด์ค์ผ๋ก์ ์ธ๋ถ, ํ๋ก ํธ์ ํต์ ํ๋ ์ญํ ์ ๋งก๋๋ค
- ์ฆ, controller๋ ์์ฒญ์ ๋ฐ๊ณ ์ผ๋ จ์ ์ ์ฐจ๋ฅผ ๊ฑฐ์ฒ์ ์๋ต์ ๋ฐํํด๋ฉด์ ์ธ๋ถ์์ ์ํต์ ๋ด๋นํ๋ค.
EX> ์งํ๋ - ๋ทํ๋ฆญ์ค๋ฅผ ๊ฒฐ์ ํ ๊ณ ๊ฐ
๋ - ๋ทํ๋ฆญ์ค ๊ฒฐ์ ๋ฅผ ์ํ ๊ณ ๊ฐ
- ๋์ ์งํ๋์ด ๋์์ ๋ทํ๋ฆญ์ค ์์์ ๋ณด๊ธฐ์ํด์
1> ์์ฒญ์ ๋ณด๋ด๋ฉด, ๋ทํ๋ฆญ์ค ์์ ์ฌ์ํ๋ ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋์ด
2> ๋ผ์ฐํฐ๋ฅผ ํตํด video/videoname๋ก ๋์ด๊ฐ๊ฒ ๋๊ณ
3-1> ์ปจํ๋กค๋ฌ๋ ์์ฒญ์ ๋ฐ์์ ์ฌ์ฉ์๋ค์ด ํ ํฐ์ด ์๋์ง๋ฅผ ํ์ธํ๊ณ (=์ธ์ฆ)
3-2> ์ดํ ์ปจํธ๋กค๋ฌ๊ฐ ์๋น์ค์๊ฒ ์งํ๋์ ํ ํฐ์ 1๋ฒ ํ ํฐ(์ ๋ฃํ์), ๋์ ํ ํฐ์ 2๋ฒ ํ ํฐ(๋ฌด๋ฃํ์)์ด๋ผ๋ ๋ช ๋ น์ ์ ๋ฌํ๋ค.
4> ์๋น์ค๋ ๋ฌด๋ฃ ํ์์ธ ๋์๊ฒ๋ ์์์ ์ ๋ฌํ์ง ์๊ณ ๋ค๋ฅธ ์๋ฌ๋ฅผ ๋์ด์ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌํด์ฃผ๊ณ ์ ํจ ํ์์ธ ์งํ๋์๊ฒ ํด๋น ์์์ ๊บผ๋ด๋ฌ๋ผ๋ ์์ฒญ์ ๋ชจ๋ธ์๊ฒ ์ ๋ฌํด ๋ชจ๋ธ๋ก๋ถํฐ ๋ฐ์ ์์์ ์ ๋ฌ๋ฐ์ ์ปจํธ๋กค๋ด์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ค.
=> ์ฆ, ์๋น์ค๋ ๋น์ฆ๋์ค ๋ ์ด์ด๋ก์ ์ฐ๋ฆฌ์ ์๋น์ค์ ๋น์ฆ๋์ค์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋ ๋ก์ง๋ค์ ๋ด์ ์ฝ๋๋ค์ ๋ชจ์๋์ ํด๋์ด๋ค.
=> ์๋น์ค๋ 1> ๊ถํ ํ์ธ ๋ฟ๋ง ์๋๋ผ 2> ์๋ชป๋ ์์ฒญ์ ๋ํด์๋ ์๋น์ค์ ๋ฐ๋ผ์ ์๋ชป๋ ์์ฒญ์ ๋ํ ์๋ฌ๋ฅผ ๋์ด์ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌํด์ฃผ๊ธฐ๋ํ๋ค.
์ฆ, ์๋น์ค์ ํ์ํ ์ํฉ ํ๋จ์ ๋ด๋ฆฌ๋ ์ญํ ์ํ๋ค
๊ฐ๊ฐ์ ํด๋๋ค์ ์ด๋ฆ์ฒ๋ผ ์ญํ ์ ๋งก๋ ์ด์๋ง์ ๊ด๋ฆฌํจ์ผ๋ก์
1> ๋ผ์ฐํฐ๋ ๋ผ์ฐํ ๊ณผ ๊ด๋ จ๋ ์ด์๋ง, 2> ์ปจํธ๋กค๋ฌ๋ ์์ฒญ์ ๊ด๋ จ๋ ์ด์๋ง,
3> ์๋น์ค๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ํ ํ๋ณ๋งํ๋ ํจ์๋ค๋ง, 4> ๋ชจ๋ธ์ ์ค๋ก์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง ๊ด๋ฆฌํ๋ ํจ์๋ค๋ง ๋ชจ์๋์์ผ๋ก์ ๊ฐ๊ฐ์ ๋ ์ด์ด๊ฐ ๊ฐ์์ ์ญํ ์ ์์ ํ๊ฒ ๋๋ ์ ์๊ฒ ๋๋ค.
์์ฝ๋ ์ํ๋์ ์ด๋ ต๋ค๊ณ ๊ฒ์ ์ฃผ์ ๋ ์ด์ด๋ ํจํด ์ฒซ ๋ฒ์งธ ์ธ์ ์ค :}