1. ๊ฒ์ํ ๊ฐ์
๊ฒ์ํ์ ์น ํ์ด์ง์์ ์ฌ์ฉ์๋ค์ด ๊ธ์ ์์ฑํ๊ณ ๊ณต์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ๋ค์ํ ์ฃผ์ ์ ์นดํ ๊ณ ๋ฆฌ์ ๋ฐ๋ผ ์ฌ์ฉ์๋ค์ ๊ธ์ ์์ฑํ๊ณ , ๋๊ธ์ ๋ฌ๊ฑฐ๋ ์ข์์๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒ์ํ์ ์ปค๋ฎค๋ํฐ์ ํ์ฑ๊ณผ ์ ๋ณด ๊ณต์ ๋ฅผ ์ํ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๊ฒ์ํ์ ๊ฐ๋ฐํ ๋, MVC (Model-View-Controller) ํจํด์ ํจ๊ณผ์ ์ธ ๊ตฌ์กฐํ๋ฅผ ์ํ ๋์์ธ ํจํด ์ค ํ๋์ ๋๋ค. MVC ํจํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ ๊ฐ์ง ์ฃผ์ ๋ถ๋ถ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ์ด ํจํด์ ํ์ฉํ์ฌ ๊ฒ์ํ์ ์์ฑ, ์กฐํ, ์์ , ์ญ์ , ๊ฒ์, ์ ๋ ฌ ๊ธฐ๋ฅ ๋ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ด ๊ธ์์๋ MVC ํจํด์ ์ฌ์ฉํ์ฌ ์ฃผ์ ๋ก ์ ์ ํ ๊ฒ์ํ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค. MVC ํจํด์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋๋ฉฐ, ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ค์์ผ๋ก๋ MVC ํจํด์ ๋ํด ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
2. MVC ํจํด ์๊ฐ
MVC ํจํด์ ์ํํธ์จ์ด ๋์์ธ ํจํด์ผ๋ก, ๋ชจ๋ธ(Model), ๋ทฐ(View), ์ปจํธ๋กค๋ฌ(Controller)๋ผ๋ ์ธ ๊ฐ์ง ์ฃผ์ ์์๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ชจ๋ธ(Model): ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ๋ด๋นํ๋ ๋ถ๋ถ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ ์์คํ , ์ธ๋ถ API์์ ์ํธ์์ฉ๊ณผ ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฆ ๋ฑ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค.
๋ทฐ(View): ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ HTML, CSS, JavaScript ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ชจ๋ธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํ์ํ๊ฑฐ๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ์ ์์ต๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ํธ์์ฉ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์ ๋๋ค. ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ์ฒ๋ฆฌํ๊ณ , ํ์์ ๋ฐ๋ผ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํ, ์์ฑ, ์์ , ์ญ์ ํ ์ ์์ต๋๋ค. ๋ํ, ๋ชจ๋ธ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ๋ทฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ด๋นํฉ๋๋ค.
MVC ํจํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ ๋ถ๋ถ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ ์ง๋ณด์ํ ์ ์๋ ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋์์ง๋ฉฐ, ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ๋์์ ์์ ํ ๋๋ ํจ์จ์ ์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค. ๋ํ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋๋ค.
MVC ํจํด์ ๋ค์ํ ์น ํ๋ ์์ํฌ์ ๊ฐ๋ฐ ์ธ์ด์์ ์ง์๋๊ณ ์์ผ๋ฉฐ, ๊ฒ์ํ๊ณผ ๊ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํ์๋ ๋ง์ด ํ์ฉ๋ฉ๋๋ค. ๋ค์์ผ๋ก๋ ๊ฒ์๋ฌผ ์์ฑ ๋ฐ ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
3. ๊ฒ์๋ฌผ ์์ฑ ๋ฐ ์กฐํ ๊ธฐ๋ฅ ๊ตฌํ
๊ฒ์๋ฌผ ์์ฑ๊ณผ ์กฐํ๋ ๊ฒ์ํ ๊ธฐ๋ฅ ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. MVC ํจํด์ ํ์ฉํ์ฌ ๊ฒ์๋ฌผ ์์ฑ๊ณผ ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
3.1. ๊ฒ์๋ฌผ ์์ฑ ๊ธฐ๋ฅ
๊ฒ์๋ฌผ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ๊ธ์ ์์ฑํ๊ณ ๊ฒ์ํ์ ๋ฑ๋กํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ค์์ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ์ค๋ช ํฉ๋๋ค.
๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์๋ฌผ์ ์ ์ฅํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๋ก์ง์ ๊ตฌํํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๊ฒ์๋ฌผ์ ์กฐํ ๊ธฐ๋ฅ์์ ํ์ฉ๋ฉ๋๋ค.
๋ทฐ(View): ๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ๊ฒ์๋ฌผ ์์ฑ ํ๋ฉด์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค. HTML ํผ์ ์์ฑํ์ฌ ์ฌ์ฉ์๋ก๋ถํฐ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์๋๋ก ํฉ๋๋ค. ํ์ํ ํ๋์ ์ ์ถ ๋ฒํผ ๋ฑ ํ์ํ ์์๋ฅผ ํฌํจ์์ผ์ผ ํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๊ณ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ทฐ์์ ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ถํ๋ฉด ์ปจํธ๋กค๋ฌ๊ฐ ์ด๋ฅผ ๋ฐ์์ ๋ชจ๋ธ์ ์ ์ฅํฉ๋๋ค. ํด๋น ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ํฌํจํ๋ฏ๋ก, ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค.
3.2. ๊ฒ์๋ฌผ ์กฐํ ๊ธฐ๋ฅ
๊ฒ์๋ฌผ ์กฐํ ๊ธฐ๋ฅ์ ์์ฑ๋ ๊ฒ์๋ฌผ์ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ์ฉ์๋ ๊ฒ์ํ์์ ์์ฑ๋ ๊ฒ์๋ฌผ์ ๋ชฉ๋ก์ ํ์ธํ๊ณ , ์ํ๋ ๊ฒ์๋ฌผ์ ์ ํํ์ฌ ์์ธ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์กฐํํ์ฌ ๋ฐํํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์กฐํํ๋ ๋ก์ง์ ๊ตฌํํ๊ณ , ํด๋น ์ ๋ณด๋ฅผ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌํฉ๋๋ค.
๋ทฐ(View): ๋ทฐ๋ ๊ฒ์๋ฌผ ๋ชฉ๋ก๊ณผ ์์ธ ๋ด์ฉ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๊ฒ์๋ฌผ์ ๋ชฉ๋ก์ ํ ์ด๋ธ๋ก ํ์ํ๊ณ , ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์ ํํ๋ฉด ํด๋น ๊ฒ์๋ฌผ์ ์์ธ ๋ด์ฉ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ์ํด HTML๊ณผ CSS๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์๋ฌผ ๋ชฉ๋ก๊ณผ ์์ธ ๋ด์ฉ์ ๊ตฌ์ฑํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ ๋ชจ๋ธ๋ก๋ถํฐ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ , ํด๋น ์ ๋ณด๋ฅผ ๋ทฐ์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์ ํํ๋ฉด ํด๋น ๊ฒ์๋ฌผ์ ์๋ณ์๋ฅผ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌํ๊ณ , ์ปจํธ๋กค๋ฌ๋ ์ด๋ฅผ ํตํด ๋ชจ๋ธ๋ก๋ถํฐ ํด๋น ๊ฒ์๋ฌผ์ ์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค. ์กฐํ๋ ์ ๋ณด๋ ๋ทฐ์ ์ ๋ฌ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ๊ฒ์๋ฌผ ์์ฑ ๋ฐ ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. MVC ํจํด์ ํ์ฉํ๋ฉด ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋์์ง๋ฉฐ, ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์ ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์์ต๋๋ค.
4. ๊ฒ์๋ฌผ ์์ ๋ฐ ์ญ์ ๊ธฐ๋ฅ ๊ตฌํ
๊ฒ์๋ฌผ ์์ ๋ฐ ์ญ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์์ฑํ ๊ฒ์๋ฌผ์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. MVC ํจํด์ ํ์ฉํ์ฌ ๊ฒ์๋ฌผ ์์ ๋ฐ ์ญ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
4.1. ๊ฒ์๋ฌผ ์์ ๊ธฐ๋ฅ
๊ฒ์๋ฌผ ์์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์์ฑํ ๊ฒ์๋ฌผ์ ๋ด์ฉ์ ์์ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ค์์ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ์ค๋ช ํฉ๋๋ค.
๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๊ฒ์๋ฌผ์ ์ ๋ฐ์ดํธํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์์ ํ ๊ฒ์๋ฌผ์ ์ ๋ณด๋ฅผ ๋ชจ๋ธ์ ์ ๋ฌํ๊ณ , ํด๋น ๊ฒ์๋ฌผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋ทฐ(View): ๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ๊ฒ์๋ฌผ ์์ ํ๋ฉด์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ธฐ์กด์ ์์ฑ๋ ๊ฒ์๋ฌผ์ ๋ด์ฉ์ HTML ํผ์ ๋ถ๋ฌ์์ ์ฌ์ฉ์๊ฐ ์์ ํ ์ ์๋๋ก ํฉ๋๋ค. ํ์ํ ํ๋์ ์ ์ถ ๋ฒํผ ๋ฑ ํ์ํ ์์๋ฅผ ํฌํจ์์ผ์ผ ํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๊ณ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ทฐ์์ ์ฌ์ฉ์๊ฐ ์์ ํ ๊ฒ์๋ฌผ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ถํ๋ฉด ์ปจํธ๋กค๋ฌ๊ฐ ์ด๋ฅผ ๋ฐ์์ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ ๋ฐ์ดํธ๋ ๊ฒ์๋ฌผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ฉ๋๋ค.
4.2. ๊ฒ์๋ฌผ ์ญ์ ๊ธฐ๋ฅ
๊ฒ์๋ฌผ ์ญ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์์ฑํ ๊ฒ์๋ฌผ์ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ์ฉ์๋ ์์ฑํ ๊ฒ์๋ฌผ ์ค ์ํ๋ ๊ฒ์๋ฌผ์ ์ ํํ์ฌ ์ญ์ ํ ์ ์์ต๋๋ค. ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์๋ฌผ์ ์ญ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ํํ ๊ฒ์๋ฌผ์ ์๋ณ์๋ฅผ ๋ชจ๋ธ์ ์ ๋ฌํ๊ณ , ํด๋น ๊ฒ์๋ฌผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ญ์ ํฉ๋๋ค.
๋ทฐ(View): ๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ๊ฒ์๋ฌผ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ญ์ ํ ๊ฒ์๋ฌผ์ ์ ํํ ์ ์๋ ๋ชฉ๋ก์ ํ ์ด๋ธ ํํ๋ก ๋ณด์ฌ์ค๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์ ํํ๊ณ ์ญ์ ๋ฅผ ์์ฒญํ๋ฉด ์ปจํธ๋กค๋ฌ์๊ฒ ํด๋น ๊ฒ์๋ฌผ์ ์๋ณ์๋ฅผ ์ ๋ฌํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ ๋ชจ๋ธ๋ก๋ถํฐ ๊ฒ์๋ฌผ์ ์ญ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ญ์ ๋ฅผ ์์ฒญํ ๊ฒ์๋ฌผ์ ์๋ณ์๋ฅผ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌํ๊ณ , ์ปจํธ๋กค๋ฌ๋ ํด๋น ๊ฒ์๋ฌผ์ ๋ชจ๋ธ์ ์ ๋ฌํ์ฌ ์ญ์ ํฉ๋๋ค.
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ๊ฒ์๋ฌผ ์์ ๋ฐ ์ญ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋๋ฉฐ, ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์ ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์์ต๋๋ค.
5. ๊ฒ์๋ฌผ ๊ฒ์ ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ ๊ตฌํ
๊ฒ์๋ฌผ ๊ฒ์ ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ง๋ ๊ฒ์๋ฌผ์ ๊ฒ์ํ๊ณ ์ ๋ ฌํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ์ํด MVC ํจํด์ ํ์ฉํ์ฌ ๊ฒ์๋ฌผ ๊ฒ์ ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
5.1. ๊ฒ์๋ฌผ ๊ฒ์ ๊ธฐ๋ฅ
๊ฒ์๋ฌผ ๊ฒ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ํน์ ์กฐ๊ฑด์ ๋ง๋ ๊ฒ์๋ฌผ์ ๊ฒ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ค์์ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ์ค๋ช ํฉ๋๋ค.
๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ์กฐ๊ฑด์ ๋ง๋ ๊ฒ์๋ฌผ์ ๊ฒ์ํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฒ์์ด๋ ์ ํํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์์ ์ํํ๊ณ , ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํฉ๋๋ค.
๋ทฐ(View): ๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ฒ์์ด ์ ๋ ฅ ํ๋์ ๊ฒ์ ๋ฒํผ, ํ์ํ ์กฐ๊ฑด์ ์ ํํ ์ ์๋ ๋๋กญ๋ค์ด ๋ฉ๋ด ๋ฑ์ ํฌํจํ์ฌ ์ฌ์ฉ์๊ฐ ํน์ ์กฐ๊ฑด์ผ๋ก ๊ฒ์๋ฌผ์ ๊ฒ์ํ ์ ์๋๋ก ํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ๋ชจ๋ธ๋ก๋ถํฐ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ ๋ทฐ์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฒ์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ ๋ ฅ ๊ฐ์ ๊ฐ์ ธ์ ๋ชจ๋ธ์ ์ ๋ฌํ์ฌ ๊ฒ์์ ์ํํฉ๋๋ค. ๊ฒ์ ๊ฒฐ๊ณผ๋ ๋ทฐ์ ์ ๋ฌ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋๋ค.
5.2. ๊ฒ์๋ฌผ ์ ๋ ฌ ๊ธฐ๋ฅ
๊ฒ์๋ฌผ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ์ฉ์๋ ์์ฑ์ผ, ์ ๋ชฉ, ์์ฑ์ ๋ฑ์ ๊ธฐ์ค์ ๋ฐ๋ผ ๊ฒ์๋ฌผ์ ์ ๋ ฌํ ์ ์์ต๋๋ค. ๊ฐ ๋ถ๋ถ์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ธ(Model): ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์๋ฌผ์ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ํํ ์ ๋ ฌ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ ฌ์ ์ํํ๊ณ , ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํฉ๋๋ค.
๋ทฐ(View): ๋ทฐ๋ ์ฌ์ฉ์์๊ฒ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค. ์ ๋ ฌ ๊ธฐ์ค์ ์ ํํ ์ ์๋ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ ๋ผ๋์ค ๋ฒํผ ๋ฑ์ ๋ทฐ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ธฐ์ค์ ๋ฐ๋ผ ๊ฒ์๋ฌผ์ ์ ๋ ฌํ ์ ์๋๋ก ํฉ๋๋ค.
์ปจํธ๋กค๋ฌ(Controller): ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ๋ชจ๋ธ๋ก๋ถํฐ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ ๋ทฐ์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฌ ๊ธฐ์ค์ ์ ํํ๋ฉด ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์์ ์ ๋ ฅ ๊ฐ์ ๊ฐ์ ธ์ ๋ชจ๋ธ์ ์ ๋ฌํ์ฌ ์ ๋ ฌ์ ์ํํฉ๋๋ค. ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ ๋ทฐ์ ์ ๋ฌ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋๋ค.
์์ ๊ฐ์ด ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ ๊ฐ๊ฐ์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ๊ฒ์๋ฌผ ๊ฒ์ ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ํ๋ ์กฐ๊ฑด์ ๋ง๋ ๊ฒ์๋ฌผ์ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์ํ๊ณ ์ ๋ ฌํ ์ ์์ต๋๋ค.
๋๊ธ