๐งฉ ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ: ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ ๋น๋ฐ
์๋ ํ์ธ์! ์์ฆ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ‘์ ์ฐ์ฑ’๊ณผ ‘ํ์ฅ์ฑ’์ ๋นผ๋์ ์ ์๋ ํค์๋๊ฐ ๋์์ฃ . ๋น ๋ฅด๊ฒ ๋ณํ๋ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ์์คํ ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ๊ณ , ํ์ํ ๋๋ง๋ค ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๊ฒ์ด ์ค์ํด์ก์ด์. ์ด๋ฐ ๋ฐฐ๊ฒฝ์์ ‘์ปดํฌ์ ๋ธ ์ํคํ ์ฒ(Composable Architecture)’๋ผ๋ ๊ฐ๋ ์ด ์ฃผ๋ชฉ๋ฐ๊ณ ์๋๋ฐ์, ์ค๋์ ์ด ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๊ฐ ๋ฌด์์ธ์ง, ์ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์๋์ง ํจ๊ป ๊ณต๋ถํด๋ดค์ต๋๋ค!
๐ก ํต์ฌ ๊ฐ๋ ์ค๋ช : ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๋ ๋ฌด์์ธ๊ฐ?
์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๋ฅผ ํ๋ง๋๋ก ์ค๋ช ํ๋ฉด, ‘๋ ๊ณ ๋ธ๋ก์ฒ๋ผ ์กฐ๋ฆฝ ๊ฐ๋ฅํ ์์คํ ’์ด๋ผ๊ณ ํ ์ ์์ด์. ๊ฐ ๊ธฐ๋ฅ์ ๋ ๋ฆฝ์ ์ธ ‘์ปดํฌ๋ํธ’๋ก ๋ง๋ค๊ณ , ํ์์ ๋ฐ๋ผ ์ด ์ปดํฌ๋ํธ๋ค์ ์กฐํฉํ๊ฑฐ๋ ๊ต์ฒดํ์ฌ ์ ์ฒด ์์คํ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด์ฃ . ๋ง์น ๋ ๊ณ ๋ธ๋ก์ผ๋ก ์ฑ์ ๋ง๋ค๋ค๊ฐ, ์ง๋ถ์ด ๋ง์์ ์ ๋ค๋ฉด ์ง๋ถ ๋ธ๋ก๋ง ๋ฐ๊ฟ ๋ผ์ฐ๋ ๊ฒ์ฒ๋ผ์.
์ด ์ํคํ ์ฒ์ ํต์ฌ์ ๋ฐ๋ก ๋์จํ ๊ฒฐํฉ(Loose Coupling)๊ณผ ๋์ ์์ง๋(High Cohesion)์ ๋๋ค. ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ ์๋ ๊ธฐ๋ฅ์ ์ํํ๊ณ (๋์ ์์ง๋), ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ์ ์์กด์ฑ์ ์ต์ํํ๋ (๋์จํ ๊ฒฐํฉ) ๊ฒ์ด ์ค์ํด์. ์ด๋ ๊ฒ ํ๋ฉด ํน์ ์ปดํฌ๋ํธ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ๋ ๋ณ๊ฒฝ์ด ํ์ํ ๋, ์ ์ฒด ์์คํ ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋ฉด์ ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ๋์ํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๊ฐ ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ๊ผฝํ์. ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ํ๋์ ์ปดํฌ๋ํธ๊ฐ ๋๋ ๊ฑฐ์ฃ . ์๋ฅผ ๋ค์ด, ์จ๋ผ์ธ ์ผํ๋ชฐ์ ์๊ฐํด๋ณผ๊ฒ์. ‘๊ฒฐ์ ์๋น์ค’, ‘์ฃผ๋ฌธ ์๋น์ค’, ‘์ํ ์ถ์ฒ ์๋น์ค’ ๋ฑ์ด ๊ฐ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ๊ฐ ๋ ์ ์์ต๋๋ค.
# ๊ฐ์์ ์ปดํฌ์ ๋ธ ์์คํ
๊ตฌ์ฑ
Component: PaymentService {
Input: OrderDetails, UserInfo
Output: PaymentConfirmation
DependsOn: [UserService]
}
Component: OrderService {
Input: UserRequest, ProductDetails
Output: OrderConfirmation
DependsOn: [InventoryService, PaymentService]
}
Component: RecommendationService {
Input: UserHistory
Output: RecommendedProducts
DependsOn: [ProductService, UserProfileService]
}
์ด์ฒ๋ผ ๊ฐ ์๋น์ค๊ฐ ๋ช ํํ ์ญํ ๊ณผ ์ฑ ์์ ๊ฐ์ง๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์๋๊ธฐ ๋๋ฌธ์, ๊ฒฐ์ ์๋น์ค๋ง ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋, ์๋ก์ด ์ถ์ฒ ์๋น์ค๋ฅผ ์ถ๊ฐํ๋๋ผ๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์์ด์.
๐ ์ค์ ์์ : ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๋ ์ด๋์ ์ฐ์ผ๊น?
์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๋ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๊ณ ์์ต๋๋ค.
1. ์ด์ปค๋จธ์ค ํ๋ซํผ
์์ ์์๋ก ๋ ์จ๋ผ์ธ ์ผํ๋ชฐ์ฒ๋ผ, ์ด์ปค๋จธ์ค๋ ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ์ ๋ํ์ ์ธ ์ ์ฉ ์ฌ๋ก์ ๋๋ค. ์ํ ๊ด๋ฆฌ, ์ฃผ๋ฌธ ์ฒ๋ฆฌ, ๊ฒฐ์ , ๋ฐฐ์ก, ๊ณ ๊ฐ ์๋น์ค ๋ฑ ์๋ง์ ๊ธฐ๋ฅ์ด ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ง๋ง, ๊ฐ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๊ตฌ์ฑํ์ฌ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ์์ฅ ์๊ตฌ์ ๋์ํ๊ณ ์์ด์. ์๋ฅผ ๋ค์ด, ํน์ ๊ฒฐ์ ์์คํ ์ ๋ฌธ์ ๊ฐ ์๊ฒจ๋ ๋ค๋ฅธ ์๋น์ค๋ ์ ์์ ์ผ๋ก ์ด์๋ ์ ์๋๋ก ํ๋ ๊ฒ์ด์ฃ .
2. ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ (CMS)
์ต๊ทผ์๋ ์น์ฌ์ดํธ๋ ์ฑ์ ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๋ CMS๋ ์ปดํฌ์ ๋ธํ๊ฒ ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์. ‘ํค๋๋ฆฌ์ค CMS’๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋๋ฐ, ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฑ์๋ ๋ถ๋ถ๊ณผ, ์ค์ ๋ก ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ํ๋ก ํธ์๋ ๋ถ๋ถ์ด ๋ถ๋ฆฌ๋์ด ์์ด์. ๋๋ถ์ ์น, ๋ชจ๋ฐ์ผ ์ฑ, ์ค๋งํธ์์น ๋ฑ ์ด๋ค ๊ธฐ๊ธฐ๋ ํ๋ซํผ์๋ ๋์ผํ ์ฝํ ์ธ ๋ฅผ ์ ์ฐํ๊ฒ ์ ๊ณตํ ์ ์์ต๋๋ค.
3. ๋ฐ์ดํฐ ๋ถ์ ๋ฐ AI ํ๋ซํผ
๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ AI ๋ชจ๋ธ์ ํ์ต์ํค๋ ํ๋ซํผ์์๋ ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๊ฐ ์ค์ํด์. ๋ฐ์ดํฐ ์์ง, ์ ์ฒ๋ฆฌ, ๋ชจ๋ธ ํ์ต, ๋ฐฐํฌ, ๋ชจ๋ํฐ๋ง ๋ฑ ๊ฐ ๋จ๊ณ๋ฅผ ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑํ์ฌ ํ์์ ๋ฐ๋ผ ํ์ดํ๋ผ์ธ์ ์ ์ฐํ๊ฒ ๋ณ๊ฒฝํ๊ณ ํ์ฅํ ์ ์์ต๋๋ค. ์๋ก์ด ๋ฐ์ดํฐ ์์ค๊ฐ ์ถ๊ฐ๋๊ฑฐ๋, ๋ชจ๋ธ์ด ์ ๋ฐ์ดํธ๋์ด๋ ์ ์ฒด ์์คํ ์ ์ฌ๋ฐฐํฌํ ํ์ ์์ด ํด๋น ์ปดํฌ๋ํธ๋ง ์์ ํ๋ฉด ๋ฉ๋๋ค.
โจ ๋ง๋ฌด๋ฆฌ: ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ, ๋ฏธ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํต์ฌ!
์ปดํฌ์ ๋ธ ์ํคํ ์ฒ๋ ๋จ์ํ ๊ธฐ์ ์ ์ธ ์ ํ์ ๋์ด, ํ๋ ์ํํธ์จ์ด ์์คํ ์ด ์ง๋ฉดํ ๋ณต์ก์ฑ๊ณผ ๋ณํ์ ๋์ํ๊ธฐ ์ํ ํ์์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํด์. ์ด๊ธฐ ์ค๊ณ ๋จ๊ณ์์ ๋ ๋ง์ ๊ณ ๋ฏผ๊ณผ ๋ ธ๋ ฅ์ด ํ์ํ ์ ์์ง๋ง, ์ฅ๊ธฐ์ ์ผ๋ก๋ ์์คํ ์ ์์ ์ฑ, ํ์ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ๊ฐ๋ ฅํ ๋ฌด๊ธฐ๊ฐ ๋ ๊ฒ์ ๋๋ค.
์ ๋ ์ด๋ฒ ๊ธฐํ์ ์ปดํฌ์ ๋ธ ์ํคํ ์ฒ์ ์ค์์ฑ์ ๋ค์ ํ๋ฒ ๊นจ๋ฌ์๊ณ , ์์ผ๋ก ๊ฐ๋ฐํ ๋ ์ด ๊ฐ๋ ์ ์ ๊ทน์ ์ผ๋ก ์ ์ฉํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ์์คํ ์ ๊ฟ๊พธ๋ ๋ชจ๋ ๊ฐ๋ฐ์ ๋ถ๋ค์๊ฒ ์ด ๊ธ์ด ์์ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค์!