Git์ด๋ž€?


git์€ ์ปดํ“จํ„ฐ ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž๋“ค ๊ฐ„์— ํ•ด๋‹น ํŒŒ์ผ๋“ค์˜ ์ž‘์—…์„ ์กฐ์œจํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค.

์ฃผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉฐ ์ฝ”๋“œ ๊ด€๋ฆฌ์—๋„ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์–ด๋– ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ง€์†์ ์œผ๋กœ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. (๋‚˜๋Š” ๋ณดํ†ต ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ์™€ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ถ”์ ์„ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค)

 

 

 

 

 

Git-flow๋ž€?


Git-flow๋Š” Git์ด ํ™œ์„ฑํ™”๊ฐ€ ๋  2010๋…„ ์ •๋„์— Vincent Driessen์ด๋ผ๋Š” ์‚ฌ๋žŒ์ด ๋งŒ๋“  Git์„ ์‚ฌ์šฉํ•œ ๊ฐœ๋ฐœ ์ž‘์—… ์ ˆ์ฐจ์ด๋‹ค. Git-flow๋ผ๊ณ  ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ ๊ฐ™์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹Œ ์•ฝ์†, ๊ทœ์น™๊ฐ™์€ ๊ฐœ๋…์ด๋‹ค.

Vincent Driessen๋˜ํ•œ Git-flow๋Š” ์™„๋ฒฝํ•œ ๋ฐฉ๋ฒ•๋ก ์ด ์•„๋‹Œ, ๊ฐ์ž ํŒ€์— ๋งž๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ณ€ํ˜•ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ๋‹ค.

 

 

 

 

Git-flow์˜ ๋ธŒ๋žœ์น˜


Git-flow์˜ ๋ธŒ๋žœ์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

  • master ์™€ devleop๋ธŒ๋žœ์น˜
    • master์™€ develop๋ธŒ๋žœ์น˜๊ฐ€ ์กด์žฌํ•˜๊ณ , develop๋ธŒ๋žœ์น˜๋Š” master ๋ธŒ๋žœ์น˜์—์„œ ์‹œ์ž‘๋œ ๋ธŒ๋žœ์น˜.
    Develop๋ธŒ๋žœ์น˜
    • develop๋ธŒ๋žœ์น˜์—๋Š” ์ƒ์‹œ๋กœ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ ์ปค๋ฐ‹๋“ค์ด  ์ถ”๊ฐ€๋˜๊ฒŒ ๋œ๋‹ค.
    • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š”  ๊ฒฝ์šฐ  develope ๋ธŒ๋žœ์น˜์—์„œ ์‹œ์ž‘ํ•˜๋Š” feature๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ
    Feature๋ธŒ๋žœ์น˜
    • ์ด feature๋ธŒ๋žœ์น˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, develop ๋ธŒ๋žœ์น˜๋กœ merge 
    • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š”  ๊ฒฝ์šฐ  develope ๋ธŒ๋žœ์น˜์—์„œ ์‹œ์ž‘ํ•˜๋Š” feature๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ
    release ๋ธŒ๋žœ์น˜
    • develop๋ธŒ๋žœ์น˜์— ์ด๋ฒˆ ๋ฒ„์ „์— ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์ด merge๋˜์—ˆ๋‹ค๋ฉด , QA๋ฅผ ์œ„ํ•ด develop๋ธŒ๋žœ์น˜์—์„œ release๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ
    •  QA๋ฅผ ๋ฌด์‚ฌํžˆ ํ†ต๊ณผํ•˜๊ฒŒ๋˜๋ฉด relase๋ธŒ๋žœ์น˜๋ฅผ master์™€ develop๋ธŒ๋žœ์น˜๋กœ  merge
    • QA๋ฅผ  ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋“ค์€ ๋ชจ๋‘ release๋ธŒ๋žœ์น˜์— ์ˆ˜์ •

 

 

master์™€ develop์€ ํ•ญ์ƒ ์œ ์ง€๋˜๋Š” ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋“ค์ด๋ฉฐ ๊ทธ ์™ธ์— feature, release, hotfixes๋Š” ํ•„์š”ํ•œ ๊ธฐ๊ฐ„์—๋งŒ ์œ ์ง€๋˜๋Š” ๋ณด์กฐ ๋ธŒ๋žœ์น˜๋“ค์ด๋‹ค.

 

 

๋‹ค์Œ์€ Vincent Driessen์˜ ๋ธ”๋กœ๊ทธ์—์„œ Git-flow๋ฅผ ์„ค๋ช…ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€์ด๋‹ค.

 

ํƒ€์ž„๋ผ์ธ์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ์ฒ˜์Œ์—๋Š” master๋กœ ์‹œ์ž‘ํ•ด develop๋ธŒ๋žœ์น˜๋งŒ ์กด์žฌํ•œ๋‹ค.

์•„์ง ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐฐํฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— develop๋ธŒ๋žœ์น˜์—์„œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•œ๋‹ค.

๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์ƒ๊ธฐ๋ฉด feature๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ด ์ž‘์—…์„ ํ•œ๋‹ค. 

feature๋ธŒ๋žœ์น˜๋Š” ์–ธ์ œ๋‚˜ develop๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค.

 

๊ธฐ๋Šฅ์„ ๋‹ค ๊ฐœ๋ฐœํ–ˆ๋‹ค๋ฉด ์ž‘์—…ํ•œ feature๋ธŒ๋žœ์น˜๋ฅผ ๊ฒ€ํ† ํ•œ ํ›„ develop๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•œ๋‹ค.

์ด์ œ ์ด๋ฒˆ ๋ฒ„์ „์—์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค๋ฉด QA๋ฅผ ์œ„ํ•ด release๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

QA๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐœ๊ฒฌํ•˜๋Š” ๋ฒ„๊ทธ๋“ค์€ ๋ชจ๋‘ ์ด release๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด fix๋œ๋‹ค.

 

์ด์ œ QA๊ณผ์ •์ด ๋ชจ๋‘ ๋๋‚ฌ๋‹ค๋ฉด release๋ธŒ๋žœ์น˜๋ฅผ master์™€ develop๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  master๋ธŒ๋žœ์น˜์— ๋ฒ„์ „๋ช…์‹œ๋ฅผ ์œ„ํ•œ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑ ํ›„ ๋ฐฐํฌํ•œ๋‹ค.

 

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ์˜ Git-flow์ด๋‹ค.

 

 

 

 

ํ•˜์ง€๋งŒ ๋ฐฐํฌ ํ›„์—๋„ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ธด๊ธ‰ํ•˜๊ฒŒ ์ˆ˜์ •์„ ํ•ด์•ผํ•˜๋Š”๋ฐ ๊ทธ๋Ÿด ๊ฒฝ์šฐ hofixes๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ด ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.

๋ฒ„๊ทธ ์ˆ˜์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด release๋ธŒ๋žœ์น˜๊ฐ€ ์™„๋ฃŒ๋ฌ์„ ๋•Œ์™€ ๊ฐ™์ด master์™€ develop๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ ํ›„ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ์™„๋ฃŒํ–ˆ๋‹ค๋Š” ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

 

 

 

 

๋ฒ„์ „ ํƒœ๊ทธ


๋ณดํ†ต ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ‘œ์‹œํ• ๋•Œ ๋ฒ„์ „์€ x.x.x์˜ ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ด ์ˆซ์ž๋“ค์€ ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ? ๋ฒ„์ „์˜ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” Major Version์„ ์˜๋ฏธํ•œ๋‹ค. Major Version์€ ๋ณดํ†ต 1๋กœ ์‹œ์ž‘ํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด ์ „์ฒด์ ์œผ๋กœ ํฐ ๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ์„๋•Œ ๋ฒ„์ „ ์—…์„ ํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ˆซ์ž๋Š” Minor Version์„ ์˜๋ฏธํ•œ๋‹ค. Miner Version์€ ๋ณดํ†ต 0์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ์—†๋˜ ๊ธฐ๋Šฅ์˜ ์ถ”๊ฐ€๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์˜ ์ˆ˜์ • ๋“ฑ์˜ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฒ„์ „ ์—…์„ ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ ์„ธ ๋ฒˆ์งธ ์ž๋ฆฌ๋Š” Build or Maintenance Version์ด๋ผ๊ณ  ํ•˜๋ฉฐ ์ž์ž˜ํ•œ ๋ฒ„๊ทธ๋‚˜ ๋‚ด๋ถ€์  ์ฝ”๋“œ ๋ณด์•ˆ ๋“ฑ์˜ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฒ„์ „ ์—…์„ ํ•œ๋‹ค. ์ด ๋ฒ„์ „์€ 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

 

 

 

 

 


Reference.

link1 link2

'๐Ÿ”ฅ > ๊ธฐํƒ€ ๋“ฑ๋“ฑ ๐ŸŽธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๊ฐœ๋ฐœ์ƒ์‹] MVC ํŒจํ„ด์ด๋ž€  (0) 2021.08.18
MVC

Model
View
Controller

 

 

๊ฐœ๋ฐœํ•  ๋•Œ 3๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์—ญํ• ์„ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์„ MVC ํŒจํ„ด์ด๋ผ ํ•œ๋‹ค.

 

 

 

๋ชจ๋ธ Model

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด, ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์„ ํ• ๊ฒƒ์ธ์ง€๋ฅผ ์ •์˜ํ•˜๋ฉฐ ๋‚ด๋ถ€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

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

1 -> ํ™”๋ฉด์•ˆ์˜ ๋„ค๋ชจ๋ฐ•์Šค์— ๊ธ€์ž๊ฐ€ ํ‘œํ˜„๋œ๋‹ค๋ฉด, ๋„ค๋ชจ๋ฐ•์Šค์˜ ํ™”๋ฉด ์œ„์น˜ ์ •๋ณด, ๋„ค๋ชจ๋ฐ•์Šค์˜ ํฌ๊ธฐ์ •๋ณด, ๊ธ€์ž๋‚ด์šฉ, ๊ธ€์ž์˜ ์œ„์น˜, ๊ธ€์ž์˜ ํฌ๋งท ์ •๋ณด ๋“ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ

 

2 -> ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ๋ชจ๋ธ์—์„œ ํ™”๋ฉด UI๋ฅผ ์ง์ ‘ ์กฐ์ •ํ•ด์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ๋ง

 

3 ->๋ชจ๋ธ์˜ ์†์„ฑ ์ค‘ ํ…์ŠคํŠธ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค๋ฉด, ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฉฐ, ๋ˆ„๊ตฐ๊ฐ€ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ ์ด๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๋ชจ๋ธ์€ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋„ ๋ณ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

 

 

 

๋ทฐ View

ํ™”๋ฉด์— ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์—ญํ• 

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

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

1 -> ํ™”๋ฉด์— ๊ธ€์ž๋ฅผ ํ‘œ์‹œ ํ•˜๊ธฐ ์œ„ํ•ด, ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฒŒ ๋ ํ…๋ฐ, ๊ทธ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž„์˜์˜ ๋ทฐ ๋‚ด๋ทฐ์— ์ €์žฅํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๋‹จ์ˆœํžˆ ๋„ค๋ชจ ๋ฐ•์Šค๋ฅผ ๊ทธ๋ฆฌ๋ผ๋Š” ๋ช…๋ น์„ ๋ฐ›์œผ๋ฉด, ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ๋งŒ ํ•˜๊ณ  ๊ทธ ํ™”๋ฉด์„ ๊ทธ๋ฆด ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋“ค์€ ์ €์žฅํ•˜์ง€ ์•Š์•„์•ผ ํ•จ!

 

2 -> ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ์ž๊ธฐ ์ž์‹ ์˜ ๋นผ๊ณ ๋Š” ๋‹ค๋ฅธ ์š”์†Œ๋Š” ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„์„œ๋Š” ์•ˆ๋œ๋‹ค. ๊ทธ๋ƒฅ ๋ทฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ํ™”๋ฉด์— ํ‘œ์‹œํ•ด์ฃผ๋Š” ์—ญํ• ๋งŒ ๊ฐ€์ง„๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

3 -> ๋ชจ๋ธ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ ์ด๋ฅธ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ณ€๊ฒฝ์„ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๋ทฐ์—์„œ๋Š” ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฅผ ๋ชจ๋ธ์—๊ฒŒ ์ „๋‹ฌํ•ด์„œ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ ํ†ต์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ •๋ณด๋“ค์„ ํ‘œํ˜„ํ•  ๋•Œ ์‰ฝ๊ฒŒ ์„ค๊ณ„๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

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

๋ชจ๋ธ์ด “์–ด๋–ป๊ฒŒ” ์ฒ˜๋ฆฌํ•  ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ , ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํ™”๋ฉด์˜ ๋กœ์ง์ฒ˜๋ฆฌ ๋ถ€๋ถ„์ด๋‹ค.

ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„๋˜๊ฒŒ ๋˜๋ฉฐ, ์š”์ฒญ ๋‚ด์šฉ์„ ๋ถ„์„ํ•ด์„œ Model๊ณผ View์— ์—…๋ฐ์ดํŠธ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. (๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ค‘๊ฐœ ์—ญํ• )

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

1 -> ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅด๊ณ , ๋ณ€๊ฒฝ์„ ์™ธ๋ถ€๋กœ ์•Œ๋ฆฌ๊ณ , ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ค‘์žฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ๊ณผ ๊ทธ์— ๊ด€๋ จ๋œ ๋ทฐ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

2 -> ๋ชจ๋ธ์ด๋‚˜ ๋ทฐ์˜ ๋ณ€๊ฒฝ ํ†ต์ง€๋ฅผ ๋ฐ›์œผ๋ฉด ์ด๋ฅผ ํ•ด์„ํ•ด์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ ์š”์†Œ์—๊ฒŒ ํ†ต์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

๋˜ํ•œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”์ธ ๋กœ์ง์€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‹ด๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

MVC๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ ์˜์˜

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

๊ณต์žฅ์—์„œ๋„ ํ•˜๋‚˜์˜ ์—ญํ• ๋“ค๋งŒ ๋‹ด๋‹น์„ ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์„œ ํšจ์œจ์ ์ด๋“ฏ...

โ€‹

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

 

MVCํŒจํ„ด์€ ๊ฒฐ๊ตญ "์–ด๋–ป๊ฒŒ ๋‚˜๋ˆŒ ๊ฒƒ์ธ๊ฐ€"์— ๋Œ€ํ•œ ํ•ด๋‹ต ์ค‘ ํ•˜๋‚˜๋‹ค. ์–ด๋–ค ํŠน์ •ํ•œ ์—ญํ• ๋“ค์— ๋Œ€ํ•ด ์—ญํ• ๋ถ„๋‹ด์„ ํ•  ๋•Œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ MVCํŒจํ„ด!!!!!

 

 

 

 

MVCํŒจํ„ด์˜ ํ•œ๊ณ„

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

์ฆ‰, ํ™”๋ฉด์— ๋ณต์žกํ•œ ํ™”๋ฉด๊ณผ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์„ฑ ํ•„์š”ํ•œ ๊ตฌ์„ฑ์ด๋ผ๋ฉด, Controller์— ๋‹ค์ˆ˜์˜ Model๊ณผ View๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค MVC๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ๋น„๋Œ€ํ•ด์ ธ์„œ, ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ• ๋•Œ๋งˆ๋‹ค ํฌ๊ณ  ์ž‘์€ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์†Œ๋“œ ๋ถ„์„์ด๋‚˜ ํ…Œ์ŠคํŠธ๋„ ์–ด๋ ต๋‹ค.... ์ด๋Ÿฐ ํ˜•ํƒœ์˜ MVC๋ฅผ Massive ViewController (๋Œ€๊ทœ๋ชจ MVC ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 

 

๊ทธ๋ž˜์„œ ์œ„์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•œ ์—ฌ๋Ÿฌ ๋‹ค์–‘ํ•œ!! ํŒจํ„ด์„ ํŒŒ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

MVP, MVVM, Viper, Clean Architecture, Flux, Redux, RxMVVM….

 


Reference.

๋งํฌ1 ๋งํฌ2

'๐Ÿ”ฅ > ๊ธฐํƒ€ ๋“ฑ๋“ฑ ๐ŸŽธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[git] git flow : ๋‹ค์–‘ํ•œ ๋ธŒ๋žœ์น˜ ์ „๋žต  (0) 2021.08.31

+ Recent posts