MVC ํŒจํ„ด vs 3- tier architecture

smleeยท2022๋…„ 7์›” 28์ผ
0

๐Ÿคฆโ€โ™€๏ธ ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ

์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ๊ณต๋ถ€๋ฅผ ํ•˜๊ฑฐ๋‚˜, ํ•™๊ต์— ๋‹ค๋‹ˆ๋ฉด์„œ ๊ฐœ๋ฐœ ํŒจํ„ด์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ๋งŽ์ด ๋“ค์—ˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ๋„ ๋งŽ์ด ๋“ค์—ˆ์—ˆ๋‹ค.

๋ผ์ด์ง•์บ ํ”„๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ๊นŠ๊ฒŒ ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋‚ด๊ฐ€ ์ด๋ก ์ ์œผ๋กœ๋งŒ ์•Œ๊ณ  ์žˆ๋˜ ์ง€์‹์„ ์ ์šฉ์‹œ์ผœ๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋”ฐ๋กœ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ•ด์™”๊ณ , ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ ์—ญ์‹œ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด์„œ ๋ณต์Šตํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ค ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋Š”์ง€ ํ—ท๊ฐˆ๋ ค ์งˆ๋ฌธ ์ฑ„๋„์— ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์› ๋˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ค ํŒจํ„ด์ธ์ง€ ์งˆ๋ฌธ์„ ์˜ฌ๋ฆฌ๊ฒŒ ๋˜์—ˆ๊ณ 

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚ด๊ฐ€ ์ž˜๋ชป ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

10๊ฐœ๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ๋‹ต๋ณ€์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ์ดํ•ด๋ฅผ ์ž˜ ๋ชปํ•ด์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ•˜์˜€๋‹ค.

๐Ÿ’’ 3 tier architecture

3 ๊ณ„์ธต ๊ตฌ์กฐ(3 tier architecture)๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ 3๊ฐœ์˜ ๋…ผ๋ฆฌ์  ๋ฐ ๋ฌผ๋ฆฌ์  ์ปดํ“จํŒ… ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” 3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜๋Š” ๊ธฐ์กด์˜ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ฃผ์š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋œปํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ 3๊ณ„์ธต ๊ตฌ์กฐ๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต๊ณผ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค, ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต, ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ณ„์ธต์ด ํฌํ•จ๋œ๋‹ค.

(1) ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต(Presentation Tier)

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ๊ณ„์ธต์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด ๊ณ„์ธต์€ GUI ๋˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ(front-end)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ๊ณ„์ธต์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ด€๊ณ„์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฃผ๋กœ HTML, Javascript, CSS, ์‚ฌ์ง„ ์ž๋ฃŒ ๋“ฑ์ด ์ด ๊ณ„์ธต์— ํ•ด๋‹นํ•œ๋‹ค.

(2) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต(Application Tier)

์ด ๊ณ„์ธต์—์„œ๋Š” ์š”์ฒญ๋˜๋Š” ์ •๋ณด๋ฅผ ์–ด๋– ํ•œ ๊ทœ์น™์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฐ€๊ณตํ•˜๋Š” ๊ฒƒ๋“ค์„ ๋‹ด๋‹นํ•œ๋‹ค. ์ฆ‰, ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Business Logic) ๊ณ„์ธต ๋˜๋Š” ํŠธ๋žœ์žญ์…˜(Transaction) ๊ณ„์ธต์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๊ณ„์ธต(ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต) ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ๊ณ„์ธต์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์€ ์„œ๋ฒ„์ฒ˜๋Ÿผ ๋™์ž‘(์ฒซ ๋ฒˆ์งธ ๊ณ„์ธต์ด๋‚˜ ํด๋ผ์ด์–ธํŠธ ๊ณ„์ธต์—์„œ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ตํ•˜๋Š” ์—ญํ• )ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๊ณ„์ธต์ด ๋ณผ ๋•Œ๋Š” ํด๋ผ์ด์–ธํŠธ์ฒ˜๋Ÿผ ํ–‰๋™(์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ ๊ณ„์ธต์— ์š”์ฒญ)ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ๊ณ„์ธต์„ ๋ฏธ๋“ค์›จ์–ด(middleware) ๊ณ„์ธต ๋˜๋Š” ๋ฐฑ์—”๋“œ(back-end) ๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์ด ๊ณ„์ธต์—์„œ๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ฝ”๋“œ๋‚˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ฃผ๋กœ PHP, Java ๋“ฑ์ด ์ด ๊ณ„์ธต์— ํ•ด๋‹นํ•œ๋‹ค.

(3) ๋ฐ์ดํ„ฐ ๊ณ„์ธต(Data Tier)

๋ฐ์ดํ„ฐ ๊ณ„์ธต์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋œ๋‹ค. ๋”ฐ๋ผ์„œ DBMS(Database Management System)์ด ์ด ๊ณ„์ธต์— ํ•ด๋‹นํ•œ๋‹ค.

์ฃผ๋กœ MySQL, MongoDB ๋“ฑ์ด ์ด ๊ณ„์ธต์— ํ•ด๋‹น๋œ๋‹ค.

โœ… 3-tier architecture์˜ ์žฅ/๋‹จ์ 

  • ์žฅ์ 
    - ๊ฐ ๊ณ„์ธต์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ์—…๋ฌด ๋ถ„๋‹ด์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์—…๋ฌด ํšจ์œจ์„ฑ ์ฆ๊ฐ€
    - ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ ๊ณ„์ธต์ด ๋™์ž‘ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    - ํ•ฉ๋ฆฌ์ ์ธ scale-up์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋‹จ์ 
    - 1๊ณ„์ธต์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋น„ํ•ด ๊ด€๋ฆฌ๊ฐ€ ๋” ํ•„์š”ํ•˜๋‹ค.
    - ๋น„์šฉ์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๐Ÿซ MVC ํŒจํ„ด

MVC ํŒจํ„ด์€ Model - View - Controller์˜ ์•ฝ์ž์ด๋‹ค. MVC ํŒจํ„ด์€ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ๋–„ ๊ทธ ๊ตฌ์„ฑ์š”์„œ๋ฅผ ์„ธ ๊ฐ€์ง€์˜ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•œ ํŒจํ„ด์ด๋‹ค.


์‚ฌ์šฉ์ž๊ฐ€ Contoller๋ฅผ ์กฐ์ž‘ํ•˜๋ฉด Controller๋Š” Model์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ View๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ์  ํ‘œํ˜„์„ ์ œ์–ดํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ์„ ํ•œ๋‹ค.

์ด MVC ํŒจํ„ด์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋ถ€ํ„ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ๊ฐ์  ์š”์†Œ๋‚˜ ๊ทธ ์ด๋ฉด์—์„œ ์‹คํ–‰๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์„œ๋กœ ์˜ํ–ฅ ์—†์ด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘œ Model

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

  • ๋ชจ๋ธ์˜ ๊ทœ์น™
  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์ง‘ํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. ๋ทฐ๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•ด์„œ ์–ด๋– ํ•œ ์ •๋ณด๋„ ์•Œ์ง€ ๋ง์•„์•ผ ํ•จ
  3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ’ป View

View๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋งˆ์ฃผํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์ฃผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ์ชฝ ๊ธฐ์ˆ ๋“ค์„ ๋ชจ์•„๋†“์€ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

  • ๋ทฐ์˜ ๊ทœ์น™
  1. ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
  2. ๋ชจ๋ธ์ด๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ชฐ๋ผ์•ผ ํ•œ๋‹ค.
  3. ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ‘ Controller

์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•œ URL์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•œ ํ›„์— ๊ทธ ์š”์ฒญ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Model์— ์˜๋ขฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ Veiw์— ๋ฐ˜์˜ํ•ด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.

  • ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ทœ์น™
  1. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผ ํ•œ๋‹ค.

MVC ํŒจํ„ด์˜ ์žฅ๋‹จ์ 

(1) MVC ํŒจํ„ด์˜ ์žฅ์ 

  1. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ UI ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹œํ–‰ ๊ฐ€๋Šฅ
  2. Model๊ณผ View๊ฐ€ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค์— ์ข…์†๋˜์ง€ ์•Š์•„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์— ์œ ๋ฆฌํ•˜๋‹ค.
  3. ์ค‘๋ณต ์ฝ”๋”ฉ์˜ ๋ฌธ์ œ์  ์ œ๊ฑฐ

(2) MVC ํŒจํ„ด์˜ ๋‹จ์ 

  1. View๋Š” Controller์— ์—ฐ๊ฒฐ๋˜์–ด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์š”์†Œ์ด๋ฏ€๋กœ ๋‹ค์ˆ˜์˜ View๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  2. Model์€ Controller๋ฅผ ํ†ตํ•ด์„œ View์™€ ์—ฐ๊ฒฐ๋˜์ง€๋งŒ, Controller์— ์˜ํ•ด ํ•˜๋‚˜์˜ View์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” Model๋„ ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฏ€๋กœ View์™€ Model์ด ์˜์กด์„ฑ์„ ๋„๊ฒŒ ๋œ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€