MSA

여러 개의 작고 독립적인 서비스로 시스템을 구성하는 아키텍처 스타일로, 각 서비스는 독립적으로 배포·확장됩니다.

구조

              클라이언트
                  │
            API Gateway
         (인증 · 라우팅 · LB)
                  │
    ┌─────────────┼─────────────┐
    ▼             ▼             ▼
┌────────┐   ┌────────┐   ┌────────┐
│ 사용자  │   │  주문  │   │  결제  │
│ 서비스  │   │ 서비스 │   │ 서비스 │
└────┬───┘   └────┬───┘   └────┬───┘
     │             │             │
  ┌──┴──┐      ┌───┴─┐      ┌───┴──┐
  │  DB │      │  DB │      │  DB  │
  └─────┘      └─────┘      └──────┘

핵심 특징

서비스 간 통신

방식프로토콜특징
동기REST, gRPC즉각 응답이 필요할 때
비동기Kafka, RabbitMQ응답을 기다리지 않아도 될 때, 느슨한 결합
[동기 통신]
주문서비스 ──(HTTP)──→ 결제서비스 ──→ 응답 기다림

[비동기 통신]
주문서비스 ──(이벤트 발행)──→ Kafka ──→ 결제서비스 (독립 처리)

장점

단점

언제 적합한가?

→ 모놀리식 vs MSA

CSLOG에서 보기