Q2: ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ (MSA)
์ง๋ฌธ: MSA๊ฐ ๋ฌด์์ธ์ง ์ค๋ช
ํ๊ณ , ๋ชจ๋๋ฆฌ์ ์ํคํ
์ฒ์ ๋น๊ตํ์ฌ ์ฅ๋จ์ ์ ์ค๋ช
ํ์ธ์. ํนํ ๋์จํ ๊ฒฐํฉ, ์๋น์ค ๊ฐ ํต์ , ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ ๋ต์ ์ค์ฌ์ผ๋ก ์ค๋ช
ํ์ธ์.
| ์ฉ์ด |
์ค๋ช
|
| MSA |
์ ํ๋ฆฌ์ผ์ด์
์ ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ ์๋น์ค ์งํฉ์ผ๋ก ๊ตฌ์ฑํ๋ ์ํคํ
์ฒ |
| Loosely Coupled |
์๋น์ค ๊ฐ ์์กด์ฑ์ ์ต์ํํ ๋์จํ ๊ฒฐํฉ ๊ตฌ์กฐ |
| API Gateway |
ํด๋ผ์ด์ธํธ ์์ฒญ์ ๊ฐ ์๋น์ค๋ก ๋ผ์ฐํ
ํ๋ ๋จ์ผ ์ง์
์ |
| Service Discovery |
์๋น์ค ์ธ์คํด์ค์ ์์น๋ฅผ ๋์ ์ผ๋ก ์ฐพ๋ ๋ฉ์ปค๋์ฆ |
| Circuit Breaker |
์ฅ์ ์๋น์ค๋ก์ ์์ฒญ์ ์ฐจ๋จํ์ฌ ์ ํ๋ฅผ ๋ฐฉ์งํ๋ ํจํด |
| Saga Pattern |
๋ถ์ฐ ํธ๋์ญ์
์ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ๋ ํจํด |
| Polyglot Persistence |
์๋น์ค๋ณ๋ก ์ต์ ์ DB ๊ธฐ์ ์ ์ ํํ๋ ์ ๋ต |
Monolithic vs Microservices
Monolithic: Microservices:
โโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Single Application โ โ User โ โ Order โ โ Payment โ
โ - User Service โ โ Service โ โ Service โ โ Service โ
โ - Order Service โ โ โ (Node) โ โ (Java) โ โ (Python) โ
โ - Payment Service โ โ UserDB โ โ OrderDB โ โ PayDB โ
โ - Single Database โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโ โ API Gateway โ
| ํญ๋ชฉ |
Monolithic |
Microservices |
| ๋ฐฐํฌ |
์ ์ฒด ์ฌ๋ฐฐํฌ |
์๋น์ค๋ณ ๋
๋ฆฝ ๋ฐฐํฌ |
| ํ์ฅ |
์์ง ํ์ฅ (Scale-Up) |
์ํ ํ์ฅ (Scale-Out) |
| ๊ธฐ์ ์คํ |
๋จ์ผ |
์๋น์ค๋ณ ์ต์ ์ ํ ๊ฐ๋ฅ |
| ์ฅ์ ์ํฅ |
์ ์ฒด ์์คํ
๋ค์ด |
ํน์ ์๋น์ค๋ง ์ํฅ |
| ๊ฐ๋ฐ ์ด๊ธฐ |
๋น ๋ฆ (๊ฐ๋จ) |
๋๋ฆผ (์ธํ๋ผ ๊ตฌ์ถ ํ์) |
| ์ด์ ๋ณต์ก๋ |
๋ฎ์ |
๋์ (๋ชจ๋ํฐ๋ง, ๋ก๊น
, ์ถ์ ) |
| ๋ฐ์ดํฐ ์ผ๊ด์ฑ |
๊ฐํ ์ผ๊ด์ฑ (ACID) |
์ต์ข
์ผ๊ด์ฑ (BASE) |
๋๊ธฐ ํต์ (Synchronous)
-
REST API: ๊ฐ๋จํ๊ณ ์ง๊ด์ . ํ์์์ ๋ฐ Cascade Failure ์ํ
-
gRPC: Protocol Buffers ๊ธฐ๋ฐ์ผ๋ก ๋น ๋ฆ, Type-Safe. ๋๋ฒ๊น
์ด๋ ค์
๋น๋๊ธฐ ํต์ (Asynchronous)
-
Message Queue (Kafka, RabbitMQ): ์๋น์ค ๊ฐ ์์ ํ ๋์ปคํ๋ง, ์ฅ์ ๊ฒฉ๋ฆฌ
- ๋จ์ : ๋ฉ์์ง ์์/์ค๋ณต ์ฒ๋ฆฌ ๋ณต์ก, Eventual Consistency
๊ฐ ์๋น์ค๊ฐ ์์ฒด DB๋ฅผ ์์ (Polyglot Persistence).
- ์ฅ์ : ์คํค๋ง ๋ณ๊ฒฝ ๋
๋ฆฝ, ์ฅ์ ๊ฒฉ๋ฆฌ, ์ต์ DB ์ ํ ๊ฐ๋ฅ
- ๋จ์ : JOIN ๋ถ๊ฐ โ API ์กฐํฉ ํ์, ๋ถ์ฐ ํธ๋์ญ์
๋ฌธ์
Saga Pattern (๋ถ์ฐ ํธ๋์ญ์
)
๊ฐ ์๋น์ค๊ฐ ๋ก์ปฌ ํธ๋์ญ์
์ ์ํํ๊ณ ์ด๋ฒคํธ๋ก ๋ค์ ์๋น์ค๋ฅผ ํธ๋ฆฌ๊ฑฐ.
์คํจ ์ ๋ณด์ ํธ๋์ญ์
(Compensating Transaction)์ผ๋ก ๋กค๋ฐฑ.
์ฃผ๋ฌธ ์์ฑ โ ์ฌ๊ณ ๊ฐ์ โ ๊ฒฐ์ ์ฒ๋ฆฌ
์คํจ ์: ๊ฒฐ์ ์คํจ โ ์ฌ๊ณ ๋ณต๊ตฌ โ ์ฃผ๋ฌธ ์ทจ์
| ํจํด |
์ญํ |
| API Gateway |
๋ผ์ฐํ
, ์ธ์ฆ/์ธ๊ฐ, Rate Limiting, ๋ก๊น
๋จ์ผํ |
| Service Discovery |
์๋น์ค ์ธ์คํด์ค ์์น ๋์ ํ์ (Eureka, Consul) |
| Circuit Breaker |
์ฅ์ ์๋น์ค ์ฐจ๋จ โ Fallback ์๋ต (Resilience4j) |
| Distributed Tracing |
์์ฒญ ํ๋ฆ ์ถ์ (Jaeger, Zipkin) |
| ์ ํฉ |
๋ถ์ ํฉ |
| ํธ๋ํฝ์ด ๊ธ์ฆํ๋ ํน์ ๊ธฐ๋ฅ ์กด์ฌ |
์คํํธ์
์ด๊ธฐ (๋น ๋ฅธ ํ๋กํ ํ์
ํ์) |
| ํ ๊ท๋ชจ 10๋ช
์ด์ |
ํ ๊ท๋ชจ 5๋ช
์ดํ |
| ๋
๋ฆฝ์ ๋ฐฐํฌ ์ฃผ๊ธฐ ํ์ (์ผ 1ํ ์ด์) |
DevOps ์ธํ๋ผ ์์ |