ํ์ฌ์์ MSA์ ๋ํด ๊ณต๋ถํ๊ธฐ ์์ํ๋ฉด์ ์ฌ๋ฌ๊ฐ์ง ๋ฆฌ์์น, ํํ ๋ฆฌ์ผ ๋ฑ์ ์งํํ๋๋ฐ ์ด๊ณณ์ ์กฐ๊ธ์ฉ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
Monolithic Architecture
์๋น์ค์ ๋ชจ๋ ๊ตฌ์ฑ์์๊ฐ ํ๋์ ํ๋ก์ ํธ๋ก ํตํฉ๋์ด ์๋ ํํ์ด๋ค. ์ ํต์ ์ผ๋ก ๊ฐ๋ฐํ ๋ ์ค๊ณ ํด์ค๋ ๋ฐฉ์์ด๋ฉฐ, ํ๋์ ํ๋ก์ ํธ ์์์ ๋ชจ๋๋ณ๋ก ๊ฐ๋ฐ์ ์งํํ๊ณ ์ด ํ๋ก์ ํธ๋ฅผ ํ๋ฒ์ ํตํฉํด์ ๊ฒฐ๊ณผ๋ฌผ์ ๋น๋ํด์ ์๋น์ค๋ก ๋ฐฐํฌํ๋ ๋ฐฉ์์ ๋งํ๋ค. ํ์ง๋ง ์๋น์ค์ ๊ท๋ชจ๊ฐ ์ ์ ์ปค์ง๊ณ ๋ณต์กํด ์ง์๋ก Monolithic ๊ตฌ์ฑ์ ํ๊ณ๋ฅผ ๋ณด์ธ๋ค.
Monolithic application ์ ๋จ์
- ๋ถ๋ถ์ ์ฅ์ ๊ฐ ์ ์ฒด ์๋น์ค์ ์ฅ์ ๋ก ํ๋๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
- ํ ๋ถ๋ถ์ scale out ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค.
- CI/CD time์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
- ํ๋์ ๊ฐ๋ฐ ์คํ์ ์ฌ์ฉํด์ผํ๋ ์ ํ์ด ์๋ค.
MicroService Architecture
MSA(MicroService Architecture)๋, ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ํ ์ ์๋ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๋จ์์ ์๋น์ค๋ก ๊ตฌ์ฑ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค. MSA๋ ์์ ํ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ/์ด์์ด ๊ฐ๋ฅํ๊ณ , ์๋ก ๋ค๋ฅธ ๊ธฐ์ ์คํ์ ์ฌ์ฉํด๋ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค. ์ ๋๋ก๋ MS์ ๊ฒฝ์ฐ๋ ํ๋์ ๊ธฐ๋ฅ๋ง ์ํํ๋ฉฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฌ์ฉ๋ ์ ์๋ค.

MSA๋ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ์ํคํ ์ณ ๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง ๊น๊ฒ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์ ์ฒด์ ์ธ ์กฐ์ง์ ๊ตฌ์ฑ์ด๋ ์์ ๋ฐฉ์๊ณผ๋ ์ฐ๊ฒฐ๋๋ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์ ์ธ ๋ฉด๋ง ๋ณด๊ณ ํธ์์ฑ๋ง์ผ๋ก ์ ํํ๊ธฐ์ ๋ง์ ํ๋ค์ด ์กด์ฌํ ๊ฒ์ด๊ณ ๊ทธ๋ฌํ ์ด์๋ค์ ํด๊ฒฐํ๋๋ฐ์ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํ์ํ ๊ฒ์ด๋ค.

Micro Frontend
Micro frontend๋ MSA์ฒ๋ผ ์ ์ฒดํ๋ฉด์ ์๋ํ ์ ์๋ ๋จ์๋ก ๋๋์ด ๊ฐ๋ฐํ ํ ์๋ก ์กฐ๋ฆฝํ๋ ๋ฐฉ์์ด๋ค. MSA์์ Backend ๊ตฌ์ฑ์ ์ ์ธํ ํํ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฌ๊ธฐ์ ์๋ ๋จ์์ ์ฌ์ฉ๋ frontend framework๋ ๊ทธ ์ข ๋ฅ์ ์๊ดํ์ง ์๊ณ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ํํ๋ฅผ ๊ฐ์ง๋ค.

Build ์์ ๋ณด๋ค๋ runtime์์ ํตํฉํ๋๋ก ํ๋๊ฒ์ด ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ฉฐ, ์ด๋ฅผ ๊ตฌํํ ์ ์๋ ๋ช๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค
- iframe์ ์ด์ฉํ Runtime integration
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ์์ด๋ค. iframe์ ์ฌ์ฉํ๋ฉด ํ์ด์ง ์์ ๋๋ค๋ฅธ ๋
๋ฆฝ์ ์ธ ํ์ด์ง๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๋ค. styling๊ณผ global ๋ณ์๋ค์ด ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์๋นํ ๊ณ ๋ฆฝ์ฑ์ ๊ฐ์ง๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ต์
๋ค๋ณด๋ค ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ ๊ฒฝํฅ์ด ์๋ค. ํนํ routing, history ๋ฑ์ด ๋ณต์กํด์ง๊ณ responsive design ๊ฐ๋ฐ์๋ ์ด๋ ค์์ด ์กด์ฌํ๋๊ฒ์ด ํ์ค์ด๋ค.
2. javascript๋ฅผ ํตํ Runtime integration
ํ์ค์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ Micro app๋ค์ <script/>
ํ๊ทธ๋ฅผ ํตํด ๋ฒ๋ค์ด ํฌํจ๋๋๋ก ์ค์ ๋๊ณ , host app์ ๊ฐ ๋ฒ๋คํ์ผ์ ๋ค์ด๋ฐ๊ณ , ์ด๊ธฐํ ๋ฉ์๋ ๋ฑ์ ํธ์ถํ๋ค. ๊ฐ ๋ฒ๋คํ์ผ์ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐ์น๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ํ์ฅ, ์ ์ฐํ๊ฒ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ๋ง์ด ์ฑํ๋๋ค.
3. javascript๋ฅผ ํตํ Build-time integration
Micro frontend๋ฅผ ํจํค์ง๋ก ๋ฐฐํฌํ๊ณ , host app์ด ๊ทธ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ dependency๋ก ์ฌ์ฉํ๋ค. package.json
์ ์ถ๊ฐํ๋ ๋ฐฉ์. ๋จ์ผ ๋ฒ๋คํ์ผ์ ์์ฑํ๋ฏ๋ก, ๊ฐ Micro app์ ๋ณ๊ฒฝ์ฌํญ์ด ์์๋๋ง๋ค ๋ค์ complie/release ํด์ผ๋๋ ๋ฒ๊ฑฐ๋ก์ด์ด ์๋ค.
์์ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์ฃผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, ํ์๋ 2๋ฒ์ ๋ฐฉ๋ฒ์ ๊ตฌํํ ์ ์๋ ์๋ฃจ์ (Webpack5์ module federation)์ ๋ค์ ํฌ์คํ ์์ ์๊ฐํ๋๋ก ํ๊ฒ ๋ค.