DDD์ ํต์ฌ, ํ์คํ๊ฒ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด!
๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ
๋ ์ ์ฐํ๊ฒ, ๋ ๊ฐ๋ ฅํ๊ฒ.
์, ํน์ ๋ด ์๊ธฐ ์๋๊ฐ์?
๐ฅ
MSA์ ๋๋ต์ ์ธ ๊ฐ๋
์ ์ดํดํ๊ธด ํ๋๋ฐ, ๋ง์ ์ด๋ป๊ฒ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ชผ๊ฐ๊ณ ์ค๊ณํด์ผ ํ ์ง ๋ง๋งํ๊ณ ์ด๋ ต๊ธฐ๋ง ํด์.
๐
๋ง์ดํฌ๋ก์๋น์ค๋ ๊ณต๊ฐ์ ์ธ REST API๋ง ์์ผ๋ฉด ๋๋ ๊ฑฐ ์๋๊ฐ์? ๋ค๋ฅธ ์ด๋ค ์ค๊ณ๊ฐ ํ์ํ๊ฐ์?
๐ต
๋น๋๊ธฐ ์ด๋ฒคํธ ํต์ ์ด ๋ง์ด ์ฐ์ด๋ ๊ฒ ๊ฐ๋๋ฐ... ์ด๋ค ๋น์ฆ๋์ค ์ผ์ด์ค์ ํ์ฉํ๋์? ๋๊ธฐ/๋น๋๊ธฐ ํต์ ์ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ ์ค๊ณํ๋์?
MSA ๊ตฌ์กฐ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌํ๊ณ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ฌด์์ด ์ค์ํ ๊น์? ๋ฐ๋ก ๊ธฐ๋ฅ์ ์ผ๋ก ์์ง์ฑ ์๊ณ ๋ค๋ฅธ ์๋น์ค์ ์์กด๊ด๊ณ๊ฐ ์ ์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์๋ณํ๊ฒ ํ๋ ๊ฒ์
๋๋ค. ๋ํ ๋ง์ดํฌ๋ก์๋น์ค ๋ด๋ถ ๊ตฌ์กฐ ์ญ์ ๊ธฐ์ ๋ณํ์ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ฒ ํจ์ผ๋ก์จ ๋น์ฆ๋์ค ๋ณํ์ ๋ฏผ์ฒฉํ๊ฒ ๋์ํ๊ฒ๋ ํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋ชฉ์ ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ์ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD) ๊ธฐ๋ฒ์ด, ๊ทธ๋ฆฌ๊ณ ๋ด๋ถ ์ํคํ
์ฒ์ ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ์ด๋ฒ ๊ฐ์์์๋ ์ด๋ฌํ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ ๋ฐ ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ง์ฑ ์๊ณ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ์์ ๊ฐ์ฅ ํซํ ๊ธฐ๋ฒ 2๊ฐ์ง ๐ณ
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ
(Domain-Driven Design, DDD)
๋น์ฆ๋์ค ์ ๋ต, ๋๋ฉ์ธ ํจํด์ ์ค์ฌ์ผ๋ก ์ํํธ์จ์ด ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก
ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ
(Hexagonal Architecture)
๋๋ฉ์ธ ์ค์ฌ์ผ๋ก ์์กด์ฑ์ ํ๋ฆ์ด ์ธ๋ถ๋ก ๋๊ฐ์ง ์๋๋ก ๊ด๋ฆฌํ๋ ์ํคํ
์ฒ ํจํด
์ด ๊ฐ์๋ง์
ํน์ง์ ํ์ธํ์ธ์ ๐
- ์ค๋ฌด์์ ๊ฒฝํ์ ๊ธฐ๋ฐํ ์์ํ ํ์ฅ์ ๋ ๊ฒ ๊ทธ๋๋ก ๋ด์ ๋ชฉ์๋ฆฌ๋ก ๊ฐ์ํฉ๋๋ค. ๐
- ๋ง์ดํฌ๋ก์๋น์ค์ ์ด์์ ์งํฅํ๋, ํ์ค์ ๋ฐ์ํ ์ ๊ทผ ๋ฐฉ์์ ์ ์ํฉ๋๋ค.
- ๋ณธ ๊ฐ์๋ ๊ฐ๋
๊ณผ ์จ๋ผ์ธ ๋๊ตฌ๋ฅผ ํตํ ์ค์ต์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ค์ ๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ์ ํ์ฉ๋๋ ๋ฐ๋ํ ํ์ฅ์ ๊ธฐ์ค, ํ๋จ(?) ๊ธฐ๋ฒ๋ค์ ์๊ฐํฉ๋๋ค.
๊ทธ๋์, ์ด๋ฐ ๋ถ๋ค๊ป ๋์์ด ๋ฉ๋๋ค! ๐โโ๏ธ
๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ์
์ด๋ฒคํธ์คํ ๋ฐ์ ํ์ฉํ๊ณ ํ
๊ธฐ์ /์ค๊ณ ๋ฆฌ๋
๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ ๊ธฐ์ค ๋ฐ
๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผ ์ค์ธ
๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD) ๋ฐ
๊ตฌํ์ ๊ด์ฌ์๋
๋ฐฑ์๋ ๊ฐ๋ฐ์
์ด๋ก ์์ ์์ํด์
์ค์ต์ผ๋ก ์์๊ฐ๋
๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ ๐ป
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ๊ฐ๋
์ดํด
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ - ์ ๋ต์ ์ค๊ณ์ ์ฌ๋ฌ ๊ฐ๋
(๋๋ฉ์ธ ๋ชจ๋ธ, ์๋ธ๋๋ฉ์ธ, ์ ๋น์ฟผํฐ์ค ๋ญ๊ท์ง, ๋ฐ์ด๋๋ ์ปจํ
์คํธ)์ ๋ํด ์์๋ด
๋๋ค.
๊ฐ์ฅ ์ค์ฉ์ ์ธ ๋ง์ดํฌ๋ก์๋น์ค ๋์ถ ๊ธฐ๋ฒ: ์ด๋ฒคํธ ์คํ ๋ฐ
๊ฐ์ฅ ์ฝ๊ฒ ์ฌํํ ๋ง์ดํฌ๋ก์๋น์ค ๋์ถ ๊ธฐ๋ฒ์ธ ์ด๋ฒคํธ ์คํ ๋ฐ ์ํฌ์ต์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
๋ค์ํ ๋ง์ดํฌ๋ก์๋น์ค ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ ํจํด ์๊ฐ
๋ง์ดํฌ๋ก์๋น์ค ๋ด๋ถ์ ๋น์ง๋์ค ๋ก์ง์ ์ค๊ณํ๋ ์ฌ๋ฌ ํจํด(ํธ๋์ญ์
์คํฌ๋ฆฝํธ, ์กํฐ๋ธ ๋ ์ฝ๋, ๋๋ฉ์ธ ๋ชจ๋ธ ๋ฑ)์ ์ค๋ช
ํ๊ณ ์ด๋ค ์ ํ์ ํด์ผ ํ๋์ง ํ๊ตฌํฉ๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๋ด๋ถ ๊ตฌ์กฐ ์ ์๋ฅผ ์ํ ๋ค์ํ ๋ด๋ถ ์ํคํ
์ฒ ํจํด ์ดํด
์ ํต์ ์ธ ๋ ์ด์ด๋ ์ํคํ
์ฒ(Layered Architecture)์ ํ๊ณ์ ํฅ์ฌ๊ณ ๋, ํด๋ฆฐ ์ํคํ
์ฒ์ ํน์ง, ๋น๊ต๋ฅผ ํตํด ๋ฐ๋์งํ ๋ง์ดํฌ๋ก์๋น์ค ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํด ์๊ฐํด ๋ด
๋๋ค.
์ด๋ฒคํธ ์คํ ๋ฐ ์ํฌ์ต ์ค์ต
๋์๋์ฌ ์์คํ
์ด๋ ์ฃผ์ ๋ฅผ ๊ฐ์ง๊ณ ์จ๋ผ์ธ ๋๊ตฌ Miro๋ฅผ ํตํด ์ด๋ฒคํธ ์คํ ๋ฐ ์ํฌ์ต ์ค์ต์ ํด๋ด
๋๋ค.
์ปจํ
์คํธ ๋งคํ๋ ์์ฑ ์ค์ต
์ด๋ฒคํธ ์คํ ๋ฐ์ ํตํด ์๋ณ๋ ๋ฐ์ด๋๋ ์ปจํ
์คํธ์ ๊ด๊ณ๋ฅผ ์ ์ํ๊ณ ํ๋ณด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ ์ํฉ๋๋ค.
๋๋ฉ์ธ ๋ชจ๋ธ๋ง ์ค์ต
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ ์ ์ ์ค๊ณ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค์ ์ฌ์ฅ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ค๊ณ ํด ๋ด
๋๋ค.
๊ทธ๋์, ์ด๋ฐ ๊ฑธ ํ ์ ์๊ฒ ๋ฉ๋๋ค! ๐
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ ๋ต์ ์ค๊ณ/์ ์ ์ ์ค๊ณ์ ๊ฐ๋
์ ์ดํดํ ์ ์๊ณ ์ด๋ป๊ฒ ๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ์ ํ์ฉํ ์ง ์๊ฒ ๋ฉ๋๋ค.
- ์ด๋ฒคํธ ์คํ ๋ฐ์ ํตํด ์
๋ฌด์ ๋ถ์ํ๊ณ ๋ง์ดํฌ๋ก์๋น์ค ๋์ถ์ ํ์ฉํ ์ ์์ต๋๋ค.
- ๊ฐ๋ณ ๋ง์ดํฌ๋ก์๋น์ค์ ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ ํจํด ๋ฐ ๋ด๋ถ ์ํคํ
์ฒ ์คํ์ผ์ ๋ํ ๊ธฐ์ค์ ์ ์ํ ์ ์์ต๋๋ค.
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ - ์ ์ ์ ์ค๊ณ ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค ๋ด ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ค๊ณํ ์ ์์ต๋๋ค.
์ด ๊ฐ์์
์ง์๊ณต์ ์๋ ๐โโ๏ธ
23๋
์ฐจ ๊ฐ๋ฐ์, han jeong heon
- ํ ๋๊ธฐ์
SI ์ํํธ์จ์ด ์์ง๋์ด
- ๋ค์์ ๋๊ท๋ชจ ์ฐจ์ธ๋ ํ๋ก์ ํธ ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ๋ฐ ์ค๊ณ๋ฐฉ๋ฒ ๋ฆฌ๋ฉ
- ๋ช
์ง๋ ยท ์์ธ๊ณผํ๊ธฐ์ ๋ SW๊ณผ๋ชฉ ๊ฐ์, ํ๊ตญ์ ๋ณด๊ธฐ์ ์ฐ๊ตฌ์(KITRI), LG์ ์ MSA๊ณผ์ ๊ฐ์
- ๋ฉํฐ์บ ํผ์ค, ํ๊ตญํ์คํํ, ํ๊ตญํ์งํํ MSA ๊ณผ์ ๋ฉํ ๋ง
- ์ ๋ฌธ ๋ถ์ผ: ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก , ์ํํธ์จ์ด ์ํคํ
์ฒ/์ค๊ณ/๊ฐ๋ฐ ๊ธฐ๋ฒ
- ์ํค๋ถ์ค โ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ก ์์ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐโ ์ (2022)
- ๊ตญ๊ฐํ์๊ต์ก์งํฅ์ K-MOOC โMicroservice ์ค๊ณ ๋ฐ ๊ตฌํโ ๊ฐ์ข
โMicroservice ์ค๊ณ ๋ฐ ๊ตฌํโ ๊ฐ์ ๊ฐ๋ฐ
โ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ก ์์ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐโ ์ถ๊ฐ
Q&A ๐ฌ
Q. ๊ฐ์์์ ์ด๋ก ๊ณผ ์ค์ต์ ๋ชจ๋ ํด๋ณด๋์?
๋ณธ ๊ฐ์์ ์ด๋ฐ๋ถ์์๋ ์ด๋ก ์, ํ๋ฐ๋ถ์์๋ ์ค์ต์ ๋ค๋ฃน๋๋ค. ๋๋ต์ ์ธ ๊ฐ๋
์ ์ดํดํด๋ณธ ๋ค์ ์ค์ต์ ํตํด ์ด๋ป๊ฒ ๊ธฐ์ ๋ค์ด ์ฐ์ด๋์ง ์ดํดํ ์ ์๋๋ก ๊ตฌ์ฑํ์์ต๋๋ค.
Q. ์ค๋ฌด ๊ฒฝํ์ด ์๋ ์ทจ์ค์ ๋๋ ๋น์ ๊ณต์๋ ๋ค์ ์ ์๋์?
ํด๋ผ์ฐ๋ ๊ฒฝํ์ด ์๋๋ผ๋ ์ค์ ๋ ๊ฑฐ์ ๊ฒฝํ์ด ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด ์ ๊ทผํ ์ ์๋ ์์ค์
๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฌด ๊ฒฝํ์ด ์๋ค๋ฉด ์ฉ์ด ๋ฑ์ ์ด๋ ค์์ ๊ฒช์ ์๋ ์์ต๋๋ค. ๋ค๋ง ๋น์ ๊ณต์๋ผ๋ ๋ถํธ์บ ํ๋ฅผ ์ด์ํ ๊ฒฝํ์ด ์๋ค๋ฉด ๋ฌด๋ํ๊ฒ ์๊ฐํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
Q. ์์
๋ด์ฉ์ ์ด๋ ์์ค๊น์ง ๋ค๋ฃจ๋์?
๋ณธ ๊ฐ์๋ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ฅผ ์ํ ๋ง์ดํฌ๋ก์๋น์ค์ ์ ๋ฐ์ ์ธ ์ด๋ก ์ ๋ฐฐ์ฐ๊ณ , ์ค์ ์
๋ฌด ์์ ๋ฅผ ํตํด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋์ถํ๋ฉฐ ๊ทธ ๋ด๋ถ๋ฅผ ์ค๊ณํด ๋ด
๋๋ค. ๊ตฌํ์ ๋ณ๋ ๊ณผ์ ์ผ๋ก ์ค๋นํ๊ณ ์์ต๋๋ค.
ํจ๊ป ๋ณด๋ฉด ์ข์ ๊ฐ์ ๐บ