์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ ๊ฐœ์ธ ๊ณต๋ถ€ ๊ณผ์ •์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

๋””์ž์ธ ํŒจํ„ด: ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ ๋“ค์„ ์ •๋ฆฌํ•ด์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ์šฉํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•œ โ€œ๊ทœ์•ฝโ€์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“  ๊ฒƒ.

์ฆ‰, ์ƒํ™ฉ(๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ ๋“ค)์— ๋”ฐ๋ผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ์šฉ๋˜๋„๋ก ์ •๋ฆฌํ•œ ์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก 


MVC ํŒจํ„ด

MVC(๋ชจ๋ธ-๋ทฐ-์ปจํŠธ๋กค๋Ÿฌ)๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ ๋ฐ ๋…ผ๋ฆฌ ์ œ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด

  • ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ๊ทธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ธ ๊ฐ€์ง€์˜ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•œ ํŒจํ„ด

  • MVC์— ๊ธฐ๋ฐ˜์„ ๋‘” ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ MVVM (๋ชจ๋ธ-๋ทฐ-๋ทฐ๋ชจ๋ธ), MVP(๋ชจ๋ธ-๋ทฐ-ํ”„๋ฆฌ์  ํ„ฐ), MVW (๋ชจ๋ธ-๋ทฐ-์™“์—๋ฒ„)๊ฐ€ ์žˆ๋‹ค

๋ชจ๋ธ Model

: ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ๋ชจ๋ธ์€ ์•ฑ์ด ํฌํ•จํ•ด์•ผํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ ์ •์˜.
  • ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ทฐ์—๊ฒŒ ์•Œ๋ฆฌ๋ฉฐ
  • ์—…๋ฐ์ดํŠธ๋œ ๋ทฐ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋กœ์ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์•Œ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.
  • ์˜ˆ์‹œ) ์‡ผํ•‘ ๋ฆฌ์ŠคํŠธ ์•ฑ: ํ’ˆ๋ชฉ, ๊ฐ€๊ฒฉ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ

๋ทฐ View

: ๋ ˆ์ด์•„์›ƒ๊ณผ ํ™”๋ฉด์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ์•ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์„ ์ •์˜.

์ปจํŠธ๋กค๋Ÿฌ Controller

: ๋ช…๋ น์„ ๋ชจ๋ธ๊ณผ ๋ทฐ ๋ถ€๋ถ„์œผ๋กœ ๋ผ์šฐํŒ…ํ•œ๋‹ค.

  • ์•ฑ์˜ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•œ ์‘๋‹ต.
  • ๋ชจ๋ธ ๋ฐ/๋˜๋Š” ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋กœ์ง์„ ํฌํ•จ
  • ์˜ˆ์‹œ) ์‡ผํ•‘ ๋ฆฌ์ŠคํŠธ๋Š” ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ž…๋ ฅ ํผ๊ณผ ๋ฒ„ํŠผ
    • ์ด๋Ÿฌํ•œ ์•ก์…˜๋“ค์€ ๋ชจ๋ธ์ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ
    • ์ž…๋ ฅ์ด ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์ „์†ก๋˜๊ณ ,
    • ๋ชจ๋ธ์„ ์ ๋‹นํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค์Œ,
    • ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ทฐ๋กœ ์ „์†กํ•œ๋‹ค

์™œ MVCํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ

  • ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๊ฐ์ž์˜ ์—ญํ• ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋”ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ ๋‹ค๋ฉด,
    • ์œ ์ง€๋ณด์ˆ˜์„ฑ,
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ 
    • ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ ,
    • ์ค‘๋ณต์ฝ”๋”ฉ์ด๋ผ๋Š” ๋ฌธ์ œ์  ๋˜ํ•œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

MVCํŒจํ„ด์˜ ์˜ˆ

  • facebook์˜ react

    • react๋Š” mvc ํŒจํ„ด๋งŒ์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ flux ํŒจํ„ด๋„ ์“ด๋‹ค.(redux)
    • react๋Š” mvc ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์•„๋‹ˆ๊ณ  View๋งŒ ์‹ ๊ฒฝ์“ฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค
    • ๋‹ค๋ฅธ ์›นํ”„๋ ˆ์ž„์›Œํฌ์™€๋Š” ๋‹ฌ๋ฆฌ ajax, ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง, ๋ผ์šฐํŒ… ๊ฐ™์€ ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ์ € ๋ทฐ๋งŒ ์‹ ๊ฒฝ์“ด๋‹ค
    • ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์— ๊ด€ํ•œ DOM๊ฐ์ฒด๋งŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์ฒด๊ณ„, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์ฒ˜๋Ÿผ ๋ชจ๋ธ ๋ณ€๊ฒฝ โž” ๋ทฐ๋ณ€๊ฒฝ์ด ์•„๋‹ˆ๋ผ ํŠน์ •ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ด์œผ๋กœ์จ DOM๊ฐ์ฒด๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค
  • python์˜ django
  • ๊ตฌ๊ธ€์˜ AngularJS
  • php์˜ ์ฝ”๋“œ์ด๊ทธ๋‚˜์ดํ„ฐ

โœจ tl;dr

โœ”๏ธ MVC ํŒจํ„ด์ด๋ž€?

  • ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ, ๊ทธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ธ ๊ฐ€์ง€์˜ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•œ ํŒจํ„ด