๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ(modelโviewโcontroller, MVC)๋ ์ํํธ์จ์ด ๊ณตํ์์ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธ ํจํด์ด๋ค. ์ด ํจํด์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก๋ถํฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ์์๋ ๊ทธ ์ด๋ฉด์์ ์คํ๋๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ก ์ํฅ ์์ด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค. MVC์์ ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ณด(๋ฐ์ดํฐ)๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ทฐ๋ ํ ์คํธ, ์ฒดํฌ๋ฐ์ค ํญ๋ชฉ ๋ฑ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ๋ํ๋ด๊ณ , ์ปจํธ๋กค๋ฌ๋ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง ์ฌ์ด์ ์ํธ๋์์ ๊ด๋ฆฌํ๋ค.
- ์ํค๋ฐฑ๊ณผ
- M(Model/ ๋ชจ๋ธ)
์๋น์ค์ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ธ์์ ์ ์๋ฉ๋๋ค.
์ค๋ก์ง Model ๋ ์ด์ด์ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค schema๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด CRUD ๋ก์ง์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.- V(View/ ๋ทฐ)
ํด๋ผ์ด์ธํธ์ ์ํธ์์ฉ์ด ์ผ์ด๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ญํ ์ ํ๋ ๊ฒ ์ ๋๋ค.- C(Controller / ์ปจํธ๋กค๋ฌ)
์ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํด์ ์๋ตํ๋ ๋ถ๋ถ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
Controller๋ Model๊ณผ ์ํตํ๊ฒ ๋ฉ๋๋ค.
- ๊ฐ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ค๋ฅ์ ๋ฐ๊ฒฌ, ์ฝ๋ ์์ ์ ํ๊ธฐ ์ข๊ฒ ํด์ค๋ค
- ๋์์ ์ธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค( ๊ฐ ์ญํ์ด ๋๋์ด์ ธ ์์ด, ๋์ ๋ค๋ฐ์ ์ธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.)
- ์ ์ง๋ณด์ ๋น์ฉ์ ์ ๊ฐํ ์ ์๋ค
- ํ ์คํธ-์ฃผ๋๊ฐ๋ฐ (๊ฐ๊ฐ์ ๋ ์ด์ด, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ ์ด์ด ์์ ์ํ ๊ฐ๊ฐ์ ๋ชจ๋์ ํ ์คํธ ํ๊ธฐ ์ข๋ค.)
- ๋ค์ํ ๋ชจ๋๋ค๋ก ๊ตฌ์ฑ๋๊ธฐ ๋๋ฌธ์ ๋ณต์ก๋๊ฐ ๋์์ง๋ค
- ์ค๊ณ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ์๋ จ๋ ๊ฐ๋ฐ์๊ฐ ํ์ํ๋ค
- ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ปค์ง๊ณ ๊ธฐ๋ฅ ๋ฐ ํ๋ฉด, ๋ฐ์ดํฐ ๋ฑ์ด ๋ค์ํด์ง๋ฉด MVC ํจํด์ Controller๋ฅผ ์ค์ฌ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ Model๊ณผ View๊ฐ ํ์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด๋ด ๊ฒฝ์ฐ Controller์ ๋ค์์ Model๊ณผ View๊ฐ ์ฐ๊ฒฐ๋์ด๋ฒ๋ฆฌ๊ณ , ๋ฑ๋ฑํ Controller, Massice ViewContoller ๊ผด์ด ๋ง๋ค์ด์ ธ๋ฒ๋ฆฝ๋๋ค.
- ์ด๋ด ๊ฒฝ์ฐ MVC ํจํด ์ฝ๋ ์์ฒด๊ฐ ๋๋ฌด ๋ณต์กํด์ง๊ณ ์ปค์ ธ๋ฒ๋ ค์, ์ ๊ธฐ๋ฅ(ํน์ ๋ฐ์ดํฐ) ๋ฑ์ ์ถ๊ฐํ ๋๋ง๋ค ์๋ฌ๊ฐ ๋ฐ์๋ ์๋ ์์ผ๋ฉฐ ๊ฐ๋ ์ฑ์ด๋ ํจ์จ์ฑ๋ ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค. ์ฒ์์๋ ๋จ์ํ๋ controller๊ฐ ์ ์ ๋ง์ ๊ฒ๋ค์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด์ ๊ผฌ์ฌ๋ฒ๋ฆฌ๋ ํํ๊ฐ ๋๋ ๊ฒ์ ๋๋ค.
- ์ฆ, ๋ทฐ์ ๋ชจ๋ธ์ด ์์กด์ฑ์ ๋๊ฒ ๋์ด ๋ถ๋ฆฌํ ์๋ ์๊ณ , ์ฌ๋ฌ side-effect๋ฅผ ๋ถ๋ฌ์ ์์์น ๋ชปํ ์๋ฌ ๋ฑ์ด ๋ฐ์๋ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์ MVP, MVVM, Flux, Redux ๋ฑ๋ฑ์ ๊ฐ์ ๋ค๋ฅธ ํจํด ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์กด์ฌํฉ๋๋ค.