1. MSA์ ์ ์
MSA๋ ์ํํธ์จ์ด ์์คํ ์ ์ฌ๋ฌ ์์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๋ถํ ํ์ฌ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ด๋ค.
์ฃผ์ ํน์ง
- ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํด์ผํ๋ค.
- ์๋น์ค๊ฐ ๋์จํ ๊ฒฐํฉ๋ผ์ผํ๋ค. (Loosely Coupled)
- ๋น์ฆ๋์ค ๋ชฉ์ ๋ณ๋ก ๋๋์ด์ผํ๋ค.
ํํ ์คํด
- ์๊ฐ๋ณด๋ค ๋์ ์ํํธ์จ์ด โ์ํคํ ์ฒโ์ ๊ฐ๋ ์ด๋ค.
- ํน์ ๊ธฐ์ ์ ์ฌ์ฉ์ ์์ฌํ๊ฑฐ๋ ๊ฐ์ ํ์ง ์๋๋ค.
- ์ด์ฐจํผ Microservice๋ฅผ ๋ฏธ๋์ ํ ๊ณํ์ด๋ผ๋ฉด ์ฒ์๋ถํฐ Microservice๋ฅผ ํ๋๊ฒ ์ข๋ค
1.1 MSA์ ๋ํ ์๊ฐ
์ด๋ก ์ ์ผ๋ก MSA๋ โMSA๋ ์ํํธ์จ์ด ์์คํ ์ ์ฌ๋ฌ ์์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๋ถํ ํ์ฌ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ด๋ค.โ๋ฅผ ๋งํ๋๊ฒ ๋ง๋ค. ํฐ ๋ฌด์ธ๊ฐ๋ฅผ ๊ผญ ์ชผ๊ฐ์ผํ๋ ์ํฉ์ด ๋ง๋ค์ด์ง๋ ค๋ฉด ํ๋ก์ ํธ๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ ํ์ด ๋๋ฌด ์ปค์ผํ๋ค. ํ์ง๋ง ์ด ๋์ ์ถฉ์กฑํ๋ ํ์ฌ๋ ์๊ฐ๋ณด๋ค ์ผ๋ง ์๋ค.
Monolithic Architecture ๋ถํฐ MSA ์ฌ์ด์๋ ๊ฐ์ธ์ ์ผ๋ก ๋ฌด์ํ ํํ์ ๋ค์ด ์๋ค๊ณ ์๊ฐํ๋ค. ์ฆ, ์ด ๋ ์ํคํ ์ฒ๋ ํ๋ฐฑ ๋ ผ๋ฆฌ๋ก ๋๋๋๊ฒ ์๋๋ผ ํ๋์ ์คํํธ๋ผ์ด ์กด์ฌํ๋ค.
ํ์ํ ๋ถ๋ถ๋ถํฐ ์ ํ์ ํ๋ฉด์ ์ฒ์ฒํ ๋ณํ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด ๋๋ค. โMonolithic์ด๋๊น ์ด๋ ๊ฒ ํด์ผ์ง!โ, โMSA๋๊น ์ด๋ ๊ฒ ํด์ผ์ง!โ๋ผ๋ ํน์ ๊ฐ๋ ์ ๊ฐ์ ํ๋ ์ ๋ต์ ์กด์ฌํ์ง ์๋๋ค. Monolithic ๋ถํฐ ์์ํด์ ํ๋์ฉ ๋ถํ ํด๊ฐ๋ฉด์ MSA๋ก ์ ํฅ์ ํ๋ ๋ฐฉ์์ด ๊ฐ์ฅ ์ด์์ ์ธ MSA ๊ตฌ์ถ ๋ฐฉ๋ฒ์ด๋ค.
์์ง๋ง์. ์ฐ๋ฆฌ๋ Software Engineer๋ค. ๊ถ๊ทน์ ์ธ ๋ต์ ์ฐพ์๋ด๋ ๊ณผํ์ ํ๋ ์ฌ๋๋ค์ด ์๋๋ผ ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์ด๋ด๋ ์์ง๋์ด๋ค์ด๋ค. โํจ์จ์ ์ธ ๊ฒฐ๊ณผโ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ด๋ ํ๋์ ๋ต๋ง ์กด์ฌํ์ง ์๋๋ค
1.2 Monolithic to MSA

1.3 Monolithic Architecture
Monolithic Architecture๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋์ ๋ฉ์ด๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. UI, ๋น์ฆ๋์ค ๋ก์ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ (Infrastructure) ๋ฑ์ด ํ๋์ ๋จ์๋ก ๊ตฌ์ฑ๋๋ค.
- ํ๋์ ๋ฐฐํฌ ์ ๋ : ๋ชจ๋ ์์๊ฐ ํ๋ฒ์ ๋ฐฐํฌ๋๋ค.
- ์์ ์คํ ํ๋์ ๋ณ๊ฒฝ์ด ์์คํ ์ ์ฒด์ ์ฌ๋ฐฐํฌ๋ฅผ ์๊ตฌํ๋ค.
- ์ ๋ฐ์ดํธ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ ์ฒด ๋ฐฐํฌ๊ณผ์ ์ ๋ชจ๋ ๊ฑฐ์ณ์ผํ๋ค (ํ ์คํธ, CICD๋ฑ)
- ๋๋ฉ์ธ๊ฐ ์์กด์ฑ์ด ๊ฐํ๋ค : ๋๋ฉ์ธ์ ์์ -> Auth, User, Product, Payment
- ๋ถ๋ถ์ ์ธ ์ ๋ฐ์ดํธ ๋ฐฐํฌ๊ฐ ์ด๋ ต๋ค.
- ํ๋์ ์ฌ์ธํ ๊ธฐ์ ์ ๋ณ๊ฒฝ์ด ์๋ง์ ๋ค๋ฅธ ์์๋ค์ โํฐ ์ํฅโ์ ๋ผ์น ์ ์๋ค.
- ์ ์ง ๋ณด์์ ๋ง์ ๋ฆฌ์์ค๊ฐ ํ์ํ๊ณ ์๋ก์ด ์ธ๋ ฅ ์จ๋ณด๋ฉ์ ์ ์ ๋ ๋ง์ ์๊ฐ์ด ํ์ํด์ง๋ค.
- ํ์ฅ์ฑ : Scalability
- ํ ๊ธฐ๋ฅ์ ๋ํ ํ์ฅ๋ง ํ์ํ๋๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๋ฅผ ํ์ฅํด์ผํ๋ค
2. Microservice Architecture
Microservice Architecture๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ณ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ค์ ๋๋ฉ์ธ๋ณ๋ก ๋๋ ์ ๊ตฌํํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ ์๋น์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์๋๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ํต์ ํ๋ฉฐ ๊ฐ๊ฐ ๋ฐ๋ก ๊ฐ๋ฐ, ์ ์ง๋ณด์, ํ์ฅ์ด ๊ฐ๋ฅํ๋ค
- SRP : Single Responsibility Principle
- ๊ฐ ์๋น์ค๊ฐ ๋น์ฆ๋์ค์ ํ๋์ ๋๋ฉ์ธ์ ๋งก์์ ์ด์๋๋ค. ์) ์ธ์ฆ, ์ฌ์ฉ์, ๊ฒฐ์ , ์ํ
- ๋๋ฉ์ธ ๋จ์๋ณ ์์ค์ฝ๋๋ฅผ ์ต์ํ ํ ์ ์์ด์ ๊ฐ๋ฐ, ์ ์ง๋ณด์, ์ด์์ด ์ฌ์์ง๋ค.
- ๋
๋ฆฝ์ ์ธ ์ด์
- ์๋น์ค๊ฐ ์์กด์ฑ์ด ์ฝํ๋ค.
- ํ๋์ ์๋น์ค์ ์ ๋ฐ์ดํธ๊ฐ ๋ค๋ฅธ ์๋น์ค์๋ํด โํฐ ์ํฅโ์ ๋ฏธ์น ๊ฐ๋ฅ์ฑ์ด ์ ๋ค.
- ๊ฐ ๋๋ฉ์ธ๋ณ๋ก ํ์ ๊พธ๋ฆฌ๊ณ ์ด์ํ๊ธฐ ํธ๋ฆฌํ๋ค.
- ํ์ค์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์์ด ๊ฐ๋ฅํ๋ค.
- ์ฅ์ ๋ฅผ ๋ฒํฐ๋ ๋ฅ๋ ฅ(?) : Fault Tolerance
- ํ ์๋น์ค์ โ์ค๋ํโ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๊ณ ํด์ ๋ค๋ฅธ ์๋น์ค๋ค์ด ๋ชจ๋ ๋ค์ด๋์ง ์๋๋ค.
- ์๋ฅผ๋ค์ด ๊ฒฐ์ ์๋น์ค๊ฐ ๋ค์ด๋๋ค๊ณ ์น์ฌ์ดํธ ์ ์ฒด๊ฐ ๋ค์ด๋์ง ์๋๋ค.
- ๊ฐ๋ฐ ๋์ด๋๊ฐ ์๋นํ๋ค
- MSA๋ฅผ ์ ๋๋ก ์ด์ํ๊ธฐ ์ํด ์๊ณ ์์ด์ผํ๋ ์ง์์ด ๋๋ฌด ๋ง๋ค.
- Monolithic๋ณด๋ค ์คํ๋ ค ๋ ๋ณต์กํด์ง ์ ์๋ค
2.1 Monolithic์ ๋ฐฐํฌ ๋ ๋ฆฝ์ฑ ๋ฌธ์

2.2 Microservice์ ๋ฐฐํฌ ๋ ๋ฆฝ์ฑ

2.3 Monolithic ๋ฐฐํฌ ๊ณผ์ ๋ฌธ์

2.4 MSA ๋ฐฐํฌ ๊ณผ์

2.5 Monolithic ๊ฐ๋ฐํ ๊ตฌ์ฑ

2.6 Microservice์ ๊ฐ๋ฐํ ๊ตฌ์ฑ

3. MSA์ ์ฃผ์ ์์
MSA๋ฅผ ํจ์จ์ ์ผ๋ก ์ด์ํ๊ธฐ ์ํด์๋ ๋ค์ํ ์ปดํฌ๋ํธ๋ค์ด ์๋ก ์ํธ์์ฉํด์ผํ๋ค. MSA๋ โ๊ฐ๋ โ์ด๊ธฐ ๋๋ฌธ์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ๋ค์ํ์ง๋ง, ์ด๋์ ๋ โํ์โ๋ก ์๊ฐ๋๋ ์ปดํฌ๋ํธ๋ค์ด ์กด์ฌํ๋ค.
API Gateway
- ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋จ๋
์ํธ๋ฆฌ ํฌ์ธํธ ์ญํ ์ ํ๋ค.
- e.g. /user๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด user service๋ก ๋ผ์ฐํ ์ ํ๊ฑฐ๋,
- /auth๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด auth service๋ก ๋ผ์ฐํ ์ ํ๋ค.
- ๊ณตํต์ ์ธ ์ ํ/๋ก์ง์ ๋ด๋นํ๋ค. (e.g. ์ธ์ฆ, Throttling, ์บ์ฑ, ๋ก๊น ๋ชจ๋ํฐ๋ง)
- ๋ณด์ ๋ ์ด์ด ์ญํ ์ํ๋ค. (e.g. ํ๋์ ๊ณตํต๋ ์ํธ๋ฆฌ ํฌ์ธํธ ์ญํ ์ ํ๋ฉฐ ์ธ๋ถ์ ๋ ธ์ถ๋๋ ํ๋ฉด๋ฉด์ ์ ์ค์ฌ์ค๋ค.)
Service Discovery
- ์ง์์ ์ผ๋ก ์์ฑ๋๊ณ ์ญ์ ๋๋ ์๋น์ค๋ค์ ์ฝ๊ฒ ์ฐพ์๋ผ ์ ์๋๋ก ํด์ค๋ค.
- Health Check๋ฅผ ํตํด ์ฅ์ ๊ฐ ์๋ ์๋น์ค๋ค์ ์ ์ธ์ํจ๋ค.
์๋น์ค๊ฐ ํต์ : Inter-service Communication
- ๋ ๋ฆฝ์ ์ผ๋ก ์๋น์ค๋ฅผ ๊ฐ๋ฐ ๊ฐ๋ฅํ๋ค๊ณ ํด์ ์๋ก ํต์ ์ด ํ์์๋๊ฒ ์๋๋ค.
- Sync (๋๊ธฐ) : HTTP, gRPC
- Async (๋น๋๊ธฐ) : RabbitMQ, Kafka, AWS SQS, Redis
๋
๋ฆฝ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ํ์์ฌํญ x
- ๊ฐ ์๋น์ค๋ณ๋ก ์ต์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค. (SQL, NoSQL๋ฑ)
Distributed Logging & Monitoring
- Microservice๋ ๋๋ฌด ๋ง์ ์๋น์ค๋ค์ด ๋ถ์ฐ๋์ด ์ด์๋๊ธฐ ๋๋ฌธ์ ๋ก๊น ๊ณผ ์์คํ ๋ชจ๋ํฐ๋ง์ ์ค์ํ ํ ํ์๊ฐ ์๋ค.
- MSA๊ฐ ๋ณต์กํด์ง์๋ก ์๋น์ค๊ฐ ์์ฒญ์ ํ๋ฆ์ ํ์ ํ ํ์์ฑ์ด ๋์์ง๋ค.
CI/CD Pipeline
- ์๋น์ค๊ฐ ๋ง์์ง์๋ก ๋ฐฐํฌ๊ณผ์ ๊ณผ ์คํฌ๋ฆฝํธ๊ฐ ๋ณต์กํด์ง๋ค.
- ์ํ์ค๊ฐ ์ ํํ ์ง์ฌ์ ธ์๋ ์์ ์ ๋งค๋ฒ ์๋์ผ๋ก ์คํํ๋๊ฑด ๋นํจ์จ์ ์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ MSA๋ฅผ ๋ํ๋ก์ด ํ ๋ CICD๋ ์ฌ ์ค์ ํ์๋ค.
Event Driven Architecture
- MSA๋ ์๋น์ค๊ฐ Async(๋น๋๊ธฐ) ํต์ ์ ํ ์ ์๋ ์์คํ ์ ๋์์ธํ๋๊ฒ ์ค์ํ๋ค.
- ๋ชจ๋ ํต์ ์ Sync(๋๊ธฐ)๋ก ์งํํ๊ฒ๋๋ฉด ์์ ์ฑ์ด ๋ถ์กฑํด์ง๊ณ ์ค์ผ์ผ๋ง์ด ๋ณต์กํด์ง๋ค
3.1 API Gateway

- ๊ฐ๋ ฅํ ๋ณด์ ๋ ์ด์ด๊ฐ ๋ ์ ์๋ค.\
- ํตํฉ๋ ์ธํฐํ์ด์ค ์ ๊ณต์ด ๊ฐ๋ฅํ๋ค.
- Single Point of Failure ๋๋ Bottle Neck์ด ๋ ์ ์๋ค.
- ์ต๋ํ ๊ฐ๋ณ๊ฒ ์ค๊ณํด์ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ญํ ์ ์ถฉ์คํ์
3.2 Service Discovery

- Monolithic Application์ ๋ชจ๋ ๋ก์ง์ด ํ๋์ ์ ๋์ผ๋ก ํตํฉ๋ผ์์ผ๋ ์๋น์ค๊ฐ ํต์ ์ด ํ์์๋ค.
- MSA๋ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ํต์ ์ ํตํด ๋ค๋ฅธ ๋๋ฉ์ธ์์ ํ์ํ ์์๋ค์ ๋ถ๋ฌ ์ฌ ์ ์๋ค.
- ๋ฐฉ๋ฒ์ผ๋ก ๋ํ์ ์ผ๋ก Client/Server Side Service Discovery๊ฐ ์กด์ฌํ๋ค
3.3 Inter-Microservice Communication

- MSA๋ ์๋น์ค๊ฐ ํต์ ์ด ๋งค์ฐ ์ค์ํ๋ค.
- ๊ฐ ์๋น์ค๊ฐ ์์ ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ํต์ ์ ํ ์ ์์ด์ผํ๊ธฐ ๋๋ฌธ์ ๋ค์ํ ์๋ฃจ์ ์ด ์กด์ฌํ๋ค.
- ์ง์ ์ ์ธ ์์ฒญ/์๋ต ํํ๋ฅผ ๋ค๋ฃจ๋ Sync(๋๊ธฐ) ํํ์ ํต์ ๊ณผ Queue ๋ฐฉ์์ ์ฌ์ฉํ๋ Async(๋น๋๊ธฐ) ํํ๊ฐ ์กด์ฌํ๋ค
3.4 ๋ ๋ฆฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค

- ๊ฐ๊ฐ Microservice์ ์์ ํ ๋ ๋ฆฝ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๋ฉ์ธ๋ณ๋ก ๋ฐ๋ก ๊ตฌ์ถ ํ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ค์ด ๋์๋ ์ ์ฒด ์์คํ ์ด ๋ค์ด๋์ง ์๋๋ก ํด์ค๋ค.
- ํ์ ์ฌํญ์ ์๋๋ค. MSA์ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฑ/์น์๋ฒ๋ง ๋ถ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋ ๋๋ ๊ณต์ ํ ์ ์๋ค
3.5 Distributed Logging

- Monolithic Architecture๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋จ์ํ ํ์ผ์ ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ ์๋ฒ๋ก ๋ค์ด๊ฐ์ ๋ณผ ์ ์๋ค.
- ๊ฐ ์๋น์ค์์ ์์ฑ๋๋ ๋ก๊ทธ๋ค์ ๋ชจ๋ ํตํฉํด์ ์ค์ํ ํ ํ ๋ถ์ํด์ผํ๋ค.
- ๋ก๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ์์คํ ์ ํ์ฌ ์ํ (Health/Memory/Cpu)๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค
3.6 CI/CD ํ์ดํ๋ผ์ธ

- MSA๋ก ์๋ง์ ์๋น์ค๋ฅผ ์๋์ผ๋ก ๋ฐฐํฌํ๋ค๋๊ฑด ๋ง์ด ์๋๋ค. Human Error๊ฐ ๋๋ฌด ๋ง์์ง๋ค.
- ๊ฐ๋ฐ ํ ์์คํ
์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์
ํ๊ณ (CI ํ
์คํธ๋ฑ) ์๋์ผ๋ก ๋น๋ ๋ฐ ํจํค์ง ํ
- ์ค์ผ์คํธ๋ ์ด์ (Kubernetes)์ ๋ฐฐํฌ ๋ ์ ์๋๋ก ์์คํ ์ ๊ตฌ์ฑํด์ผ ํจ์จ์ ์ผ๋ก MSA ์ด์์ด ๊ฐ๋ฅํ๋ค
3.7 Event Driven Architecture

- Microservice๊ฐ ๋ง์์ง์๋ก ํจ์จ์ ์ผ๋ก ์์ ์ฑ์ ๋ณด์ฅํ๊ณ Scaling์ ํ ์ ์์ด์ผํ๋ค.
- HTTP๋ฑ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ํต์ ํ๋ฉด Scaling์ด ์ด๋ ค์์ง๋ค.
- Async ๋ฐฉ์์ผ๋ก ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ๋ฉด ์๋น์ค๊ฐ ํจ์จ์ ์ธ decoupling์ด ๊ฐ๋ฅํด์ง๊ณ ์ค๊ณ๊ฐ ํจ์จ์ ์ด๋ค
4. ์๋ ์ ๊ฒ MSA
MSA๋ฅผ โ๊ถ๊ทน์ ์ธ ์ํคํ ์ฒโ๋ก ์๊ฐํ๋ฉด ์ ๋ ์๋๋ค. MSA๊ฐ ์ ํต์ ์ธ ์ํคํ ์ฒ์ ๋ง์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํด์ฃผ์ง๋ง, ๋์์ ๋ง์ ๋ฆฌ์์ค๋ฅผ ํ์๋กํ๊ณ ์ค๊ณ ์์ฒด๊ฐ ๋งค์ฐ ๋์ด๋๊ฐ ๋๋ค. ๊ทธ๋์ MSA๋ฅผ ๊ตฌํํจ์ผ๋ก์ ์คํ๋ ค ์ค๊ณ๊ฐ ๋์ฑ ๋ณต์กํด์ง๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ค ๋นํจ์จ์ ์ผ๋ก ๋ณํ ์ ์๋ค.
- MSA๋ ์ํํธ์จ์ด ๊ท๋ชจ๊ฐ ์ปค์ ธ์ ์ ์ ๋ฌด๊ฑฐ์์ง๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋์๋ค.
- Monolithic์ผ๋ก ์ค๊ณํด๋ ์ถฉ๋ถํ ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ๋ค๋ฉด MSA๋ฅผ ํ ํ์ ์๋ค.
- MSA๋ ์๋นํ ๋ง์ ๊ธฐ์ ๋ค์ด ์กฐํ๋กญ๊ฒ ์๋ํ๋ ์ํฉ์ ์๊ตฌํ๋ค.
- MSA ์์ฒด๊ฐ โํน์ ๊ธฐ์ โ์ ์๊ตฌํ๋ ์ํคํ ์ฒ๋ ์๋์ง๋ง, ํ์ค์ ์ผ๋ก ๋ดค์๋ ๋ง์ ๊ธฐ์ ์ ์กฐํ๊ฐ ํ์ํ๋ค.
- ์ฆ, ๋ค์ํ ๊ธฐ์ ์ ๋ฅ์ํ๊ฒ ํ์ฉ ํ ์ ์๋ ๊ธฐ์ ์๊ฐ ์๋ค๋ฉด ์คํ๋ ค ์ง์ด ๋ ์ ์๋ค.
- MSA์ ๊ธฐ๋ณธ์ ์ธ ์ธํ๋ผ์ ํ์ดํ๋ผ์ธ ๊ทธ๋ฆฌ๊ณ ์ํคํ
์ฒ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ด๋์ ๋ ์ธ๋ ฅ์ด ๊ผญ ํ์ํ๋ค.
- ๋ฌผ๋ก ์ด ์๋ฆฌํธ ๊ฐ๋ฐ ์ง๋จ์ด๋ผ๋ฉด ์์์ ์ธ์์ผ๋ก ๊ตฌํ ํ ์๋ ์๊ฒ ์ง๋ง,
- ์ง์๋ค์ด ํด์ฌํ์๋ ์ผ๋ง๋ ํจ์จ์ ์ผ๋ก ๋์ฒดํ๊ณ ์ธ์์ธ๊ณ๊ฐ ๊ฐ๋ฅํ ์ง์ ๋ํ ๋ถ๋ถ๋ ๊ณ ๋ฏผ ํด๋ด์ผํ๋ค
- Monolithic Architecture๋ณด๋ค MSA๋ฅผ ์ด์ํ ๋ ์๋ฒ ์ธํ๋ผ ์ต์ ๋น์ฉ์ด ์๋ฑํ ๋๋ค.
5. ์คํดํ์ง ๋ง์!
MSA๋ Microservice Architecture๋ค. ๋ง ๊ทธ๋๋ก ์๋น์ค๋ฅผ ์๊ฒ ๋๋ ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ผ๋ฉด ๋๋ค๋ ๊ฐ๋ ์ด๋ค.
MSA๊ฐ Domain Driven Design, Clean Architecture, Onion Architecture, Hexagonal Architecture ๋ฑ์ ๊ฐ์ ํ์ง ์๋๋ค.
- ํ์ง๋ง ํน์ ์ํคํ ์ฒ์ ๋์์ธ ํจํด์ ์ฌ์ฉํ๋ฉด ํ์คํ MSA ์ด์์ด ์ ๋ฆฌํ๊ณ ์กฐํ๊ฐ ์ข์์ง๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํฐ ํ๋ก์ ํธ์์๋ ๋ค์ ํ ์ํคํ ์ฒ๋ฅผ ํจ๊ป ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ํ์ง๋ง ์ฌ๊ฑด์ด ์๋๋ค๋ฉด MVC ํจํด์ผ๋ก MSA๋ฅผ ํด๋ ํ๋ฆฐ๊ฒ ์๋๋ค.
๊ณ ์ฐจ์ ์ํคํ ์ฒ๋ฅผ ์ ์ฉ ํ ์๋ก ๋ณต์กํ ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ์์ ์ ์ง๋ณด์์ ๊ฐ๋ฐ์ด ํธ๋ฆฌํด์ง๋ค. ํ์ง๋ง ์์ ํ๋ก์ ํธ์์๋ ์คํ๋ ค ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๊ฐ ๋ง์์ง๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๋๋ฐ ์ฅ์ ๋ฌผ์ด ๋ ์ ์๋ค.
์ข์ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค๋ฅผ ์ดํดํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ค.
- ๋ชจ๋ ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค๋ฅผ ์ํ ํํ์ด ํ์ํ๋ค. ํนํ๋ ์๊ท๋ชจ ๊ธฐ์ ์ด๋ผ๋ฉด ์ด ๋ถ๋ถ์ด ๋์ฑ๋ ์ค์ํ๋ค.
- ์ฌ์ ์ ์งํ์ ์ํด ์ข์ ์ํคํ ์ฒ๋ฅผ ๋ฌด์กฐ๊ฑด ํฌ๊ธฐํ๋ผ๋ ์ด์ผ๊ธฐ๊ฐ ์ ๋ ์๋๋ค.
- ์ง๊ธ ๋น์ฅ ์ ์ฉ ํด์ผํ๋ ์์ ์ด๋ผ๋ ํ์ ์ด ๋ ๋ค๋ฉด ๊ฐ๋ ฅํ๊ฒ ๋ฐ๊ณ ๋๊ฐ์.
- ํ์ง๋ง โ๊ทธ๋ฅ ์ด๊ฒ ์ข๋ค๊ณ ๋ฐฐ์ ๊ธฐ ๋๋ฌธ์โ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ๋์ง๋ ๋ง์
๋ฌผ๋ก ๋ชจ๋ฅด๊ณ ์์ฐ๋๊ฒ๊ณผ ์๊ณ ์์ฐ๋๊ฑด ๋๋ฌด ๋ค๋ฅด๋ค. ๊ทธ๋ฌ๋ ๋ง์ ์ง์์ ์ต๋ํ ํ ํ๋ก์ ํธ๋ณ๋ก ํ๋ช ํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธธ ๋ฐ๋๋ค.
6. MSA ์งํ ๊ฐ์
์ด ๊ฐ์๋ ์ต์ํ์ NestJS Microservice ๊ตฌํ๋ถํฐ ์์ํด์ ์ ์ฐจ ๊ธฐ์ ์ ๋ถ์ฌ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํ๊ฒ ๋๋ค.
Microservice๋ ์ฌ์ฉํ๋ ๊ฒ ๋ง์ผ๋ก๋ ์๋นํ ๋ง์ ์ฑ๋ฆฐ์ง์ ๋ฌธ์ ๋ค์ ์ผ๊ธฐํ๋ค. ์ด ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ์ํด ๋ง์ ๊ฐ๋ ๋ค์ด ์๊ฒจ๋ฌ๊ณ ๋ง์ ๊ธฐ์ ๋ค์ด ๋ฐ๋ช ๋๋ค. ํ์ง๋ง ์ด ๋ชจ๋ ๊ฑธ ํ๋ฒ์ ๋ชจ๋ ์ ์ฉํ ํ์๋ ์๋ค. ์ํํธ์จ์ด์ ๋ฌด์ธ๊ฐ๊ฐ ์ถ๊ฐ๋๋ค๋๊ฑด ์ ์ง ๋ณด์ ๋น์ฉ์ด ๋ ๋ง์ด ๋ค๊ณ ๋ ๋ง์ ๊ธฐ์ ์๊ฐ ํ์ํ๋ค๋ ๋ป์ด๋ค.
์ด๋ค ๊ธฐ์ ์ ๊ณต๋ถํ๊ณ ๊ทธ ๊ธฐ์ ์ ๊ผญ ์ค๋ฌด์ ์ฌ์ฉํ ์ ์์ด์ผ๋ง ์ ์ฉํ๊ฑด ์๋๋ค. ํ์ง๋ง ์ ๋งํ๋ฉด ์๊ฐ์๋ค์ด ์ด ๊ฐ์์์ ๋ฐฐ์ด๊ฑธ ์ค๋ฌด ์์ ์ฌ์ฉ ํด๋ณผ ์ ์๋ค๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋ฌด๋ฆฌํ์ง ์๋ ๊ท๋ชจ๋ก Microservice๋ฅผ ์งํํ๋ ๋ฐฉ๋ฒ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณ ๋ํ๋ ๊ธฐ์ ๋ค์ ๋ถ์ฌ๊ฐ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์๋ฅผ ์งํํ ๊ณํ์ด๋ค.
์ด ๊ฐ์์ ๋์ค๋ ๋ชจ๋ ๊ธฐ์ ์ด โMSA๋ฅผ ํ๋ ค๋ฉด ๊ผญ ์ฌ์ฉํด์ผํ๋โ ๊ธฐ์ ์ด๋ผ ์๊ฐํ ํ์์๋ค. Docker์ Kubernetes๊ฐ์ ๊ฒฝ์ฐ ์ฌ์ค์ ์ฌ์ฉ ์ํ๋๊ฒ ๋ ์ด๋ ต๊ธด ํ์ง๋ง, DDD, Clean Architecture, Istio, CQRS, Kafka๋ฑ ๋๋ฌด ๋ง์ ๊ธฐ์ ๋ค์ด ๋์ฒด ์ํ์ด ์กด์ฌํ๊ณ , โ๋์ ํ์ง ์์ ์ฉ๊ธฐโ๋ฅผ ์ถฉ๋ถํ ๊ฐ์๋งํ ๊ธฐ์ ๋ค์ด๋ค.
๊ทธ๋ฌ๋ ์ด ๊ฐ์์์ ์ ๋ฌํ๋ โ๋ฉ์ธ์งโ์ ์ง์ค ํ์ผ๋ฉด ์ข๊ฒ ๋ค. ์ด๋ค ๊ธฐ์ ์ด ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์๊ณ , ๋ฐ๋ฉด์ ์ด๋ค ๋จ์ ์ด ์๋์ง ์ ์ดํดํ๋ค๋ฉด ๋ด ํ๊ณผ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ๋นํ ๊ท๋ชจ์ MSA๋ฅผ ํ ์ ์์๊ฑฐ๋ผ ์๊ฐํ๋ค.
๐ก ํ๋ก์ ํธ ๊ธฐ๋ฅ ํ๋ก์ฐ
์ฌ์ฉ์ ์ธ์ฆ โ ์ฃผ๋ฌธ ๋ฐํ โ ์ํ ํ์ธ ๋ฐ ๊ฐ๊ฒฉ ๊ฒ์ฆ โ ๊ฒฐ์ โ ์๋ฆผ
6.1 ๊ตฌํํ Microservice Domain

6.2 ๊ตฌํํ Microservice Domain ๊ตฌ์กฐ

6.3 ์ฝ๋ ์ํคํ ์ฒ ๋ฐ์ ์ํค๊ธฐ

6.4 ๋ค์ํ ๋คํธ์ํน ๋ฐฉ๋ฒ ๋ฐฐ์ฐ๊ธฐ

6.5 ์ปจํฐ์ด๋ํ & ์ค์ผ์คํธ๋ ์ด์

6.6 ํจํด ์ ์ฉ

6.7 ๋ชจ๋ํฐ๋ง๊ณผ ๋ก๊น
