๐ค์ค๋์ ๊ณต๋ถ ์ฃผ์ : MSA, Monolithic architecture๐ค
Q. ๋ชจ๋๋ฆฌ์ ๊ตฌ์กฐ์ MSA์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ?
A. ๋ชจ๋๋ฆฌ์(Monolithic) ์ํคํ
์ฒ์ ๋ง์ดํฌ๋ก์๋น์ค(Microservices) ์ํคํ
์ฒ๋ ์ํํธ์จ์ด ์์คํ
์ ์ค๊ณํ๊ณ ๊ตฌ์ถํ๋ ๋ ๊ฐ์ง ์ฃผ์ ์ ๊ทผ ๋ฐฉ์
1. ์ํคํ
์ฒ ๊ตฌ์กฐ:
- ๋ชจ๋๋ฆฌ์(Monolithic): ๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ๋ ํ๋์ ํฐ ์ฝ๋๋ฒ ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ ๊ตฌ์ฑ ์์(๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ๋น์ฆ๋์ค ๋ก์ง ๋ฑ)๊ฐ ๋จ์ผํ ์ฝ๋๋ฒ ์ด์ค์ ํตํฉ๋์ด ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค(Microservices): ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ ์ฌ๋ฌ ์์ ์๋น์ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ ์๋น์ค๋ ์์ฒด์ ๋
๋ฆฝ์ ์ธ ์ฝ๋๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง๋ฉฐ, ์๋ก ํต์ ํ์ฌ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ฑํฉ๋๋ค.
2. ์ปค๋ฎค๋์ผ์ด์
๊ณผ ํตํฉ:
- ๋ชจ๋๋ฆฌ์: ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ ๋ถ๋ถ์ด ๊ฐ์ ์ฝ๋๋ฒ ์ด์ค์ ์์ผ๋ฏ๋ก, ์ปดํฌ๋ํธ ๊ฐ์ ํตํฉ์ด ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ํ์ง๋ง ํฐ ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ๋ชจ๋ ๋ถ๋ถ์ ์ดํดํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค: ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋๊ณ ์
๋ฐ์ดํธ๋ ์ ์์ผ๋ฏ๋ก, ์๋น์ค ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์
๊ณผ ํตํฉ์ด ์ค์ํ ๊ณผ์ ๊ฐ ๋ฉ๋๋ค. API๋ฅผ ํตํ ์ธ๋ถ ํต์ ์ด ์ผ๋ฐ์ ์ด๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ ์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ, ๋ฐฐํฌ, ํ์ฅ๋ ์ ์์ต๋๋ค.
3.๋ฐฐํฌ ๋ฐ ํ์ฅ์ฑ:
- ๋ชจ๋๋ฆฌ์: ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ํ ๋ฒ์ ๋ฐฐํฌํด์ผ ํ๋ฉฐ, ํน์ ๋ถ๋ถ๋ง ํ์ฅํ๊ธฐ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ํ์ฅ์ฑ์ด ๋ถ์กฑํ ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค: ๊ฐ ์๋น์ค๋ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ๋ฉฐ, ํ์ํ ์๋น์ค๋ง ํ์ฅํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์ ์ฒด ์์คํ
์ด ๋ ํจ์จ์ ์ผ๋ก ํ์ฅ๋ ์ ์์ต๋๋ค.
4. ์ ์ง๋ณด์ ๋ฐ ํ์ฅ์ฑ:
- ๋ชจ๋๋ฆฌ์: ์์ ํ๋ก์ ํธ๋ ์ด๊ธฐ ๋จ๊ณ์์๋ ์ ์ง๋ณด์๊ฐ ์ฌ์ธ ์ ์์ง๋ง, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์ปค์ง๋ฉด ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค: ๊ฐ ์๋น์ค๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋๊ณ ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ์๋์ ์ผ๋ก ์ฝ์ต๋๋ค. ๋ํ, ์๋ก์ด ์๋น์ค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ์๋น์ค๋ฅผ ๋ณ๊ฒฝํ๊ธฐ๊ฐ ์ฉ์ดํฉ๋๋ค.
์ด๋ฌํ ์ฐจ์ด๋ก ์ธํด ๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ๋ ๊ฐ๋จํ ์ ํ๋ฆฌ์ผ์ด์
๋ฐ ์ด๊ธฐ ๋จ๊ณ์ ํ๋ก์ ํธ์ ์ ํฉํ ์ ์์ผ๋ฉฐ, ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ ๋๊ท๋ชจ ๋ฐ ๋ณต์กํ ์์คํ
์ ๊ตฌ์ถํ๊ณ ์ ์ง๋ณด์ํ๋ ๋ฐ ๋ ์ ํฉํ ์ ์์ต๋๋ค. ์ ํ์ ํ๋ก์ ํธ์ ๊ท๋ชจ, ์๊ตฌ ์ฌํญ, ํ์ ๊ธฐ์ ์ ์ ํธ๋ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
๋ชจ๋๋ฆฌ์ ๊ตฌ์กฐ์ ์์
/my-monolith-app
|-- /src
| |-- /components
| |-- /services
| |-- /utils
| |-- /...
|-- /public
|-- package.json
|-- webpack.config.js
|-- ...
MSA ๊ตฌ์กฐ์ ์์
/msa-project
|-- /service1
| |-- /src
| | |-- /components
| | |-- /models
| | |-- /routes
| | |-- /tests
| | |-- ...
| |-- package.json
| |-- Dockerfile
| |-- ...
|-- /service2
| |-- /src
| | |-- /components
| | |-- /models
| | |-- /routes
| | |-- /tests
| | |-- ...
| |-- package.json
| |-- Dockerfile
| |-- ...
|-- /service3
| |-- /src
| | |-- /components
| | |-- /models
| | |-- /routes
| | |-- /tests
| | |-- ...
| |-- package.json
| |-- Dockerfile
| |-- ...
|-- /common
| |-- /src
| | |-- /constants
| | |-- /helpers
| | |-- /utils
| | |-- ...
| |-- package.json
| |-- ...
|-- /gateway
| |-- /src
| | |-- /routes
| | |-- /middlewares
| | |-- ...
| |-- package.json
| |-- Dockerfile
| |-- ...
|-- docker-compose.yml
|-- ...