New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
์คํ๋ง์ ์ ์
์๋ฐ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์ ํธํ๊ฒ ํด์ฃผ๋ ์คํ์์ค ๊ฒฝ๋๊ธ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ
์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ
ํน์ ๊ณ์ธต์ด๋ ๊ธฐ์ , ์
๋ฌด ๋ถ์ผ์ ๊ตญํ๋์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์์ญ์ ํฌ๊ดํ๋ ๋ฒ์ฉ์ ์ธ
ํ๋ ์์ํฌ๋ฅผ ๋งํ๋ค.
* ์คํ๋ง์ ๊ธฐ์์ 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 ํ์ผ