๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿช CS

์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ - ๋””์ž์ธ ํŒจํ„ด

ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

ํ”„๋ก์‹œ ์„œ๋ฒ„๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค๋กœ, BE์—์„œ ์ง€์ •ํ•œ API ์ฃผ์†Œ๊ฐ€ FE์˜ API ์ฃผ์†Œ๊ฐ€ ํ”„๋ก์‹œ ์— ์˜ํ•ด์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๋ง‰ํžˆ๊ฒŒ ๋˜๋ฉด CORS๋ฅผ ๋˜์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

์ œ์–ด ํ๋ฆ„ ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•œ ์ œ์–ด ๊ถŒํ•œ์ด ์–ด๋””์— ์žˆ๋А๋ƒ์— ์ฐจ์ด์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ •ํ•ด์ง„ ๊ธธ์„ ๋”ฐ๋ผ์•ผ ํ•˜๋ฏ€๋กœ ์ˆ˜๋™์ ์ด๊ณ , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์œ ๋™์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ์ œ์–ด์˜ ์—ญ์ „(Inversion Of Control)์ด ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ดํ„ฐ๋ ˆ์ดํ„ฐ ํŒจํ„ด์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

์žฅ์ ์€ ์ง‘ํ•ฉ์ฒด ํด๋ž˜์Šค์˜ ์‘์ง‘๋„๋ฅผ ๋†’์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ง‘ํ•ฉ์ฒด ๋‚ด์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ์ผ์ด ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์•Œ ํ•„์š” ์—†์ด, ์ง‘ํ•ฉ์ฒด ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•ญ๋ชฉ์— ์ผ์ผ์ด ์ ‘๊ทผํ•˜๋Š” ์ž‘์—…์„ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด์—์„œ ๋งก๊ฒŒ ๋˜๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์ง‘ํ•ฉ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•ด์งˆ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ง‘ํ•ฉ์ฒด์—์„œ๋Š” ๋ฐ˜๋ณต ์ž‘์—…์—์„œ ์†์„ ๋–ผ๊ณ  ์›๋ž˜ ์ž์‹ ์ด ํ•  ์ผ์—๋งŒ ์ „๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ ์€ ๋‹จ์ˆœํ•œ ์ˆœํšŒ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค๋งŒ ๋งŽ์•„์ ธ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ถ”์ƒํ™”๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

๋Œ€์ƒ์—์„œ ํŠน์ง•์„ ๋ฝ‘์•„๋‚ธ ๊ฒƒ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” interface ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š”๊ฒŒ ์ถ”์ƒํ™”๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ผ์„ ๋•Œ ์–ด๋–ค ๋‚ด์šฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€๊ฐ€ ํ•œ๋ˆˆ์— ํŒŒ์•…๋˜์ง€์•Š์„๋•Œ ์ถ”์ƒ์ ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

MVC ํŒจํ„ด์˜ ํŠน์ง•๊ณผ ๊ฐ ๋ถ€๋ถ„์˜ ์—ญํ• ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

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

 

 

MVC ํŒจํ„ด์„ ์“ฐ๋Š” ์ด์œ ์— ๋Œ€ํ•ด ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

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

 

 

๋””์ž์ธ ํŒจํ„ด์„ ๋”ฐ๋ฅผ๋•Œ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ๊ณ„์ธต์ธ framework ๊ณ„์ธต์„ ์ˆ˜์ •ํ•ด๋„ ์•ˆ์ชฝ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ด ์ˆ˜์ •์‚ฌํ•ญ์— ์˜ํ•ด ์˜ํ–ฅ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋…๋ฆฝ์ ์œผ๋กœ ๋ทฐ๊ณ„์ธต์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ Data source๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋‚ด๋ถ€์— ์œ„์น˜ํ•œ ๋ชจ๋ธ ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ฐ™์€ ๋‚ด๋ถ€์ ์ธ ์‚ฌํ•ญ์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ interface๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค๋ฉด ๋กœ์ง ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์— ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌ์‹œ์ผœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋กœ ์˜ฎ๊ฒจ๊ฐ€๋Š” ๊ฒƒ ๋˜ํ•œ ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค.

 

 

ํŒฉํ† ๋ฆฌ ํŒจํ„ด์˜ ๊ฐ„๋žตํ•œ ์„ค๋ช…๊ณผ ์ข…๋ฅ˜, ๊ทธ ์ฐจ์ด๋ฅผ ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

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