AOP(๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ)๋ ์ฝ๋์ ๋ชจ๋ํ๋ฅผ ์ด์งํ๋ ๋์์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ๊ต์ฐจ ๋ฌธ์ ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ํด๊ฒฐํ์ฌ ๋ฌธ์ ์ ๋ถ๋ฆฌ๋ฅผ ๋์ด๊ณ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ๋ ๊ณ ๋๋ก ์ ๋ฌธํ๋ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋๋ค. ์ด๋ฌํ ๊ต์ฐจ ๋ฌธ์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ง๊ตํ์ง๋ง ๋ก๊น , ์ธ์ฆ, ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฐ ๋ณด์๊ณผ ๊ฐ์ ์ด์์ ํ์์ ์ธ ๊ธฐ๋ฅ์ ๋ํ๋ ๋๋ค. ๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ ์ ๊ทผ ๋ฐฉ์์์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ์ฝ๋๋ฅผ ๋ถ์ฐ์์ผ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ๋๊ฐ ์ํค๊ณ ๋ชจ๋์ฑ์ด ์ ํ๋ฉ๋๋ค.
AOP์์ ์ด๋ฌํ ํฌ๋ก์ค์ปคํ ๋ฌธ์ ๋ ๊ธฐ๋ณธ ๋น์ฆ๋์ค ๋ก์ง ์ฝ๋๋ฅผ ์์ ํ ํ์ ์์ด ์ ์๋๊ณ ๊ตฌ์ฑ๋๋ ์ธก๋ฉด์ด๋ผ๋ ๋ณ๋์ ๋ชจ๋๋ก ์บก์ํ๋ฉ๋๋ค. AOP์ ํต์ฌ์๋ ์ธก๋ฉด ์ฝ๋๊ฐ ๊ธฐ๋ณธ ์ฝ๋์ ํตํฉ๋๋ ์คํ ์ง์ ์ ๋ํ๋ด๋ ์กฐ์ธ ํฌ์ธํธ ๊ฐ๋ ์ด ์์ต๋๋ค. AOP๋ ํฌ๋ก์ค์ปคํ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๊ณ ์บก์ํํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ์์ ํ๊ณ ํ์ฅํ ์ ์๋๋ก ํ์ฌ ๊ฐ๋ฐ ๋ฐ ์ ์ง ๊ด๋ฆฌ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
AOP์ ๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ๊ฐ๋ ์ ํด๋์ค, ๋ฉ์๋ ๋๋ ํ๋ ์์ค๊ณผ ๊ฐ์ ์ปจํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ธ ํฌ์ธํธ๋ฅผ ์ผ์น์ํค๊ธฐ ์ํ ๊ธฐ์ค์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ํฌ์ธํธ์ปท์ ๋๋ค. ํฌ์ธํธ์ปท์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ธ์ ์ด๋์ ์ธก๋ฉด์ ์ ์ฉํ ์ง ๊ฐ๊ฒฐํ๊ฒ ์ค๋ช ํ ์ ์๋๋ก ํ๋ ํจํด๊ณผ ์ฐ์ฐ์๋ก ๊ตฌ์ฑ๋ ํํ์์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ถ๊ฐ ๋์์ ์ฃผ์ ํ๊ธฐ ์ํ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ๋ณด์ฅํฉ๋๋ค. ๊ธฐ๋ณธ ์ฝ๋์ ์ธก๋ฉด์ ์ค์ ํตํฉ์ ์คํํ๊ธฐ ์ํด AOP๋ ์ปดํ์ผ ์๊ฐ, ๋ก๋ ์๊ฐ ๋๋ ๋ฐํ์ ๋์ ์ธก๋ฉด๊ณผ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ๊ฒฐํฉํ๋ ํ๋ก์ธ์ค์ธ ์๋น์ ํ์ฉํ์ฌ ์ํ๋ ์ธก๋ฉด ๊ธฐ๋ฅ์ ํฌํจํ๋ ์ปดํ์ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ญ๋๋ค.
AOP๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ(FP)๊ณผ ๊ฐ์ ๋ค๋ฅธ ํจ๋ฌ๋ค์์ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ํฌ๋ก์ค์ปคํ ๋ฌธ์ ๋ก ์ธํด ๋ฐ์ํ๋ ํ๊ณ์ ์ด๋ ค์์ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ณ๋ ๋ณด์์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. AOP๋ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉ๋์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋์ฑ, ํ์ฅ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. AOP๋ฅผ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ํตํฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ๋ฐ์ ์ธ ์ฝ๋ ํ์ง์ ํฅ์ํ๊ณ ์์ฐ์ฑ์ ๋์ผ ๋ฟ๋ง ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด ์์ ๋น์ฉ์ ์ค์ผ ์ ์์ต๋๋ค.
AOP๋ฅผ ์ง์ํ๊ธฐ ์ํด Java์ฉ AspectJ, C++์ฉ AspectC++, .NET์ฉ PostSharp ๋ฑ ์ฌ๋ฌ ์ธ์ด์ ํ๋ ์์ํฌ๊ฐ ๊ฐ๋ฐ๋์์ต๋๋ค. ๋ํ Python, Ruby ๋ฐ JavaScript์ ๊ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ธ์ด์๋ Aspect.py, Aquarium, Aspect-R ๋ฐ Aspect.js์ ๊ฐ์ด AOP ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๋ ์์ต๋๋ค.
AppMaster ํ๋ซํผ์ ๋งฅ๋ฝ์์ AOP๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ์ฉํ์ฌ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ต์ฐจ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๋ ๋ก๊น , ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง, ์บ์ฑ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์ ์ ์ฒ๋ฆฌํ๋ ์ธก๋ฉด์ ์์ฑํ์ฌ ๋ณด๋ค ๋ชจ๋ํ๋๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. AOP ์์น์ ์ฑํํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๊ณ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ค๋ ํ๋ซํผ์ ๋ชฉํ์ ๋ง์ถฐ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด์ ์ค์ผ ์ ์์ต๋๋ค. ๋ํ AOP๋ AppMaster ๊ณ ๊ฐ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ๋น์ฆ๋์ค ๋ก์ง์์ ๊ต์ฐจ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํจ์ผ๋ก์จ ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ ์์ค ์๊ตฌ ์ฌํญ์ ํด๊ฒฐํ ์ ์๋๋ก ํด์ค๋๋ค.
์์ฝํ๋ฉด, ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ต์ฐจ ๊ด์ฌ์ฌ๋ฅผ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ๊ณ ๋ชจ๋ํํ์ฌ ์ฝ๋ ํ์ง์ ํฅ์ํ๊ณ ์์ฐ์ฑ์ ๋์ด๋ฉฐ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ด๋ ๊ฐ๋ ฅํ ํจ๋ฌ๋ค์์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์๊ณผ ํจ๊ป AOP๋ฅผ ํ์ฉํ์ฌ ๊ธฐ๋ฅ์ด ํ๋ถํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. AppMaster ํ๋ซํผ์ AOP ์์น์ ํตํฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ต์ ์ ๋ชจ๋์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ ์์ค์ ๋ณด์ฅํ๋ฉด์ ํ๋ ๋น์ฆ๋์ค์ ๋์์์ด ๋ณํํ๋ ์๊ตฌ ์ฌํญ์ ๋์ฒํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. AOP๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋๊ตฌ ์์์ ์๋ ๊ท์คํ ์์ฐ์ด๋ฉฐ ์ผ์ฌ์ฐจ๊ณ ๋ฏธ๋ ์งํฅ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ํ๋ก์ ํธ์ ํ์์ ์ธ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค.