์ฐ์ํ ๋ชจ๋ ธ๋ฆฌ์ค
by JiwonDevhttps://www.youtube.com/watch?v=SrQeIz3gXZg&t=162s
๐ญ MSA๊ฐ ๋ฌด์กฐ๊ฑด ์ข์๊น?
๋น์ฐํ ์๋๋ค. ์๋ ํ๋์๋ ๊ฒ์ ์ฌ๋ฌ๊ฐ๋ก ์ชผ๊ฐ ๊ฒ์ด๋ค.
์ฆ ์๋ ํผ์์ ํด๊ฒฐํ๋ ๋ฌธ์ ๋ฅผ, ์ฌ๋ฌ ๋ถ๋ถ์์ ๋๋์ด์ ๊ฐ์ ์ ๋ฌํด์ผํ๋ค.
๊ธฐ๋ฅ์ด ๋ณต์กํด์ง๊ณ ์ฝ๋์ ๋ก์ง์ด ๋ถ์ฐ๋์ด์๋ค. โก ์๋ก์ด ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ๊ธฐ ์ด๋ ต๋ค.
์ด๊ฒ ํ ๊ฐ๋ฐ์, ํ ํ์์์ ์ผ์ด๋๋ ์ผ์ด๋ฉด ๊ทธ๋๋ง ๊ด์ฐฎ๋ค. ๊ท์ฐฎ๋๋ผ๋ ํ๋ฉด ๋๋๊น.
ํ์ง๋ง ํ์ ์ ํ๋ ์๋น์ค๊ฐ ๋ค๋ฅธ ํ์ ์๋น์ค๋ผ๋ฉด? ๋๊ท๋ชจ ์๋น์ค๋ผ์ ํ ๊ตฌ์ฑ์ด ๋ณต์กํ๋ค๋ฉด?
์ค์ ์๋น์ค๋ ์๊ฐ์ ์ฌ์ ๊ฐ ๋๋ํ์ง ์๋ค. ์ผ๋จ ๋์ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์ , ๊ฐ๋ฐํ์ด ์ด๋๋ฅผ ์ง์คํด์ผํ ๊น?
โก MSA์ ๊ตฌ์กฐ๋ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ๊ฐ์ํ ์ํจ๋ค. ์ ์ฒด๋ฅผ ์ ๋ณด๊ธฐ ๋๋ฌด ์ด๋ ค์ฐ๋๊น
๐ ?? ์ ๋ช ํ ๊ธฐ์ ๋ค์ ๋ค MSA ์ด๋ค๋ฉด์์?
๋ชจ๋ ๊ฒ์ ํธ๋ ์ด๋ ์คํ์ด๋ค.
์๋์ MSA๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ๋ค์, ์๋น์ค ํธ๋ํฝ์ด ์ด๋ง์ด๋งํ๋ค.
๊ธฐ์กด์ ๋ชจ๋ ธ๋ฆฌ์ค๋ก ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ด ํธ๋ํฝ์ MSA๋ก ๋ถ๋ด์ ๋๋๊ณ ์์คํ ์ ์ฝ๊ฒ ํ์ฅํ ์ ์๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋ ๋ณ๊ฒฝ์ ์ฌํ๊ฐ ํฌ๋ค.
โก A ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๋ฉด B๋ ์ํฅ์ ๋ฐ๋๋ค. (ํจ๊ป ํ ์คํธ ํด์ค์ผํ๋ค. ๋ฐฐํฌ & ์ถ์๊ฐ ๋ฆ์ด์ง๋ค.) - ๋จ์ผ ์์คํ ์ด๋ผ์, ํน์ ๋ถ๋ถ์ ์ฅ์ ๊ฐ ์ ์ฒด ์ฅ์ ๋ก ํผ์ง ์ ์๋ค.
- ๋จ์ผ ์์คํ ์ด๋ผ์, ์์คํ ์ ์ํ ํ์ฅํ๊ธฐ ์ด๋ ค์ด ๊ตฌ์กฐ์ด๋ค. Scale-out์ด ํ๋ค๋ค.
๋ง์ดํฌ๋ก ์๋น์ค๋ ์ด๋ฌํ ์ ์ ๋ง์ด ํด๊ฒฐํด์ค๋ค.
MSA๋ ๊ฐ ์๋น์ค๊ฐ ์์จ์ ์ด๋ค. ์์ ์ ์๋น์ค์ ๋ํด ์ค์ค๋ก ๊ฒฐ์ ํ๊ณ , ์ฑ ์์ง ์ ์๋ค.
- ๊ฐ ์๋น์ค์ ๋ฐ์ํ๋ ์ฅ์ ๋ฅผ ๊ฒฉ๋ฆฌ์ํฌ ์ ์๋ค. (์ ์ฒด ์์คํ ์ ์ ํ๋ฅผ ๋ง๋๋ค.)
- ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด ์๊ธฐ์, ๊ฐ ์๋น์ค๋ฅผ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋์ฒดํ ์ ์๋ค. (ํนํ๋ ๊ธฐ์ ์ ๋ณ๋๋ก ์ฌ์ฉํ ์ ์๋ค.)
- ๊ฐ ์๋น์ค๋ค์ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ๋น์ฆ๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
๊ทผ๋ฐ ์ํคํ ์ฒ๋ฅผ ๋ณ๊ฒฝํ๋ค๊ณ ํด์ ๋ฌธ์ ๊ฐ ๋ฐ๋ก ํด๊ฒฐ๋ ๊น?
MSA๋ฅผ ์ธ๊ธํ๋ฉด ๋งค๋ฒ ๋์ค๋ ๋ง์ด ์๋ค. Conway's law (์ฝ์จ์ด ๋ฒ์น)
์กฐ์ง์ด ์ค๊ณํ [์์คํ ๋์์ธ]์ ํด๋น [์กฐ์ง์ ์ปค๋ฎค๋์ผ์ด์ ๊ตฌ์กฐ]๋ฅผ ๋ฐ๋ฅธ๋ค
์ฐธ๊ณ ๋ก Conway's law๋ IT๊ธฐ์ ์ ์ํด ์์ฑ๋ ๋ ผ๋ฌธ์ด ์๋์๋ค.
ํ์ฌ์๋ ๋ง์ ๊ธฐ์ ์, '์ ๋ฌด'๋ฅผ ์ค์ฌ์ผ๋ก ์ด์๋๋ค. ๊ทธ ์ ๋ฌด์ ์ ๋ฌธ๊ฐ๋ค์ ๋ชจ์ ํ ํ์ผ๋ก ๊ฒฐ์ฑํ๋ฉด ๋ ํจ์จ์ด ์ข์์งํ ๋๊น.
ํ์ง๋ง IT ๊ธฐ์ ์ ์ด๋ฌํ ๊ตฌ์กฐ๊ฐ ์ข์ง ์๋ค.
์ํํธ์จ์ด๋ ํ๋ฒ ์ง๊ณ ๋๋ฉด ํ์ด ๋ณํ์ง ์๋ ๋น๋ฉ์ด ์๋๋ค.
์์ฅ์ ๋์์์ด ๋ณํ๋ค. ๋น์ฆ๋์ค๋ ์์ฅ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋์์์ด ๋ณํํด์ผํ๋ค.
์๋ฅผ ๋ค์ด '์์ฝ ์์คํ ์ ์ถ๊ฐํ๋ค.' ๋ผ๋ ์๊ตฌ์ฌํญ์ด ์๋ค๊ณ ์๊ฐํด๋ณด์.
- ๊ธฐํ์๊ฐ ์์ฝ ์์คํ ์ ๊ธฐํํ๋ค.
- ๋์์ด๋์๊ฒ ํ์ํ ๊ทธ๋ฆผ์ ์์ฒญํ๋ค. (๋์์ด๋๋ ์ด๊ฒ ๋ฌด์์ ์ํ ๊ทธ๋ฆผ์ธ์ง ๋ชจ๋ฅธ๋ค.)
- ๊ฐ๋ฐ์์๊ฒ ์์คํ ์ ์์ฒญํ๋ค. (๊ฐ๋ฐ์๋ ๊ทธ๋ฅ ๊ธฐํ์๊ฐ ์ํค๋๋๋ก ๋ง๋ค ๋ฟ์ด๋ค.)
- ํ ์คํฐ์๊ฒ ์์คํ QA๋ฅผ ์์ฒญํ๋ค.
์๋น์ค๋ฅผ ๋ง๋๋๋ฐ์ ์์ด ํ์ ์ดํด๊ฐ ๊ณต์ ๋์ง ์๋๋ค. ํํ๋งํด ๋ด๊ฐ ์ฝ์ง์ ํ๋๋ฐ, ๊ฑด๋ฌผ์ ์ง๊ธฐ์ํจ์ธ์ง ๋ ๊ตด์ ๋ง๋ค๊ธฐ ์ํจ์ธ์ง ๋ชจ๋ฅธ๋ค๋ ๊ฒ์ ์๋ค.
์ํํธ์จ์ด๋ ์๊ตฌ์ฌํญ์ด ์ธ์ ๋ ์ง ๋ณํ ์ ์๋ค. ๋งค๋ฒ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋ง๋ค ๊ฐ๊ฐ์ ์กฐ์ง์ ์์ฒญํ๊ฒ ๋๋ค๋ฉด ์กฐ์ง๋ณ ์ดํด๊ด๊ณ๊ฐ ํ์ด์ง๊ณ ์ํต์๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ๋๋ค. (์๋ ๋ฐ์๋ค๊ณ ์. ๊ทธ๊ฑธ ์ธ์ ๋ ์ถ๊ฐํด์?)
์์คํ ์ ์ดํดํ๊ณ ๋ณํ์ ์ฝ๊ฒ ๋์ํ๋ ค๋ฉด ์กฐ์ง์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์์ผํ๋ค.
ํนํ MSA๊ฐ ๊ทธ๋ฌํ๋ค. ๋ ๋ฆฝ์ ์ธ ๋ง์ดํฌ๋ก ์์คํ ์ ๋ง๋๋๋ฐ ํ์ ๊ตฌ์กฐ๊ฐ ์ฒซ๋ฒ์งธ์ ๊ฐ๋ค๋ฉด ์ ๋ง ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ๋ฅผ ๊ฒ์ด๋ค.
์กฐ์ง์ด ์ค๊ณํ [์์คํ ๋์์ธ]์ ํด๋น [์กฐ์ง์ ์ปค๋ฎค๋์ผ์ด์ ๊ตฌ์กฐ]๋ฅผ ๋ฐ๋ฅธ๋ค
์ด ๋ง์, ์์คํ ๋์์ธ์ ํ๊ธฐ ์์ ์กฐ์ง์ ์ปค๋ฎค๋์ผ์ด์ ๊ตฌ์กฐ๋ฅผ ํจ๊ป ๊ฐ์ ์ํฌ ํ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
“๊ฐ ์๋น์ค ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๊ฐ๋ฅํ ์์ ์๋น์ค๋ก ๊ตฌ์ฑ๋๊ณ , ๊ฐ ์๋น์ค๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด์ผ ํ๋ค.”๋ผ๋ ๋ง์ดํฌ๋ก ์๋น์ค์ ํน์ง์ ์ด๋ ค ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ ํจ์จ์ ์ด๊ณ ์ ์ฐํ ์ ์ฐํ ์กฐ์ง์ผ๋ก ๊ตฌ์ฑ๋์ผ ํ๋ค.
๋์ ์์ง๋(Cohesion)์ ๋ฎ์ ๊ฒฐํฉ๋(Coupling)๋ฅผ ๋จผ์ ์ฑ๊ฒจ์ผํ๋ค.
์ํํธ์จ์ด๋ ์๋ ๋ณต์กํ๋ค. ์๋์น์์ ๋ณต์ก์ฑ์, ์๋ํ ๋ณต์ก์ฑ์ผ๋ก ๋ฐ๊ฟ์ผํ๋ค. ์ ์ดํด์ผํ๋ค.
- ๋ณํ๊ฐ ํจ๊ป ์ผ์ด๋๋ ์ฝ๋๋ง ๋ชจ์ฌ์์ผ๋ฉด [์์ง๋]๊ฐ ๋์ ๊ฒ์ด๋ค.
- ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ์ ๋, ๊ด๊ณ ์๋ ๋ค๋ฅธ ๊ณณ์ด ์ํฅ๋ฐ๋๋ค๋ฉด [๊ฒฐํฉ๋]๊ฐ ๋์ ๊ฒ์ด๋ค.
์๋น์ค๋ฅผ ๋๋ฌด ๋ง์ดํฌ๋ก๋ก ์ชผ๊ฐ๋ฉด ๊ฒฐํฉ๋๊ฐ ๋์์ง๊ธฐ ์ฝ๋ค. ํ๋์ ์๋น์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ์ฒ๋ฆฌํด์ผํ๋๊น.
์๋น์ค๋ฅผ ํ๋๋ก ํฌ๊ฒ ๊ฐ์ ธ๊ฐ๋ฉด ์์ง๋๊ฐ ๋ฎ์์ง๊ธฐ ์ฝ๋ค. ๊ด๊ณ์๋ ์ฝ๋๋ค์ด ํ ์๋น์ค์ ๋ญ์ณ์์ผ๋๊น
ํธ๋ ์ด๋ ์คํ๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.
๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ง๋๋ ์๋น์ค๋ ์ด๋ค๊ฐ
MSA๋ฅผ ๋์ ํจ์ ์์ด ์ป๋ ์ฅ์ ์ด ๊ผญ ํ์ํ ๊น? ์ ๋ง ์ ์ฒด ์์คํ ์ด ๋ป์ด๋ฒ๋ฆด ์ ๋์ ํธ๋ํฝ์ด ๋ฐ์ํ ๊น?
์ค์ ๋ก ๋ฐฐ๋ฏผ, ๋ทํ๋ฆญ์ค๊ฐ์ ๋๊ธฐ์ ๋ ๋ชจ๋ ๊ตฌ์กฐ๋ฅผ ๋ฌด์ง์ฑ์ผ๋ก MSA๋ก ๋ง๋ค์ง๋ ์๋๋ค.
์ ์ ํ๊ฒ ์์ด์ ์ฌ์ฉํ๋ค. ํธ๋ ์ด๋ ์คํ์ ๋์ ํ์ ๋ ์ป์ ์ ์๋ ๋ถ์ ํจ๊ณผ๋ฅผ ๊ณ ๋ คํ์.
๋ชจ๋ ธ๋ฆฌ์ค ์์คํ ์ผ๋ก ๊ฐํ๋ ์กฐ์ง์, ์ํคํ ์ฒ๋ฅผ MSA๋ก ๋ฐ๊ฟ๋ดค์ ํฐ ์ฐจ์ด์๋ค.
์คํ๋ ค ์์คํ ์ด ๋ ์ด๋ ค์์ง ๋ฟ.
๐ญ ๋ชจ๋ํ์ ์ํคํ ์ฒ์ ๋ณธ์ง
๋ณ๊ฒฝ์ ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์์ฉํ ์ ์๋๊ฐ.
์ดํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ, ๋๋ฉ์ธ์ ๊ตฌ์ฒด์ ์ธ ๋์์์ ๋ถ๋ฆฌ์ํค๋ ๊ฒ
์ธ๋ถ์ ๊ตฌ์ฒด์ ์ธ ์ํ๋ฐฉ์์ ์ธ์ ๋ ์ง ๋ณ๊ฒฝ ๋ ์์๋ค.
๐ญ ์์ ๋ฅผ ํตํด ์์๋ณด์
๊ฐ๋จํ ์ด์ปค๋จธ์ค๋ฅผ ํตํด ํจ๊ป ๊ฐ์ ์์ผ๋ณด์.
์ด ์์คํ ์ [์ํ] [์ฃผ๋ฌธ] [๋ฐฐ์ก] ์ด๋ผ๋ ๋๋ฉ์ธ์ด ์๋ค.
๋๋ฉ์ธ์ ์ค์ฌ์ผ๋ก ์์ง๋ ๋์ ๋ชจ๋์ ๊ตฌ์ฑํ๋ฉด ์๋์ ๊ฐ๋ค.
๊ณ์ธต (๋ ์ด์ด)๋ฅผ ์ค์ฌ์ผ๋ก ๋ชจ๋ํํ๋ฉด, ์์คํ ์ด ๋ณต์กํด์ง์๋ก ๋ณํ๋ฅผ ์ ์ดํ๊ธฐ ์ด๋ ต๋ค.
๋ ๋ฆฝ์ ์ธ ๋ชจ๋์ ๋ง๋ค๋ ค๋ฉด ๋๋ฉ์ธ์ ์ค์ฌ์ผ๋ก ๋ชจ๋ํ ํด์ผํ๋ค.
๋๋ ๊ด์ฌ์ฌ์ ๋ฐ๋ผ ๋ชจ๋ํํ ์๋ ์๋ค.
์๋ฅผ ๋ค์ด ๋ก๊น , ๋ณด์๊ณผ ๊ฐ์ด ์ ์ฒด์ ๋ค ๋ฒ์ฉ์ ์ผ๋ก ์ ์ฉ๋๋ [์ํ์ ๊ด์ฌ์ฌ]
์ฌ์ฌ์ฉ์ฑ์ ๋ณ๋ก ์ค์ํ์ง์๊ณ , ๊ทธ ๋น์ฆ๋์ค๋ฅผ ๊ตฌํํ [์์ง์ ๊ด์ฌ์ฌ]
๐ญ ๋ชจ๋์ ๋๋ด๋ค๋ฉด ์์กด์ฑ์ ๊ด๋ฆฌํ์.
์์กด์ฑ์ ํ์ชฝ์ผ๋ก๋ง ํ๋ฌ์ผํ๋ค. - ์กฐ์ํธ ์ค๋ธ์ ํธ
๐ญ ์ฝ๋ ์์
- step_1: modularization - ๋๋ฉ์ธ ์ค์ฌ ๋ชจ๋ํ์ ๋ชจ๋๊ฐ ์์กด์ฑ ๊ด๋ฆฌ
- step_2: encapsulation and separately - ๋ชจ๋์ ๋ณดํธํ๊ณ , ๋ชจ๋๊ฐ ์์กด์ฑ ๋ถ๋ฆฌ
- step_3: context boundaries - ๋ชจ๋ ์์จ์ฑ์ ์งํค๋ ์ปจํ ์คํธ ๊ฒฝ๊ณ
- step_4: modularizing configurations - ์ปจํ ์คํธ ํ๊ฒฝ ๋ชจ๋ํ
- step_5: decomposing system and stand alone services - ์์คํ ๋ถ๋ฆฌ์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ์ฑ์ฅ
๋๋ ํ๋ฐ ๋ ๋์๊ฐ์, Gradle๋ก ์์กด์ฑ์ ๋ถ๋ฆฌํด๋ฒ๋ฆด ์ ์๋ค.
ํ๋์ ์ ์ฅ์์์ ๋ชจ๋๋ณ๋ก ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ. ์์ ์์กด์ฑ์ ๊ฐ์ง ์๊ฐ ์๋ค.
ArchUnit
Moduliths
Across Framework ๋ฑ
'๐์ผ์ > ๋ฉํ ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring JPA์ ์ฌ์ค๊ณผ ์คํด (0) | 2021.11.15 |
---|---|
DDD-Lite@Spring (0) | 2021.11.15 |
์์กด์ฑ์ ์ด์ฉํด ์ค๊ณ ์งํ์ํค๊ธฐ (0) | 2021.11.13 |
์ก์๋ฆฌ3 (0) | 2021.11.12 |
์ก์๋ฆฌ2 (0) | 2021.11.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev