๊ฐ์ ํ๋๋ก ์์ฑํ๋
๋ง์ดํฌ๋ก์๋น์ค ๊ตฌํ ์ํคํ
์ฒ 3๋์ฅ!
* ๊ฐ์ ์ ๋
ธ๋ ฅํ๊ณ ์์ผ๋ ์ผ๋ถ ๋์์์ ์์ง์ด ์ ์ข๊ณ , ์ฝ๋์ ๋ฒ๊ทธ(์คํ)๊ฐ ์์ ์ ์์ต๋๋ค. ์คํ ๋ฐ ๊ฐ์ ์ ์ ์ ์ํด ์ฃผ์๋ฉด ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ค์ ์ฝ๋๋ก ๋ณด๊ณ ๋ฐฐ์ฐ๋
MSA ํต์ฌ 3๊ฐ์ง ์ํคํ
์ฒ
(1) ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ (2) ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ (3) ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ฅผ ํตํด ๊ธฐ์ ์ ์ ์ฐํ๋ฉด์๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํด ์ ์ง๋ณด์์ฑ์ด ๋์ผ๋ฉฐ, ์์กด์ฑ์ด ๋ฎ์ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌํ์ ๋ํด ์์๋ด
๋๋ค.
์, ํน์ ๋ด ์๊ธฐ ์๋๊ฐ์?
๐ฅ
MSA์ ๋๋ต์ ์ธ ๊ฐ๋
์ ์ดํดํ๊ธด ํ๋๋ฐ, ๋ง์ ์ด๋ป๊ฒ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๊ตฌํํด์ผ ํ ์ง ๋ง๋งํด์
๐
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๊ฐ ํฅ์ฌ๊ณ ๋, EDA์ ๊ด๋ จ์ด ์๋ค๊ณ ํ๋๋ฐ ๊ตฌํ์ ์ด๋ป๊ฒ ์ ์ฉํด์ผ ํ๋์?
๐ต
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ ๊ฐ์ข๋ฅผ ๋ฃ๊ณ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ค๊ณํ๊ธด ํ๋๋ฐ ์ค์ ๋ก ๊ตฌํ์ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง ๋ง๋งํ๋ค์.
MSA ๊ตฌ์กฐ์์ ๊ฐ์ฅ ๋ง์ด ๊ฑฐ๋ก ๋๋ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ, ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ, ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ
์ฒ ๋ฑ์ ๋ํด ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ๋
์ /์ด๋ก ์ ์ผ๋ก ๋ง์ด ์ ํ๊ณ ์์ต๋๋ค. ํ์ง๋ง, ๋ง์ ์ค์ ๋ก ์ด๋ป๊ฒ ์ ์ฉํ ๊น๋ฅผ ์๊ฐํ๋ฉด ๋ง๋งํ๊ธฐ ๊ทธ์ง์๊ธฐ ๋ง๋ จ์
๋๋ค.
๋ณธ ๊ฐ์๋ MSA ๊ฐ๋
๊ณผ ์ํคํ
์ฒ/์ค๊ณ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ ์ด์ ๊ฐ์๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ ์ค์ต ์ค์ฌ ๊ฐ์๋ก
์ด์ ๊ฐ์์์ ์ ์ํ ์์ ์ค์ต ์ํคํ
์ฒ ๋ฐ ์ค๊ณ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก DDD, ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ, EDA๋ฅผ ์ด๋ป๊ฒ ํจ๊ณผ์ ์ผ๋ก ์ ๋ชฉํ ์ ์์์ง์ ๋ํด ์ค์ ์ฝ๋๋ก ๊ตฌํํ๊ณ ์ค๋ช
ํฉ๋๋ค. ๋ํ ๋ง์ง๋ง์๋ EDA ๊ตฌํ์ ํ์ค์ ๋ฌธ์ ์ธ ๋ถ์ฐ ํธ๋์ญ์
์ ์ํ SAGA ํจํด๋ ์ ์ฉํด ๋ด
๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๊ตฌํ์์ ๊ฐ์ฅ ํซํ ๊ธฐ๋ฒ 3๊ฐ์ง ๐ณ
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ
(Domain-Driven Design, DDD)
๋น์ฆ๋์ค ์ ๋ต, ๋๋ฉ์ธ ํจํด์ ์ค์ฌ์ผ๋ก ์ํํธ์จ์ด ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก
ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ
(Hexagonal Architecture)
๋๋ฉ์ธ ์ค์ฌ์ผ๋ก ์์กด์ฑ์ ํ๋ฆ์ด ์ธ๋ถ๋ก ๋๊ฐ์ง ์๋๋ก ๊ด๋ฆฌํ๋ ์ํคํ
์ฒ ํจํด
์ด๋ฒคํธ ์ฃผ๋ ์ค๊ณ
(Event Driven Architecuture)
ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ถ์ฐ ๋น๋๊ธฐ ์ํคํ
์ฒ
์ด ๊ฐ์๋ง์
ํน์ง์ ํ์ธํ์ธ์ ๐
- ์ค๋ ์ค๋ฌด์์ ๊ฒฝํ์ ๊ธฐ๋ฐํ ์์ํ ํ์ฅ์ ๋ ๊ฒ ๊ทธ๋๋ก ๊ฐ์ํฉ๋๋ค. ๐
- ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ/๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ด์์ ์งํฅํ๋, ํ์ค์ ๋ฐ์ํ ์ ๊ทผ ๋ฐฉ์์ ์ ์ํฉ๋๋ค.
- ๋ณธ ๊ฐ์๋ ๊ฐ๋
๋ณด๋ค๋ ๋์๋์ฌ์์คํ
์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ก ๊ตฌํํ๋ ์ค์ต ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ค์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์ ์ ์ฉ๋๋ ๋ฐ๋ํ ํ์ฅ์ ๊ธฐ์ค, ํ๋จ(?) ๊ธฐ๋ฒ๋ค์ ์๊ฐํฉ๋๋ค.
๊ทธ๋์, ์ด๋ฐ ๋ถ๋ค๊ป ๋์์ด ๋ฉ๋๋ค! ๐โโ๏ธ
์ ์ฐํ๊ณ ํ์ฅ์ฑ ์๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ๋์
ํ๊ณ ์ ํ๋ ๊ธฐ์ /์ค๊ณ ๋ฆฌ๋
ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ๋ฅผ ๋ง์ดํฌ๋ก์๋น์ค์ ์ ์ฉํ๊ณ ์ ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD) ๋ฐ ๊ตฌํ์ ๊ด์ฌ์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์
์, ์ด์ ๊ตฌํํด ๋ด
์๋ค!
๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ ๐ป
์ค์ต ๋๋ฉ์ธ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์ฑ๋๋ฅผ ํตํด ๊ตฌํ ์ํคํ
์ฒ ์ดํด
์ค์ต ๋๋ฉ์ธ์ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค ๋ณ ์ฑ๊ฒฉ, ๊ตฌ์ฑ ์คํ, ๋ง์ดํฌ๋ก ์๋น์ค ๊ฐ์ ํต์ ๊ด๊ณ๋ฅผ ์์๋ด
์๋ค.
๊ณ ๊ฐ์ฉ์ฑ ํ์ฅ์ฑ ๋์ : ์ด๋ฒคํธ ๋ธ๋ก์ปค
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ํ์ ์์์ธ ์ด๋ฒคํธ ๋ธ๋ก์ปค์ ํน์ง์ ์ค๋ช
ํ๊ณ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ํต์ ์ ์ํด ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํฉ๋๋ค.
ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ ๊ตฌํ ๋ฐฉํฅ ์ ์
ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ์ 3๊ฐ์ง ํฅ์ฌ๊ณค ์ ํ์ ์ค๋ช
ํ๊ณ ์ํคํ
์ฒ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ์คํ๋ง ๋ถํธ ํจํค์ง ๊ตฌ์กฐ๋ฅผ ์ค๋ช
ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฐํ ๋ง์ดํฌ๋ก์๋น์ค ๋ด๋ถ ๊ตฌ์กฐ ๋ฅผ ์ ์ํ ์ ์๋ ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ ๊ตฌํ
์ ํต์ ์ธ ๋ ์ด์ด๋ ์ํคํ
์ฒ(Layered Architecture)์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ(Hexagonal Architecture)๋ฅผ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ตํฉํ์ฌ ๊ตฌํํ๋ ๋ฐฉ์์ ์ค๋ช
ํ๊ณ ์ฃผ์ ๊ตฌ์ฑ์์๋ฅผ ์์ธํ ์์๋ด
๋๋ค.
๋๋ฉ์ธ ๋ชจ๋ธ ๊ตฌํ
๋์ ๋์ฌ ์์คํ
์ด๋ ์ฃผ์ ๋ฅผ ๊ฐ์ง๊ณ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(์ ์ ์ ์ค๊ณ)๋ก ๋ชจ๋ธ๋ง ํ ๋ง์ดํฌ๋ก์๋น์ค ๋ณ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ค๋ช
ํ ๋ค์ ์ค์ ์ฝ๋๋ก ๊ตฌํํด ๋ด
๋๋ค.
์ด๋ฒคํธ ์ฃผ๋ ์ํคํ
์ฒ ๊ตฌํ
์ด๋ฒคํธ ์คํ ๋ฐ์ ํตํด ์๋ณ๋ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ์ ๋น๋๊ธฐ ํต์ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํ์ฌ ์ด๋ฒคํธ ํ๋ฆ์ผ๋ก ์ค๊ณํ๊ณ ์นดํ์นด(Kafka)๋ฅผ ํ์ฉํด ๊ตฌํํฉ๋๋ค.
SAGA ๊ตฌํ
๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ๋ถ์ฐ ํธ๋์ญ์
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ํ์ ์ธ MSA ํจํด์ธ SAGA ํจํด์ ์นดํ์นด ์ด๋ฒคํธ ๋ธ๋ก์ปค๋ฅผ ํ์ฉํ์ฌ ๊ตฌํํด ๋ด
๋๋ค.
๊ทธ๋์, ์ด๋ฐ ๊ฑธ ํ ์ ์๊ฒ ๋ฉ๋๋ค! ๐
- ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ๋ฅผ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํด ์ด๋ป๊ฒ ์ ์ฉํด์ผ ํ ์ง ์ ์ ์์ต๋๋ค.
- ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ์ฃผ์ ๊ฒฐ๊ณผ๋ฌผ์ธ ๋๋ฉ์ธ ๋ชจ๋ธ๊ณผ ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ๊ฐ ์ด๋ป๊ฒ ์ตํฉ๋๋์ง ์ดํดํ ์ ์์ต๋๋ค.
- ๊ฐ์ฅ ํ์ฅ์ฑ ๋์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋น๋๊ธฐ ํต์ ํ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฐํด ๋ณผ ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ํซํ ์ด์์ธ ๋ถ์ฐ ํธ๋์ญ์
์ ์ํ SAGA ํจํด์ ์ดํดํ๊ณ ๊ตฌํํ ์ ์์ต๋๋ค.
์ด ๊ฐ์์
์ง์๊ณต์ ์๋ ๐โโ๏ธ
23๋
์ฐจ ๊ฐ๋ฐ์, han jeong heon
- ํ ๋๊ธฐ์
SI ์ํํธ์จ์ด ์์ง๋์ด
- ๋ค์์ ๋๊ท๋ชจ ์ฐจ์ธ๋ ํ๋ก์ ํธ ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ๋ฐ ์ค๊ณ๋ฐฉ๋ฒ ๋ฆฌ๋ฉ
- ๋ช
์ง๋ ยท ์์ธ๊ณผํ๊ธฐ์ ๋ SW๊ณผ๋ชฉ ๊ฐ์, ํ๊ตญ์ ๋ณด๊ธฐ์ ์ฐ๊ตฌ์(KITRI), LG์ ์ MSA๊ณผ์ ๊ฐ์
- ๋ฉํฐ์บ ํผ์ค, ํ๊ตญํ์คํํ, ํ๊ตญํ์งํํ MSA ๊ณผ์ ๋ฉํ ๋ง
- ์ ๋ฌธ ๋ถ์ผ: ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก , ์ํํธ์จ์ด ์ํคํ
์ฒ/์ค๊ณ/๊ฐ๋ฐ ๊ธฐ๋ฒ
- ์ํค๋ถ์ค โ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ก ์์ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐโ ์ (2022)
- ๊ตญ๊ฐํ์๊ต์ก์งํฅ์ K-MOOC โMicroservice ์ค๊ณ ๋ฐ ๊ตฌํโ ๊ฐ์ข
โMicroservice ์ค๊ณ ๋ฐ ๊ตฌํโ ๊ฐ์ ๊ฐ๋ฐ โ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ก ์์ํ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐโ ์ ์
Q&A ๐ฌ
Q. ๊ฐ์์ ์ด๋ก : ์ค์ต ๋น์จ์ ์ด๋ ์ ๋์ธ๊ฐ์ ?
๋ณธ ๊ฐ์์ ์ด๋ก ์ ์กฐ๊ธ์ด๊ณ ๋๋ถ๋ถ ์ค์ต์ผ๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ์ด๋ก ์ ๋จผ์ ํ์ตํ๊ณ ์๊ฐํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ฉฐ ,์ด๋ก ๋ณ๋ก ๋ณ๋์ ๊ด๋ จ ๊ฐ์ข๋ฅผ ์๊ฐํด์ผ ํฉ๋๋ค. ^ ^;;
Q. ์ค๋ฌด ๊ฒฝํ์ด ์๋ ์ทจ์ค์ ๋๋ ๋น์ ๊ณต์๋ ๋ค์ ์ ์๋์?
ํด๋ผ์ฐ๋ ๊ฒฝํ์ด ์๋๋ผ๋ ์ค์ ๋ ๊ฑฐ์ ๊ฒฝํ์ด ์๋ ์ค๊ธ ์์ค์ ๊ฐ๋ฐ์๋ผ๋ฉด ์ ๊ทผํ ์ ์๋ ์์ค์
๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฌด ๊ฒฝํ์๋ผ ํ ์ง๋ผ๋ MSA, DDD, ์ํคํ
์ฒ์ ๋ํ ์ดํด๊ฐ ์์ด์ผ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ ๊ฒ๋๋ค.
Q. ์์
๋ด์ฉ์ ์ด๋ ์์ค๊น์ง ๋ค๋ฃจ๋์?
๋ณธ ๊ฐ์๋ ๊ธฐ ์ ์๋ ์๊ตฌ์ฌํญ์ ๊ทผ๊ฑฐํ ๋ฏธ๋ฆฌ ์ ์ํ ์ํคํ
์ฒ, ์ค๊ณ ๋ชจ๋ธ์ ๊ธฐ์ค์ผ๋ก ๊ตฌํ์ ์ง์คํ๋ ๊ฐ์์
๋๋ค. ๊ฐ ๋ฐฑ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ , ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ์ด๋ฒคํธ ํต์ ๊น์ง ๊ตฌํํฉ๋๋ค.
Q. ์์
์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์งํ๋๊ณ ์ด๋ป๊ฒ ํ์ตํ๋ ๊ฒ์ด ์ข์๊น์ ?
๊ฐ์์ ๋์ ๋์ฌ ์์คํ
์ ์ค์ฌ์ผ๋ก ๋ฐฑ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํ๋ํ๋ ๊ฐ์ด ๊ตฌํํ๋ ๋ฐฉ์์
๋๋ค. ์๊ฐ์์ ๊ฐ์ฌ๊ฐ ๊ฐ๋ฐํ๋ ์ฝ๋๋ฅผ ๋ณด๊ณ ํจ๊ป ๊ฐ๋ฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ์์ธ ๊ฒ ๊ฐ๋ค์. ๋ฐ๋ผํ ๋งํผ ์ถฉ๋ถํ ์ฒ์ฒํ ์งํํ๋ต๋๋ค. ^ ^ ;;
ํจ๊ป ๋ณด๋ฉด ์ข์ ๊ฐ์ ๐บ
๐พ ์๊ฐ ์ ์ฐธ๊ณ ์ฌํญ
- ๊ฐ์ ๋
น์ ์ฌ๊ฑด์ผ๋ก ์ธํด ์๊ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ์์ง์ด ๊ณ ๋ฅด์ง ์๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค. ์๊ฐ ์ [๋ฏธ๋ฆฌ๋ณด๊ธฐ] ์์
์ ๊ผญ ํ์ธํด์ฃผ์๊ธธ ๋ฐ๋๋๋ค.