์Šคํ”„๋ง(spring)์ด๋ž€?

2014. 11. 12. 11:37ยทFramework/spring

์Šคํ”„๋ง์˜ ์ •์˜

์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ฒฝ๋Ÿ‰๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

ํŠน์ • ๊ณ„์ธต์ด๋‚˜ ๊ธฐ์ˆ , ์—…๋ฌด ๋ถ„์•ผ์— ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „ ์˜์—ญ์„ ํฌ๊ด„ํ•˜๋Š” ๋ฒ”์šฉ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งํ•œ๋‹ค.

*
์Šคํ”„๋ง์˜ ๊ธฐ์›์€ J2EE ๊ธฐ์ˆ ์„œ์ ์— ๋”ธ๋ฆฐ ์˜ˆ์ œ ์ฝ”๋“œ์ด๋‹ค. ์Šคํ”„๋ง์„ ์ฒ˜์Œ ๋งŒ๋“  ์‚ฌ๋žŒ์€ Rod Johnson์ด๋ผ๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ์ž. Rod Johnson์€ 2003๋…„์— "Expert One-on-One J2EE Design and Development"๋ผ๋Š” ์ฑ…์„ ์ถœ๊ฐ„ํ–ˆ๋‹ค. ์ด ์ฑ…์—์„œ ๊ฐ•์กฐํ•˜๋Š” ์ค‘์š”ํ•œ ์ „๋žต์˜ ํ•˜๋‚˜๋Š” "ํ•ญ์ƒ ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ‘๊ทผํ•˜๋ผ"์ด๋‹ค. ๋‹น์—ฐํžˆ ์ฑ…์˜ ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ณ  ๋‚˜์„œ, ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ๋๋‹ค. ๋ฐ”๋กœ ์ด ์˜ˆ์ œ์— ํฌํ•จ๋œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ์›์ด๋‹ค.
 
์ด ์ฑ…์˜ ๋‚ด์šฉ๊ณผ ์˜ˆ์ œ๋กœ ์ œ๊ณต๋œ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋งค๋ฃŒ๋œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฑ…์˜ ๋…์ž๋“ค์ด ํ† ๋ก ํ•˜๋Š” ์ถœํŒ์‚ฌ ํฌ๋Ÿผ์— ๋ชจ์ด๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ๊ทธ๊ฒƒ์„ ๋ฐœ์ „์‹œ์ผœ์„œ ์ง€์†์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜์ž๋Š” ์˜๊ฒฌ๋“ค๊ณผ ํ•จ๊ป˜ ์ €์ž์ธ Rod Johnson๋„ ์ฐธ์—ฌํ•˜๋ฉด์„œ ์ •์‹์ ์œผ๋กœ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ์ด๋ฆ„์˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋ผ์„œ ์˜ค๋Š˜๋‚ ์— ์ด๋ฅธ ๊ฒƒ์ด๋‹ค.


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

 

๊ฒฝ๋Ÿ‰๊ธ‰(lightweight)

์Šคํ”„๋ง ์ž์ฒด๊ฐ€ ์•„์ฃผ ๊ฐ€๋ณ๋‹ค๊ฑฐ๋‚˜ ์ž‘์€ ๊ทœ๋ชจ์˜ ์ฝ”๋“œ๋กœ ์ด๋ค„์กŒ๋‹ค๋Š” ๋œป์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฌด๊ฒ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

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

๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ธฐ์ˆ  ์ˆ˜์ค€์€ ๋น„์Šทํ•˜๋”๋ผ๋„ ๊ทธ๊ฒƒ์„ ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ฒŒ ํ•ด์คŒ์œผ๋กœ์จ ์ƒ์‚ฐ์„ฑ๊ณผ ํ’ˆ์งˆ ๋ฉด์—์„œ ์œ ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๊ฒฝ๋Ÿ‰๊ธ‰์ด๋ผ๋Š” ๋ง๋กœ ํ‘œํ˜„๋˜๋Š” ์Šคํ”„๋ง์˜ ํŠน์ง•์ด๋‹ค. 

 

์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ

์Šคํ”„๋ง์€ ๊ทผ๋ณธ์ ์ธ ๋ถ€๋ถ„์—์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์˜ ๋ณต์žกํ•จ์„ ์ œ๊ฑฐํ•ด๋‚ด๊ณ  ์ง„์ •์œผ๋กœ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•œ๋‹ค.

์ด ๋ฌธ๊ตฌ๋Š” EJB๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ–ˆ์„ ๋•Œ๋„ ์‚ฌ์šฉ๋๋‹ค. EJB ๋ฒ„์ „ 1.0์˜ ์ŠคํŽ™๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด EJB์˜ ๋ชฉํ‘œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค.

EJB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ์„ ํŽธํ•˜๊ฒŒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ์šฐ๋ ˆ๋ฒจ์˜ ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ์ƒํƒœ ๊ด€๋ฆฌ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ, ๋ฆฌ์†Œ์Šค ํ’€๋ง๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋กœ์šฐ๋ ˆ๋ฒจ์˜ API ๋”ฐ์œ„๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.
- Enterprise JavaBeans 1.0 Specification, Chapter 2 Goals


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

EJB
๋Š” ์ด ๊ณผ์ •์—์„œ ๋‹ค๋ฅธ ์ฐจ์›์˜ ๋” ํฐ ๋ณต์žกํ•จ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ๋Œ๊ณ  ๋“ค์–ด์˜ค๋Š” ์‹ค์ˆ˜๋ฅผ ์ €์งˆ๋ €๋‹ค. ์Šคํ”„๋ง๋„ ๋‹น์‹œ EJB์˜ ์ž˜๋ชป๋œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋Œ€์•ˆ์„ ๋ชจ์ƒ‰ํ•˜๋Š” ์ค‘์— ๋“ฑ์žฅํ•œ ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์Šคํ”„๋ง์€ EJB๊ฐ€ ๊ถ๊ทน์ ์œผ๋กœ ์ด๋ฃจ๊ณ ์ž ํ–ˆ๋˜ ์ด ๋ชฉ์ ์„ ์ œ๋Œ€๋กœ ์‹คํ˜„ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

 

์˜คํ”ˆ์†Œ์Šค

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

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

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

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

์Šคํ”„๋ง์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์Šคํ”„๋ง์†Œ์Šค๋Š” ์Šคํ”„๋ง์˜ ์ฐฝ์‹œ์ž์ธ Rod Johnson์„ ๋น„๋กฏํ•ด ์Šคํ”„๋ง์ด ์˜คํ”ˆ์†Œ์Šคํ™”๋˜๋Š” ๋ฐ ๊ฐ€์žฅ ํฐ ์—ญํ• ์„ ํ•œ Juergen Hoeller ์™€ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„ธ๊ณ„์—์„œ ์†๊ผฝํžˆ๋Š” ์ตœ์ƒ๊ธ‰ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฃผ์ถ•์ด ๋ผ์„œ ๋งŒ๋“  ํšŒ์‚ฌ๋‹ค.  ์ด ํšŒ์‚ฌ๋Š” ์Šคํ”„๋ง์— ๋Œ€ํ•œ ์ „๋ฌธ์ ์ธ ๊ธฐ์ˆ ์ง€์›๊ณผ ์ปจ์„คํŒ… ๊ทธ๋ฆฌ๊ณ  ์Šคํ”„๋ง์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์‹œ์Šคํ…œ์„ ์•ˆ์ •์ ์œผ๋กœ ์šด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ƒ์šฉ ์ œํ’ˆ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์ˆ˜์ต์„ ์–ป๊ณ , ํ•œํŽธ์œผ๋กœ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ์„œ ์Šคํ”„๋ง์ด ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๋„๋ก ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.

์Šคํ”„๋ง์€ ์˜คํ”ˆ์†Œ์Šค์˜ ์žฅ์ ์„ ์ถฉ๋ถ„ํžˆ ์ทจํ•˜๋ฉด์„œ ๋™์‹œ์— ์˜คํ”ˆ์†Œ์Šค ์ œํ’ˆ์˜ ๋‹จ์ ๊ณผ ํ•œ๊ณ„๋ฅผ ์ž˜ ๊ทน๋ณตํ•˜๊ณ  ์žˆ๋Š”, ์ „๋ฌธ์ ์ด๊ณ  ์„ฑ๊ณต์ ์ธ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.






์Šคํ”„๋ง์˜ ๋ชฉ์ 


์Šคํ”„๋ง์˜ ๋ชฉ์ ์€ ๋ฌด์—‡์ธ๊ฐ€? ์Šคํ”„๋ง์ด ๋งŒ๋“ค์–ด์ง„ ์ด์œ ๋Š” ๋ฌด์—‡์ด๊ณ , ์Šคํ”„๋ง์„ ํ†ตํ•ด ๊ถ๊ทน์ ์œผ๋กœ ์ด๋ฃจ๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€? ๊ทธ๊ฒƒ์€ ์ •์˜๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ดค๋“ฏ์ด '๊ฒฝ๋Ÿ‰๊ธ‰ ํ”„๋ ˆ์ž„์›Œํฌ์ธ ์Šคํ”„๋ง์„ ํ™œ์šฉํ•ด์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ' ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ตณ์ด ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•ด์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์„ ํŽธํ•˜๊ฒŒ ํ•˜๋ ค๋Š” ์ด์œ ๋Š” ๋ญ˜๊นŒ? ์›๋ž˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์ด๋ž€ ํŽธํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


1)
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์˜ ๋ณต์žกํ•จ

2000
๋…„๋Œ€ ์ดˆ๋ฐ˜ ๊ฐ์ข… ์ž๋ฐ” ์ปจํผ๋Ÿฐ์Šค์—์„œ ์ž์ฃผ ๋…ผ์˜๋๋˜ ์ฃผ์ œ๋Š” '์™œ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ(JavaEE) ํ”„๋กœ์ ํŠธ๋Š” ์‹คํŒจํ•˜๋Š”๊ฐ€?' ์˜€๋‹ค. ๋‹น์‹œ IT ๋ฆฌ์„œ์น˜๊ธฐ์—…์˜ ์กฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด 80% ์ด์ƒ์˜ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํŒจํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ์ค‘ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์›์ธ์ด '์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ ธ์„œ'์˜€๋‹ค.

๋ณต์žกํ•จ์˜ ๊ทผ๋ณธ์ ์ธ ์ด์œ 

๊ธฐ์ˆ ์ ์ธ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋Š˜์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

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

 

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ตฌํ˜„ํ•ด์•ผ ํ•  ํ•ต์‹ฌ๊ธฐ๋Šฅ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋ณต์žกํ•จ์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์›๋ž˜ ๊ธฐ์—… ์—…๋ฌด๋ž€ ๊ทธ ์ž์ฒด๋กœ ๋ณต์žกํ•œ๋ฐ๋‹ค ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ์ƒํ™ฉ๋„ ๋งŽ๊ณ  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ •๋ณด์˜ ๊ทœ๋ชจ๋„ ์ƒ๋‹นํ•˜๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ์ด ๊ด€์—ฌํ•˜๋Š” ์—…๋ฌด์˜ ๋น„์œจ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ปค์ง€๊ณ  ์žˆ์œผ๋‹ˆ ๋‹น์—ฐํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๋„ ํž˜๋“ค๊ณ  ๋ณต์žกํ•ด์ ธ ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.



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

 

๋ณต์žกํ•จ์„ ๊ฐ€์ค‘์‹œํ‚ค๋Š” ์›์ธ

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

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




2)
๋ณต์žกํ•จ์„ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋„์ „

์ œ๊ฑฐ๋  ์ˆ˜ ์—†๋Š” ๊ทผ๋ณธ์ ์ธ ๋ณต์žกํ•จ

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

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅธ ์ด ๋‘ ๊ฐ€์ง€ ๋ณต์žกํ•จ์„ ๋ถ„๋ฆฌํ•ด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

 

์‹คํŒจํ•œ ํ•ด๊ฒฐ์ฑ… : EJB

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

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

 

๋น„์นจํˆฌ์ ์ธ ๋ฐฉ์‹์„ ํ†ตํ•œ ํšจ๊ณผ์ ์ธ ํ•ด๊ฒฐ์ฑ…: ์Šคํ”„๋ง

์Šคํ”„๋ง์€ EJB์˜ ์‹คํŒจ๋ฅผ ๊ตํ›ˆ์œผ๋กœ ์‚ผ์•„์„œ ์ถœ๋ฐœํ–ˆ๋‹ค. EJB์ฒ˜๋Ÿผ ์–ด๋–ค ๊ธฐ์ˆ ์„ ์ ์šฉํ–ˆ์„ ๋•Œ ๊ทธ ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋‚˜ ๊ทœ์•ฝ ๋“ฑ์ด ์ฝ”๋“œ์— ๋“ฑ์žฅํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์นจํˆฌ์ ์ธ(invasive) ๊ธฐ์ˆ ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฌผ๋ก  ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ๊ธฐ์ˆ ์˜ API๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฑด ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๋ฉด์„œ ๋‹จ์ง€ ์–ด๋–ค ๊ธฐ์ˆ ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค๊ณ  ํ•ด์„œ ํŠน์ • ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค, API๋“ฑ์˜ ์ฝ”๋“œ์— ๋งˆ๊ตฌ ๋“ฑ์žฅํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์นจํˆฌ์ ์ธ ๊ธฐ์ˆ ์ด ๋˜๋ฉฐ ๋ณต์žกํ•จ์„ ๊ฐ€์ค‘์‹œํ‚ค๋Š” ์›์ธ์ด ๋œ๋‹ค.

๋ฐ˜๋ฉด์— ๋น„์นจํˆฌ์ ์ธ(non-invasive) ๊ธฐ์ˆ ์€ ๊ธฐ์ˆ ์˜ ์ ์šฉ ์‚ฌ์‹ค์ด ์ฝ”๋“œ์— ์ง์ ‘ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ์–ด๋”˜๊ฐ€์—๋Š” ๊ธฐ์ˆ ์˜ ์ ์šฉ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•˜๊ฒ ์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ์—ฌ๊ธฐ์ €๊ธฐ์— ๋ถˆ์‘ฅ ๋“ฑ์žฅํ•˜๊ฑฐ๋‚˜, ์ฝ”๋“œ์˜ ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์ œํ•œํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒŒ ๋น„์นจํˆฌ์ ์ธ ๊ธฐ์ˆ ์˜ ํŠน์ง•์ด๋‹ค.

์Šคํ”„๋ง์ด ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋น„๊ฒฐ์€ ๋น„์นจํˆฌ์ ์ธ ๊ธฐ์ˆ ์ด๋ผ๋Š” ์ „๋žต์„ ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์Šคํ”„๋ง์„ ํ†ตํ•ด ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅธ ๋ณต์žกํ•จ๋“ค์„ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ƒ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์ด ๋งˆ๋ จ๋๋‹ค. ๋™์‹œ์— ์Šคํ”„๋ง์ด ์ฝ”๋“œ์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋“ฑ์žฅํ•ด์„œ ๋ถ€๊ฐ€์ ์ธ ๋ณต์žกํ•จ์„ ๊ฐ€์ ธ์˜ค์ง€๋„ ์•Š์•˜๋‹ค.





3)
๋ณต์žกํ•จ์„ ์ƒ๋Œ€ํ•˜๋Š” ์Šคํ”„๋ง์˜ ์ „๋žต

์Šคํ”„๋ง์˜ ๊ธฐ๋ณธ์ ์ธ ์ „๋žต์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์™€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ์ˆ ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ์ˆ ์  ๋ณต์žกํ•จ์„ ์ƒ๋Œ€ํ•˜๋Š” ์ „๋žต

๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ผ๊ด€์„ฑ์ด ์—†๊ณ , ํŠน์ • ํ™˜๊ฒฝ์— ์ข…์†์ ์ด๋‹ค.

ํ™˜๊ฒฝ์ด ๋ฐ”๋€Œ๊ณ , ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋€Œ๊ณ , ์ ์šฉ๋˜๋Š” ์กฐ๊ฑด์ด ๋ฐ”๋€Œ๋ฉด ์ ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด ๋‹ฌ๋ผ์ง€๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋„ ๋ฐ”๋€๋‹ค๋Š” ๊ฑด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋‹ค.

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

์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ํ…œํ”Œ๋ฆฟ/์ฝœ๋ฐฑ ํŒจํ„ด์€ ํŒ์— ๋ฐ•ํžŒ ๋ฐ˜๋ณต์ ์ธ ์ž‘์—… ํ๋ฆ„๊ณผ API ์‚ฌ์šฉ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด ์ค€๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋„ ์ตœ์ ํ™”๋œ ํ•ต์‹ฌ ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.

 

๊ธฐ์ˆ ์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅธ ์ฝ”๋“œ์— ์„ž์—ฌ์„œ ๋“ฑ์žฅํ•œ๋‹ค.

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

AOP
๋Š” ์ตœํ›„๊นŒ์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ์— ๋‚จ์•„ ์žˆ๋Š” ๊ธฐ์ˆ  ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์„œ ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋กœ ๊ด€๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ์ˆ ์ด๋‹ค. 

AOP
๋Š” ๊ธฐ์ˆ ์„ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ๋กœ ์ธํ•œ ๋ณต์žกํ•จ์ด ๊ธฐ์ˆ  ๊ทธ ์ž์ฒด ์ด์ƒ์œผ๋กœ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ฆ๋Œ€๋˜์ง€ ์•Š๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์ด๋‹ค.

 

๋น„์ฆˆ๋‹ˆ์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์˜ ๋ณต์žกํ•จ์„ ์ƒ๋Œ€ํ•˜๋Š” ์ „๋žต

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

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

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

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

 

ํ•ต์‹ฌ๋„๊ตฌ : ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ DI

๊ธฐ์ˆ ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋ณต์žกํ•จ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์Šคํ”„๋ง์ด ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ(OO)์ด๋‹ค.

์Šคํ”„๋ง์˜ ๋ชจํ† ๋Š” ๊ฒฐ๊ตญ "๊ธฐ๋ณธ์œผ๋กœ ๋Œ์•„๊ฐ€์ž"์ด๋‹ค. ์ž๋ฐ”์˜ ๊ธฐ๋ณธ์ธ ๊ฐ์ฒด์ง€ํ–ฅ์— ์ถฉ์‹คํ•œ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋‹จ์ˆœํ•œ ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ๊ธฐ๋ฒ•์„ ์ž˜ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด DI ๊ฐ™์€ ์œ ์šฉํ•œ ๊ธฐ์ˆ ์„ ํŽธํ•˜๊ฒŒ ์ ์šฉํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์ด ์Šคํ”„๋ง์˜ ๊ธฐ๋ณธ ์ „๋žต์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ? ์—ฌ๊ธฐ์„œ ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅด๊ณ , ๋ณ€๊ฒฝ์˜ ์ด์œ ๊ฐ€ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ๋ฌด์—‡์ผ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฐ ํ›„๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด DI๋ฅผ ์ ์šฉํ•ด์„œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋„์ž…ํ•˜๊ณ , DI๋กœ ๊ด€๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•ด์ค„ ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ DI๋Š” ์ข‹์€ ์˜ค๋ธŒ์ ํŠธ ์„ค๊ณ„์˜ ๊ฒฐ๊ณผ๋ฌผ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ DI๋ฅผ ์—ด์‹ฌํžˆ ์ ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ์›์น™์„ ์ž˜ ๋”ฐ๋ฅด๊ณ  ๊ทธ ์žฅ์ ์„ ์‚ด๋ฆฐ ์„ค๊ณ„๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

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

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





POJO
ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•จ๊ป˜ ์“ด "Professional Spring Framework"๋ผ๋Š” ์ฑ…์ด ์žˆ๋‹ค. ์ด ์ฑ…์—์„œ ์Šคํ”„๋ง ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž๋“ค์€ "์Šคํ”„๋ง์˜ ์ •์ˆ˜(essence)๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋น„์Šค ๊ธฐ๋Šฅ์„ POJO์— ์ œ๊ณตํ•˜๋Š” ๊ฒƒ"์ด๋ผ๊ณ  ํ–ˆ๋‹ค. '๋ถ„๋ฆฌ๋์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋น„์Šค ๊ธฐ์ˆ ์„ POJO ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ•ต์‹ฌ ๋กœ์ง์„ ๋‹ด์€ ์ฝ”๋“œ์— ์ œ๊ณตํ•œ๋‹ค.'๋Š” ๊ฒƒ์ด ์Šคํ”„๋ง์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ํŠน์ง•๊ณผ ๋ชฉํ‘œ์ด๋‹ค.



1)
์Šคํ”„๋ง์˜ ํ•ต์‹ฌ:POJO

์Šคํ”„๋ง์˜ ์ฃผ์š” ๊ธฐ์ˆ ์ธ IoC/DI, AOP์™€ PSA(Portable Service Abstraction)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ POJO๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ€๋Šฅ๊ธฐ์ˆ (enabling technology)๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.



2) POJO
๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

POJO
๋Š” Plain Old Java Object์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋”ฐ์„œ ๋งŒ๋“  ์•ฝ์ž์ด๋‹ค. ์ด ๋‹จ์–ด๋Š” Martin Fowler๊ฐ€ 2000๋…„์— ์ปจํผ๋Ÿฐ์Šค ๋ฐœํ‘œ๋ฅผ ์ค€๋น„ํ•˜๋‹ค๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ์šฉ์–ด๋ผ๊ณ  ํ•œ๋‹ค. Martin Fowler๋Š” ๋‹น์‹œ ์ธ๊ธฐ๋ฅผ ๋Œ๊ณ  ์žˆ๋˜ EJB์ฒ˜๋Ÿผ ๋ณต์žกํ•˜๊ณ  ์ œํ•œ์ด ๋งŽ์€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์ž๋ฐ”์˜ ๋‹จ์ˆœํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ด์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์™œ ๊ฐœ๋ฐœ์ž๋Š” ์ž๋ฐ”์˜ ๋‹จ์ˆœํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธธ ๊บผ๋ฆฌ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ๋‹ค. ๊ทธ ์ด์œ ๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ ํ‰๋ฒ”ํ•œ ์ž๋ฐ”์˜ค๋ธŒ์ ํŠธ์—๋Š” EJB์™€ ๊ฐ™์€ ๊ทธ๋Ÿด์‹ธํ•œ ์ด๋ฆ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ญ”๊ฐ€ ์žˆ์–ด ๋ณด์ด๋„๋ก ๋งŒ๋“  ์ด๋ฆ„์ด ๋ฐ”๋กœ POJO์˜€๋‹ค. ๊ฐ™์€ ์„ค๋ช…์ด์ง€๋งŒ ๊ทธ๋ƒฅ "๊ฐ„๋‹จํžˆ ์ž๋ฐ” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์š”"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค "POJO ๋ฐฉ์‹์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ํ•˜๋ฉด ์™ ์ง€ ๋” ์„ธ๋ จ๋˜๊ณ  ์ฒจ๋‹จ๊ธฐ์ˆ ์„ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง„๋‹ค๋Š” ์‹ฌ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค. ์ด ์‹œ๋„๋Š” ๊ธฐ๋Œ€ ์ด์ƒ์œผ๋กœ ์„ฑ๊ณต์ ์ด์—ˆ๋‹ค.



3) POJO
์˜ ์กฐ๊ฑด

ํŠน์ • ๊ทœ์•ฝ(contract)์— ์ข…์†๋˜์ง€ ์•Š๋Š”๋‹ค.

POJO
๋Š” ์ž๋ฐ” ์–ธ์–ด์™€ ๊ผญ ํ•„์š”ํ•œ API ์™ธ์—๋Š” ์ข…์†๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ๋ณ„๋‹ค๋ฅธ ๊ฐ€์น˜๋ฅผ ์ฃผ์ง€๋„ ๋ชปํ•˜๋Š” ๊ทœ์•ฝ ๋”ฐ์œ„์— ์ข…์†๋˜์ง€ ์•Š์•„์•ผ ํ•˜๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ์ž์œ ๋กœ์šด ์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์˜ค๋ธŒ์ ํŠธ์—ฌ์•ผ๋งŒ POJO๋ผ๊ณ  ๋ถˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

ํŠน์ • ํ™˜๊ฒฝ์— ์ข…์†๋˜์ง€ ์•Š๋Š”๋‹ค.



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



4) POJO
์˜ ์žฅ์ 

POJO
๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ๊ทธ๋Œ€๋กœ POJO์˜ ์žฅ์ ์ด ๋œ๋‹ค.

ํŠน์ •ํ•œ ๊ธฐ์ˆ ๊ณผ ํ™˜๊ฒฝ์— ์ข…์†๋˜์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ๋Š” ๊ทธ๋งŒํผ ๊น”๋”ํ•œ ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

๋˜ POJO๋กœ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋Š” ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ์— ๋งค์šฐ ์œ ๋ฆฌํ•˜๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์„ค๊ณ„๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ํฐ ์žฅ์ ์ด๋‹ค.



5) POJO
ํ”„๋ ˆ์ž„์›Œํฌ

์Šคํ”„๋ง์€ POJO๋ฅผ ์ด์šฉํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ๋ชฉ์ ์œผ๋กœ ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ–ˆ๋‹ค. POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ธฐ์ˆ ์ ์ธ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ POJO ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ•œ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ ๋Œ€ํ‘œ์ ์ธ POJO ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๊ผฝ์„ ์ˆ˜ ์žˆ๋‹ค.





์Šคํ”„๋ง์˜ ๊ธฐ์ˆ 

์Šคํ”„๋ง์—๋Š”  POJO ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๊ฐ€๋Šฅ๊ธฐ์ˆ (enabling technology)์„ ์ œ๊ณตํ•œ๋‹ค. IoC/DI, AOP, PSA๊ฐ€ ๊ทธ ๊ธฐ์ˆ ์ด๋‹ค.

์Šคํ”„๋ง์˜ ๊ธฐ์ˆ ๋“ค์€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ์ง„์ •ํ•œ ๋ชฉํ‘œ์ธ POJO ๊ธฐ๋ฐ˜์˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ผ ๋ฟ์ด๋‹ค.



1)
์ œ์–ด์˜ ์—ญ์ „(IoC) / ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…(DI)

์™œ ๋‘ ๊ฐœ์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋งŒ๋“ค๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‘๊ณ  ๋А์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•œ ๋’ค, ์‹ค์ œ ์‚ฌ์šฉํ•  ๋Œ€์ƒ์€ DI๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ? ์ด๋ ‡๊ฒŒ DI ๋ฐฉ์‹์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ฆ‰ ์ง์ ‘ ์ž์‹ ์ด ์‚ฌ์šฉํ•  ์˜ค๋ธŒ์ ํŠธ๋ฅผ new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋‚˜์€ ์ ์€ ๋ฌด์—‡์ผ๊นŒ?

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋‹ต๋ณ€์€ '์œ ์—ฐํ•œ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ'๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. DI๋Š” ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™(OCP)์ด๋ผ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์œผ๋กœ ์ž˜ ์„ค๋ช…๋  ์ˆ˜ ์žˆ๋‹ค. ์œ ์—ฐํ•œ ํ™•์žฅ์ด๋ผ๋Š” ์žฅ์ ์€ OCP์˜ 'ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๋‹ค'์— ํ•ด๋‹นํ•œ๋‹ค. DI๋Š” ์—ญ์‹œ OCP์˜ '๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ๋‹ค.'๋ผ๋Š” ๋ง๋กœ๋„ ์„ค๋ช…์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ์‡„ ๊ด€์ ์œผ๋กœ ๋ณผ ๋•Œ ์žฅ์ ์€ '์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค'๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

A->B
๋ผ๋Š” ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ์˜ค๋ธŒ์ ํŠธ ๊ตฌ์กฐ๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ์—ฌ๊ธฐ์„œ ํ™•์žฅ์€ B๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Š” B๊ฐ€ ๋ณ€๊ฒฝ๋ผ๋„ A๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์œ ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋œป์ด๊ธฐ๋„ ํ•˜๋‹ค. B ๊ด€์ ์—์„œ๋Š” ์œ ์—ฐํ•œ ํ™•์žฅ์ด๊ณ  A ๊ด€์ ์œผ๋กœ ๋ณด์ž๋ฉด ๋ณ€๊ฒฝ ์—†์ด ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. B๊ฐ€ B1, B2, B3๋กœ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋ฐ”๋€Œ์–ด๋„ ๋œ๋‹ค๊ณ  ๋ณผ ์ˆ˜๋„ ์žˆ๊ณ , B1, B2, B3 ์ฒ˜๋Ÿผ ์˜์กด ๋Œ€์ƒ์ด ๋ฐ”๋€Œ์–ด๋„ A๋Š” ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค.

DI์˜ ํ™œ์šฉ ๋ฐฉ๋ฒ•

ํ•ต์‹ฌ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ

DI
์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์ ์šฉ ๋ฐฉ๋ฒ•์€ ๋ฐ”๋กœ ์˜์กด ๋Œ€์ƒ์˜ ๊ตฌํ˜„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ๋””์ž์ธ ํŒจํ„ด์˜ ์ „๋žต ํŒจํ„ด์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋‹ค. A->B ๊ตฌ์กฐ์—์„œ A์˜ ๊ธฐ๋Šฅ ์ผ๋ถ€๋ฅผ B์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ B์˜ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ํ•„์š”์— ๋”ฐ๋ผ ํ†ต์งธ๋กœ B1, B2, B3๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด ์„œ๋น„์Šค ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” DAO๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, DAO์˜ ๊ตฌํ˜„์„ JDBC๋กœ ํ–ˆ๋‹ค๊ฐ€, ๊ทธ๊ฒƒ์„ JPA, ํ•˜์ด๋ฒ„๋„ค์ดํŠธ, JDO, iBatis ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ตฌํ˜„ ๋ฐฉ์‹์„ ํ†ต์งธ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•ต์‹ฌ๊ธฐ๋Šฅ์˜ ๋™์ ์ธ ๋ณ€๊ฒฝ

์ผ๋ฐ˜์ ์ธ DI๋ฅผ ์ด์šฉํ•œ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•๊ณผ ๋‹ฌ๋ฆฌ, ๋™์ ์œผ๋กœ ๋งค๋ฒˆ ๋‹ค๋ฅด๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค. DI๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์— ๋™์ ์œผ๋กœ ์˜์กด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ธด ํ•˜์ง€๋งŒ, ์ผ๋‹จ DI ๋˜๊ณ  ๋‚˜๋ฉด ๊ทธ ํ›„๋กœ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ๋™์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€๋งŒ ํ•œ๋ฒˆ DI๋˜๋ฉด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ์ •์ ์ธ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ DI๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•˜๋Š” ์ค‘๊ฐ„์— ๊ทธ ์˜์กด ๋Œ€์ƒ์„ ๋‹ค์ด๋‚ด๋ฏนํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ์‚ฌ์šฉ์ž์˜ ๋“ฑ๊ธ‰์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ DataSource๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. DAO๋Š” DataSource์— ์˜์กดํ•œ๋‹ค. DAO->DataSource ๊ด€๊ณ„๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ฅผ DAO ํ•˜๋‚˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ DataSource์— ์˜์กดํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž์˜ ๋“ฑ๊ธ‰์— ๋”ฐ๋ผ์„œ ๊ทธ๋•Œ๊ทธ๋•Œ ๋‹ค๋ฅธ DataSource๋ฅผ DAO๊ฐ€ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. VIP ์‚ฌ์šฉ์ž๋Š” ์ข€ ๋” ์†๋„๊ฐ€ ๋น ๋ฅธ DB๋ฅผ ์ด์šฉํ•˜๊ฒŒ ํ•ด์„œ ๋น ๋ฅธ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋ณด์žฅํ•ด์ฃผ๋ ค๊ณ  ํ•  ๋•Œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ๋ฌผ๋ก  DAO๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค ํ•„์š”๋Š” ์—†๋‹ค. ๋Œ€์‹  ๋งค์šฐ ์ง€๋Šฅ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” DI ๋•๋ถ„์— ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  DataSource๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ธฐ๋ฒ•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

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

 

๋ถ€๊ฐ€๊ธฐ๋Šฅ์˜ ์ถ”๊ฐ€

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

 

์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ณ€๊ฒฝ

๋•Œ๋กœ๋Š” ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ฐ€์ง„ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋˜๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์กŒ์ง€๋งŒ ์‚ฌ์‹ค์€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋„ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‹ค์ œ ์˜ค๋ธŒ์ ํŠธ ์‚ฌ์ด์— ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ DI๊ฐ€ ์œ ์šฉํ•˜๋‹ค.

A
๊ฐ€ C ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž. ํ•˜์ง€๋งŒ A๋Š” ์›๋ž˜ B ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ณ  C๋Š” B ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ด ๋•Œ A๊ฐ€ DI๋ฅผ ํ†ตํ•ด B์˜ ๊ตฌํ˜„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฐ›๋„๋ก ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋ฉด B ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉด์„œ ๋‚ด๋ถ€์—์„œ C๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์–ด๋Œ‘ํ„ฐ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด A์— DI ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 220V ์ „๊ธฐ๋ฅผ ์›ํ•˜๋Š” 9V, 6V, 12V ์‹์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์–ด๋Œ‘ํ„ฐ์ฒ˜๋Ÿผ, ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. A->B(C๋กœ ์œ„์ž„)->C ์ฒ˜๋Ÿผ ๊ตฌ์„ฑ๋œ๋‹ค. ์—ฌ์ „ํžˆ A๋Š” DI ๋•๋ถ„์— ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ํ˜ธ์ถœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋„ DI๋Š” ์œ ์šฉํ•˜๋‹ค. ๋””์ž์ธ ํŒจํ„ด์—์„œ ๋งํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ ๋ฐฉ์‹์˜ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์˜ ์‘์šฉ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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

 

ํ”„๋ก์‹œ

ํ”„๋ก์‹œ ํŒจํ„ด์˜ ์ „ํ˜•์ ์ธ ์‘์šฉ ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ํ•„์š”ํ•œ ์‹œ์ ์—์„œ ์‹ค์ œ ์‚ฌ์šฉํ•  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์ค€๋น„ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์ง€์—ฐ๋œ ๋กœ๋”ฉ(lazy loading)์„ ์ ์šฉํ•˜๋ ค๋ฉด ํ”„๋ก์‹œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์›๊ฒฉ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ์น˜ ๋กœ์ปฌ์— ์กด์žฌํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์›๊ฒฉ ํ”„๋ก์‹œ๋ฅผ ์ ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋„ ํ”„๋ก์‹œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋ชจ๋‘ DI๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. ์Šคํ”„๋ง์€ EJB ์›๊ฒฉ ํ˜ธ์ถœ์„ ํฌํ•จํ•ด์„œ ์›น ์„œ๋น„์Šค, REST ํ˜ธ์ถœ, HTTP ๋ฐฉ์‹์˜ ํ˜ธ์ถœ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฆฌ๋ชจํŒ… ๊ธฐ์ˆ ์„ ์ง€์›ํ•œ๋‹ค.

 

ํ…œํ”Œ๋ฆฟ๊ณผ ์ฝœ๋ฐฑ

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

์ฝœ๋ฐฑ์„ ์–ผ๋งˆ๋“ ์ง€ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด ๊ฐœ๋ฐฉ์„ ํ†ตํ•œ ์œ ์—ฐํ•œ ํ™•์žฅ์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋ฉฐ, ํ…œํ”Œ๋ฆฟ์€ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋‘๋ฉด ๊ณ„์† ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด ๊ธฐ๋Šฅ์˜ ํ™•์žฅ์—๋„ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” OCP์˜ ํ์‡„ ์›์น™์— ๊ฐ€์žฅ ์ž˜ ๋“ค์–ด๋งž๋Š” ๊ฒƒ์ด๋‹ค.

 

์‹ฑ๊ธ€ํ†ค๊ณผ ์˜ค๋ธŒ์ ํŠธ ์Šค์ฝ”ํ”„

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

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

 

ํ…Œ์ŠคํŠธ

๋‹ค๋ฅธ ์˜ค๋ธŒ์ ํŠธ์™€์˜ ์‚ฌ์ด์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์„ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ ๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ธ ์˜ค๋ธŒ์ ํŠธ์˜ ๊ธฐ๋Šฅ์— ์ถฉ์‹คํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์˜์กด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋Œ€์‹ ํ•ด์„œ ์Šคํ… ๋˜๋Š” ๋ชฉ ์˜ค๋ธŒ์ ํŠธ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ๋Œ€์—ญ์„ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ๋„ DI๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. DI๋ฅผ ์œ„ํ•ด ๋งŒ๋“  ์ˆ˜์ •์ž ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์•ˆ์—์„œ ์ˆ˜๋™์œผ๋กœ ๋ชฉ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜๋Š” ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์„ค์ •์„ ๋ณ„๋„๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. DI ์—†์ด๋Š” ์ด๋Ÿฐ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜๊ธฐ๋ž€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.





2)
์• ์ŠคํŽ™ํŠธ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP)

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

 AOP์˜ ์ ์šฉ ๊ธฐ๋ฒ•

์Šคํ”„๋ง๊ณผ ๊ฐ™์ด ๋‹ค์ด๋‚ด๋ฏน ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ๊ธฐ์กด ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์„ ์‘์šฉํ•œ ๊ฒƒ์ด๋‹ค. ์ž๋ฐ”์˜ ๊ฐ์ฒด์ง€ํ–ฅ ํŒจํ„ด์„ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ๋“ค๊ธฐ ์‰ฝ๊ณ  ์ ์šฉํ•˜๊ธฐ ๊ฐ„ํŽธํ•˜๋‹ค. ๋Œ€์‹  ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์€ ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ์ด ์ผ์–ด๋‚˜๋Š” ์ง€์  ๋ฟ์ด๋ผ๋Š” ์ œ์•ฝ์ด ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์™€ DI๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์ด ๊ธฐ๋ฐ˜์›๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋‚˜ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ๋Œ€์ƒ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ• ๋ชจ๋‘ ํ‰๋ฒ”ํ•œ ์ž๋ฐ” ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. ์Šคํ”„๋ง์˜ ๊ธฐ๋ณธ์ ์ธ AOP ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ ๋‹ค์ด๋‚ด๋ฏน ํ”„๋ก์‹œ๋ฅผ ์ด์šฉํ•œ ํ”„๋ก์‹œ AOP ๋ฐฉ์‹์ด๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” AOP๋Š” ๋Œ€๋ถ€๋ถ„์ด ์ด ํ”„๋ก์‹œ ๋ฐฉ์‹์˜ AOP๋ฉด ๋œ๋‹ค.

 

์ž๋ฐ” ์–ธ์–ด์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด์„œ๋Š” ์–ธ์–ด์˜ ํ™•์žฅ์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

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

 

AOP์˜ ์ ์šฉ ๋‹จ๊ณ„

AOP ์ ์šฉ 1๋‹จ๊ณ„: ๋ฏธ๋ฆฌ ์ค€๋น„๋œ AOP ์ด์šฉ

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

์Šคํ”„๋ง์—๋Š” ํŠธ๋žœ์žญ์…˜๋งŒํผ ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง„ ์•Š์ง€๋งŒ ํŠน์ • ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก @Configurable ์• ๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด์„œ ๋„๋ฉ”์ธ ์˜ค๋ธŒ์ ํŠธ์— DI๋ฅผ ์ž๋™์ ์šฉํ•ด์ฃผ๋Š” AOP๊ฐ€ ์žˆ๋‹ค.

 

AOP ์ ์šฉ 2๋‹จ๊ณ„ : ์ „๋‹ดํŒ€์„ ํ†ตํ•ด ์ •์ฑ… AOP ์ ์šฉ

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

 

AOP ์ ์šฉ 3๋‹จ๊ณ„ : AOP์˜ ์ž์œ ๋กœ์šด ์ด์šฉ

์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์„œ AOP์— ์–ด๋А ์ •๋„ ์นœ์ˆ™ํ•ด์ง€๊ณ , ๊ทธ ์žฅ๋‹จ์ ๊ณผ ์‘์šฉ ์ „๋žต, ์œ„ํ—˜์„ฑ ๋“ฑ์„ ์–ด๋А ์ •๋„ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ์ด์ œ๋Š” ๊ฐœ๋ฐœ์ž ์Šค์Šค๋กœ๊ฐ€ AOP๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋Šฅ์— ์ ์šฉํ•˜๋ฉด ์œ ์šฉํ•œ ์„ธ๋ถ€์ ์ธ AOP๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.





3)
ํฌํ„ฐ๋ธ” ์„œ๋น„์Šค ์ถ”์ƒํ™”(PSA)

์„ธ ๋ฒˆ์งธ ๊ฐ€๋Šฅ ๊ธฐ์ˆ ์€ ํ™˜๊ฒฝ๊ณผ ์„ธ๋ถ€ ๊ธฐ์ˆ ์˜ ๋ณ€ํ™”์— ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ธฐ์ˆ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” PSA(Portable Service Abstraction)๋‹ค. POJO๋กœ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋Š” ํŠน์ • ํ™˜๊ฒฝ์ด๋‚˜ ๊ตฌํ˜„ ๋ฐฉ์‹์— ์ข…์†์ ์ด์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ์Šคํ”„๋ง์€ JavaEE๋ฅผ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์œผ๋กœ ํ•˜๋Š” ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ JavaEE๋ฅผ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์œผ๋กœ ํ•˜๋Š” ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ JavaEE ๊ธฐ์ˆ ์— ์˜์กด์ ์ผ ์ˆ˜๋ฐ–์— ์—†๋‹ค. ํŠน์ • ํ™˜๊ฒฝ๊ณผ ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค๋Š” ๊ฒŒ ๊ทธ๋Ÿฐ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์€ ์•„๋‹ˆ๋‹ค.๋‹ค๋งŒ POJO ์ฝ”๋“œ๊ฐ€ ๊ทธ๋Ÿฐ ๊ธฐ์ˆ ์— ์ง์ ‘ ๋…ธ์ถœ๋˜์–ด ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์ˆ ์ด ๋ฐ”๋กœ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์„œ๋น„์Šค ์ถ”์ƒํ™” ๊ธฐ์ˆ ์ด๋‹ค.

์Šคํ”„๋ง์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์ถ”์ƒํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์–ด๋–ค ๊ฒƒ์€ AOP๋‚˜ ํ…œํ”Œ๋ฆฟ/์ฝœ๋ฐฑ ํŒจํ„ด๊ณผ ๊ฒฐํ•ฉ๋ผ์„œ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋Œ€์‹  ์„ค์ •์„ ํ†ตํ•ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ• ์ง€ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์„œ๋น„์Šค ์ถ”์ƒํ™”๋Š” ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ง์ ‘ ์ด์šฉํ•  ์ด์œ ๊ฐ€ ์—†๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ๋Œ€๋ถ€๋ถ„ AOP๋ฅผ ์ด์šฉํ•ด ์ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€์‹  ์„ค์ •์—์„œ๋Š” ์Šคํ”„๋ง์˜ ํŠธ๋žœ์žญ์…˜ ์ถ”์ƒํ™” ์ธํ„ฐํŽ˜์ด์Šค์ธ PlatformTransactionManager๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌ์ฒด์ ์ธ ์„œ๋น„์Šค ํด๋ž˜์Šค๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•œ๋‹ค. JTA๋ฅผ ์ด์šฉํ•ด ํŠธ๋žœ์žญ์…˜์„ ์ ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด JtaTransactionManager๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  JTA ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์„ค์ •์„ ํ”„๋กœํผํ‹ฐ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

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

 


์ถœ์ฒ˜ : http://toby.epril.com

ํ† ๋น„์˜ ์Šคํ”„๋ง 3.1 - ์ด์ผ๋ฏผ ์ง€์Œ ์ฝ๊ณ 

ํ•œ๊ธ€ ๋ฌธ์„œ PDF ํŒŒ์ผ

spring-reference-rogerrb.pdf


728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'Framework/spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Spring Boot 3.0 Release Notes
  • spring AcceptHeaderLocaleResolver(๋‹ค๊ตญ์–ด) properties ์„ค์ •
  • spring 3 tiles 2 ์„ค์ • ๊ด€๋ จ
  • spring์„ค์ • ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ์Œ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ผ์ƒ, ๊ฒŒ์ž„, ๋ง›์ง‘, ์—ฌํ–‰, ๊ฐœ๋ฐœ, IT ๋ธ”๋กœ๊ทธ๐Ÿงž
  • ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
    ์š”์ˆ  ๋žจํ”„๐Ÿซ–
    ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (549)
      • Languages (57)
        • JAVA (13)
        • JSP (1)
        • C_C++ (4)
        • Html (3)
        • CSS (1)
        • JavaScript (18)
        • Python (3)
        • Kotlin (13)
        • TypeScript (1)
      • Framework (14)
        • spring (11)
        • jstl (1)
        • angular (2)
      • Tool (28)
        • Eclipse (5)
        • vsCode (3)
        • scrcpy (2)
        • Git (1)
        • IntelliJ (6)
        • Visual-studio (1)
        • UML (1)
        • Gradle (8)
      • DB (6)
        • Oracle (1)
        • MySql (3)
        • Mongo (2)
      • OS (14)
        • Linux (2)
        • Windows (12)
      • Server (8)
        • Tomcat (1)
        • Apache (1)
        • Node.js (6)
      • Programmings (25)
        • Design Pattern (2)
        • Funny (20)
        • Algorithms (3)
      • Cloud (8)
        • Docker (1)
        • Kubernetes (4)
        • Istio (1)
        • ArgoCD (2)
      • IT (5)
        • gRPC (3)
        • RESTful (3)
        • Web UI (5)
        • AI (4)
      • Book (6)
      • TIP (187)
      • Life (53)
      • Game (83)
      • Storage (22)
      • ์‹๋‹น (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ์‚ฌ์ดํŠธ๋งต
    • RSS
    • ๊ธฐํƒ€ ์†Œ๋“
  • ๋งํฌ

    • ๊ตฌ๊ธ€
    • ๋„ค์ด๋ฒ„
    • ์ •๋ถ€24
    • Spring Framework ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • Kotlin ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • ์นด์นด์˜ค ์• ๋“œํ•
    • ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ๋งต
    • ๋ธ”๋กœ๊ทธ RSS
  • ๊ณต์ง€์‚ฌํ•ญ

    • ์•ˆ๋…•ํ•˜์„ธ์š”
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ธŒ๋ฆฌํ•‘
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ๋‚˜์šฐ
    ๋ฐ์ผ๋ฆฌ ๋‰ด์Šค
    ๋‰ด์Šค
    ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
    ํ€˜์ŠคํŠธ
    ํƒœ๊ตญ
    ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ์™€์ผ์ฆˆ
    ์˜ค๋Š˜์˜๋‰ด์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์Šคํ”„๋ง(spring)์ด๋ž€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”