ํ๋์ Application์ ๋ค์์ ๋ ๋ฆฝ์ ์ธ Service๋ก ๊ตฌ์ฑํ๋ Architecture Style ์ด๋ค.
โก๏ธ Monolithic System
1. Single Monolithic Sytem
2. Modular Monolithic Sytem
3. Single Monolithic Sytem
Monolithic์ ๋ํ ์คํด๐
Monolithic์ ๋จ์ ๋ง ์ธ๊ธํ๋ค๊ณ ํด์ ํผํด์ผ ํ ํจํด์ ์ ๋ ์๋๋ค!
Monolithic์ ํ๋์ ์ํคํ ์ฒ ํจํด์ผ ๋ฟ, ๋ง์ ์ํฉ์์ ์ถฉ๋ถํ ์ข์ ์ญํ ์ ํ๋ค.
๋ค์ด์ด ๋์ฌ MSA์ ๋จ์ ์ธ ์ด์ ๊ด๋ฆฌ์ ์ด๋ ค์์ด Monolithic์์๋ ์ด์ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค๋ ์ฅ์ ์ผ๋ก ์์ฉํ๋ค!
์ฆ, Monolithic ๊ณผ MSA ๋ Trade-Off ๊ฐ ์กด์ฌํ๋ฏ๋ก ์ ์ ํ ์ ํ์ด ํ์ํ๋ค!
MSA(Microservice Architecture) ๋ Monolithic์ด ๊ฐ์ง๋ ๋จ์ ๋ค์ ๋ณด์ํด์ค๋ค.
1. ๋น ๋ฅธ Delivery
๊ฐ ์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋๊ณ ๋์จํ๊ฒ ๊ฒฐํฉ๋๋ค.
์๋น์ค ํฌ๊ธฐ ๋ํ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์์ ์ ๋ํ ์ํฅ ๋ฒ์๊ฐ ์๋์ ์ผ๋ก ์์์ง๋ค.
์ด๋ ๊ณง ๋น ๋ฅธ ์ํฅ๋ ํ์
/๋น๋/ํ
์คํธ ์ฆ ๋น ๋ฅธ Delivery๋ก ์ด์ด์ง๊ฒ ๋๋ค.
2. ํ๋ ฅ์ ์ด๊ณ ์ ํ์ ์ธ ํ์ฅ
MSA๋ ์์ ์๋น์ค ๋จ์๋ก ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ๋ฉด Monolithic์ ํ์ฅ์ ํ๊ธฐ ์ํด์๋ ์ ์ฒด Scale-Out์ด ํ์ํ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค.
3. Polygot Architecture ์ง์
์กฐ์ง์ ํ์ค ๊ธฐ์ ์ ๋ง๋ค๊ณ ๋ชจ๋ ์กฐ์ง์ ๊ฐ์ ์ ์ผ๋ก ์ ์ฉํ๋ ์ ํต์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๋ฌ๋ฆฌ,
MSA๋ ํน์ Task์ ๊ฐ์ฅ ์ ์ ํ ๊ธฐ์ ์ ์ ํํด ์ ์ฉํ ์ ์๋ค.
4. ์คํ๊ณผ ํ์ ๊ฐ๋ฅ
์ต๊ทผ ๋น์ฆ๋์ค ์ํฉ์์๋ ๊ธฐ์ ์ ํ์ ์ด ํ์์ ์ด๋ค.
Monolith ํ๊ฒฝ ์์๋ ๋จ์ํ ๊ธฐ์ ์คํ๋ ์ด๋ ค์ด ๋ฐ๋ฉด, MSA๋ ์๋ก์ด ๊ธฐ์ ๋ค์ ์ฝ๊ฒ ์คํ ํด ๋ณผ ์ ์๋ค.
5. ๋์ฒด ๊ฐ๋ฅ์ฑ
๊ฐ ์๋น์ค๋ ์๊ณ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋ฎ๊ธฐ ๋๋ฌธ์ ์ธ์ด ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์์ ํ ์๋กญ๊ฒ ๊ฐ๋ฐํ ์ ์๋ค.
6. ๊ธฐ์ ๋ถ์ฑ ๊ฒฝ๊ฐ
SW ๋ํ ๋์ด๋ฅผ ๋จน๊ณ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ๊ธฐ์ ๋ถ์ฑ๊ฐ ์์ด๊ฒ ๋๋ค.
MSA๋ ์๋น์ค ํฌ๊ธฐ๊ฐ ์์ ํ์ง ๊ด๋ฆฌ์ ์ฉ์ดํ๊ณ , ํ์ง ํฅ์์ ์ํ ์ฝ๋ ๊ฐ์ ์ ๋ฐ๋ ์ํฅ๋ ์๋ค.
1. ์ปดํจํ
์์์ ์ฌ์ฉ์ด Monolithic๋ณด๋ค ๋นํจ์จ์ ์ด๋ค.
๋ด๋ถ ํธ์ถ์ ํ๋ Monolithic๋ณด๋ค ์ฑ๋ฅ์ด ๋๋ฆฌ๊ณ , jvm ๋ฑ ์ค๋ณต์ ์ธ ์์ ์ฌ์ฉ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ค.
2. ์ด์ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค.
์์ ์๋น์ค ์ฌ๋ฌ๊ฐ๋ก ์ด๋ฃจ์ด์ ธ์๋ ๋งํผ ์ด์ํด์ผ ํ ๋์ ๋ํ ๋์ด๋๋ฉด์ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๊ณ , ๋ชจ๋ํฐ๋ง ๋์ ๋ํ ์ฆ๊ฐํ๊ฒ ๋๋ค.
3. ๋ค์ํ ์ฅ์ ์ํฉ ๋ฐ์
4. ๋ถ์ฐ ํ๊ฒฝ์์ ํธ๋์ญ์ ์ด๋ ค์
์ง๊ธ๋ถํฐ ์ ๋ฆฌํ ํน์ง์ Martin Fowler ๊ฐ ์ ์ํ MSA์ ์ผ๋ฐ์ ํน์ง์ด๋ค.
MSA๋ฅผ ์ฑํํ ์กฐ์ง์ ๊ด์ฐฐ/์กฐ์ฌ ํ ๊ณตํต์ ํน์ง์ ์ ๋ฆฌํ ๊ฒ์ผ๋ก, ๋ชจ๋ MSA๊ฐ ๋ง์กฑํด์ผ ํ๋ ํ์ ์กฐ๊ฑด์ ์๋๋ผ๋ ์ ์ ์ ์ํ์.
์ปดํฌ๋ํธ๋ฅผ ์ด๋ป๊ฒ ์ ์ํ๊ณ ์ด๋ป๊ฒ ์ฐ๊ฒฐ ํ๋๋๋ SW ์ ๊ณ์์์ ์ค๋ ๊ณ ๋ฏผ ๊ฑฐ๋ฆฌ๋ก ์ด์ด์ง๊ณ ์๋ค.
MSA์์๋ ์๋น์ค ๋จ์๋ฅผ ์ปดํฌ๋ํธ๋ก ์ ์ํ๊ณ ์๋ค.
ํ๋์ ์ปดํฌ๋ํธ๋ ํน์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ๋ด๋นํ๊ณ , ๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ก ์คํ๋๋ฉฐ ์์จ์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ์๋น์ค๋ ์์ง๋ ๋๊ฒ ์ค๊ณ๋์ด์ผ ํ๊ณ , ์๋น์ค ๊ฐ์๋ ๋ช ํํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ํ๋ ฅํด์ผ ํ๋ค.
Conway์ ๋ฒ์น๐ก
์์คํ ์ ์ค๊ณํ๋ ์กฐ์ง์ ๊ทธ ์กฐ์ง์ ์ํต ๊ตฌ์กฐ๋ฅผ ๋ฎ์ ์ํคํ ์ฒ๋ฅผ ๋ง๋ ๋ค.
์ฆ, ์กฐ์ง์ ๊ตฌ์กฐ๊ฐ ์์คํ ์ ์ํคํ ์ฒ์ ์ํฅ์ ์ค๋ค๋ ๋ป์ด๋ค.
ํ๋์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ฉด, ๋ค์์ ํ ๊ฐ์ ํ๋ ฅ์ ํ์๋ก ํ๊ฒ ๋๋ค.
(๊ธฐํํ, ๋์์ธํ, FE๊ฐ๋ฐํ, BE๊ฐ๋ฐํ ๋ฑ...)
๊ทธ๋ฌ๋ ๋น์ฆ๋์ค ์ญ๋์ ๋ฐ๋ผ ์กฐ์ง์ ๊ตฌ์ฑํ๊ฒ ๋๋ฉด ์์ ๊ฐ์ด ํ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์๋ ์ญ๋์ ํ ํ ๋ด์ ๋ชจ๋ ๊ฐ์ถ ์ ์๋ค.
ํ ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ฉด, ์ ์ฒด ์์คํ
์ ๊ฒฐํฉ๋ ๋ํ ๋ฎ์์ง๊ฒ ๋๋ค.
๊ธฐ์กด์๋ ๊ฐ๋ฐ๊ณผ ์ด์์ด ๋ถ๋ฆฌ๋์ด, ํ๋ก์ ํธ ๊ฐ๋ฐ์ด ๋๋๋ฉด ํด๋น ์ํํธ์จ์ด๋ ์ด์ ์กฐ์ง์ ์ด๊ด๋์๋ค.
๋ฐ๋ฉด์ MSA๋ ํ ํ์์ ๊ฐ๋ฐ/์ด์์ ํฌํจํ ์ ์ฒด ๋ผ์ดํ์ฌ์ดํด์ ์ฑ
์์ง๋ค.
์ด๋ ์๋์ ๊ฐ์ ์๊ธฐ๋ฅ์ ๊ฐ์ ธ์จ๋ค.
๊ณ ๊ฐ๊ณผ์ ์ ์ ์ ๋๋ฆฌ๊ณ ํผ๋๋ฐฑ์ ๋๋ ค ๋๊ฐ๋ฏ๋ก, ํ์๋ค์ ์์ ๋ค์ด ๋ง๋๋ ์ํํธ์จ์ด๋ฅผ ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ ์ ํ์ ๊ฒฝํํ ์ ์๊ฒ ๋๋ค.
๋จ์ํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ ๋๊ธฐ๋ ๊ฒ์ด ์๋, ์ํํธ์จ์ด๊ฐ ๊ณ ๊ฐ์๊ฒ ์ด๋ ํ ๊ฐ์น๋ฅผ ์ด๋ป๊ฒ ์ ๋ฌํ ์ ์์์ง ๊ณ ๋ฏผํ๋ ๊ณ๊ธฐ๊ฐ ๋๋ค.
์ํํธ์จ์ด์ ๊ธฐ์ ์ ๋น์ฆ๋์ค ์ฐ๊ด ๊ด๊ณ๋ฅผ ์ธ์ํ ์ ์๋ค.
์ง๋ฐฉ์์น์ ๋์ ์ ์ฌํ๊ฒ, ์ค์์ ๊ฐ๋ ฅํ ํ์ค์ด๋ ์ ์ฐจ์ ์ค์๋ฅผ ๊ฐ์ํ์ง ์๊ณ
์ค์ค๋ก ํจ์จ์ ์ธ ๋ฐฉ๋ฒ๋ก ๊ณผ ๋๊ตฌ, ๊ธฐ์ ์ ์ฐพ์ ์ ์ฉํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
MSA๋ ํด๋น ์๋น์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ๊ด๋ฆฌํ๋ฏ๋ก ์๋น์ค๋ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ผ์ ๊ฐ ์๋น์ค๋ ๋ค๋ฅธ ์๋น์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ ๊ทผํ์ง ์๊ณ , API๋ฅผ ํตํด์๋ง ๋ค๋ฅธ ์๋น์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์์ง๊ณ , ์ผ๊ด์ฑ ๋ํ ์ฆ์ ์ ์ฉ๋์ง ์๊ณ ์๊ฐ์ด ์ง๋์ผ ์ ์ฉ๋๋ ๋ถํธํจ์ด ์๊ธด๋ค.
๋ค์์ ์๋น์ค์ ์ธ์คํด์ค๊ฐ ์กด์ฌํ๋ ํ๊ฒฝ์์๋ ์๋ํ๊ฐ ํ์์ด๋ค.
๋ฐ๋ผ์ ์๋ํ๋ ํ
์คํ
, ์๋ํ๋ CI, ์๋ํ๋ CD๊ฐ ํ์์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๊ณ , ์ค์ ๋ก ๋ง์ ์ญ๋์ ์๊ณ ์๋ค.
์ด๋ค ํ๊ฒฝ์์๋ ์ฅ์ ๋ ํญ์ ์ผ์ด๋๋ค.
MSA์ ํน์ง์, ํน์ ์๋น์ค์ ์ฅ์ ๋ ํญ์ ์ผ์ด๋๊ณ ๋ค๋ฅธ ์๋น์ค๋ก ์ ํ ๋๋ค๋ ๊ฒ์ด๋ค.
์ผ๋ถ ์๋น์ค ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ ์ฅ์ ๋ก ์ ํ๋๋ ๊ฒ์ ๋ง๋๊ฒ์ด ์ฅ์ ๋ฐฉ์ง ์ค๊ณ์ ํต์ฌ์ด๋ค!
MSA๋ ๋ง์ ์์ ์๋น์ค๋ ์ธ์คํด์ค๊ฐ ์กด์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋์ ์ง์ ๋์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ํ์
ํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ์ด๋ ต๋ค.
๋ฐ๋ผ์ ์๋น์ค์ ์ด์ ๋์์ ์ต๋ํ ์ ์ํ๊ฒ ์ ์ ์์ด์ผ ํ๊ณ , ๊ฐ๋ฅํ๋ฉด ์๋์ผ๋ก ๋ณต๊ตฌํ ์ ์๋๋ก ์ค๊ณํด์ผ ํ๋ค.
โก๏ธ Spring Cloud, Kubernetes๋ฅผ ์ด์ฉํ๋ฉด ๋๋๋ฐ ์ด๋ ์ถํ์ ๋ฐฐ์ธ ์์ ์ด๋ค.
์ค์ ๋ทํ๋ฆญ์ค์์๋ ์ผ๋ถ๋ก ์ฅ์ ๋ฅผ ์ง์ ์ฃผ์ ํ๊ณ ์ ๋ฐํ๋ ํ ์คํธ๋ฅผ ์งํํ๋ค๊ณ ํ๋ค.
ex) ์นด์ค์ค ๋ฉํค, ์นด์ค์ค ๊ณ ๋ฆด๋ผ, ์นด์ค์ค ์ฝฉ
์๋ ํ์ธ์ ใ ใ ๊ธ ์์ฝ์์ต๋๋ค.
Monolithic System์ ์ข ๋ฅ ๋ถ๋ถ์์ Single Monolithic Sytem ์ด ๋๋ฒ ์ธ๊ธ๋๋๊ฒ ๊ฐ์๋ฐ ํน์ ์คํ๋ ์๋์ง ๊ถ๊ธํฉ๋๋ค