MSA

MSA(Microservices Architecture) 환경에서 서비스 간 통신 전략

ipxy 2025. 3. 30. 11:06
728x90

🔌 1. 동기식 통신(Synchronous Communication)

대표 기술:

  • HTTP/REST
  • gRPC

특징:

  • 즉시 응답을 받아야 하는 요청에 적합
  • 클라이언트는 응답이 올 때까지 대기
  • 개발이 상대적으로 쉬움

장점:

  • 간단한 요청-응답 처리 구조
  • 디버깅 및 로깅이 쉬움

단점:

  • 서비스 간 강한 결합 발생
  • 한 서비스의 장애가 다른 서비스에 전파될 위험 있음
  • 확장성과 복원력이 낮음

예시:

Client → Order Service → Product Service → 응답 반환

📩 2. 비동기식 통신(Asynchronous Communication)

대표 기술:

  • 메시지 브로커 (Kafka, RabbitMQ, NATS 등)
  • 이벤트 기반 아키텍처

특징:

  • 요청을 큐나 토픽에 발행하고 바로 다음 작업으로 넘어감
  • 소비자는 메시지를 수신하고 독립적으로 처리

장점:

  • 서비스 간 결합도 낮음
  • 확장성, 유연성, 복원력 우수
  • 비즈니스 이벤트 중심 설계 가능 (Event-Driven Architecture)

단점:

  • 구현 복잡도 증가
  • 오류 추적 및 디버깅 어려움
  • 실시간 응답이 필요한 경우 부적합

예시:

Order Service → Kafka Topic(order.created) → Product Service에서 소비

🔁 3. 하이브리드 전략 (혼합형)

설명:

  • 대부분의 실전 시스템에서는 동기 + 비동기 통합 전략 사용
  • 예를 들어, 상품 정보 조회는 REST, 주문 생성 후 재고 차감은 이벤트 방식

예시:

  • 프론트엔드 요청 → 백엔드 동기 처리
  • 내부 서비스 간 로직은 비동기 이벤트 처리

🔒 4. 서비스 간 통신 고려사항

 

항목  설명
트랜잭션 처리 Saga 패턴, 보상 트랜잭션 활용
에러 처리 재시도, Circuit Breaker (예: Resilience4j)
서비스 검색 서비스 디스커버리 (예: Consul, Eureka)
로깅/모니터링 트레이싱 도구 (예: Jaeger, Zipkin, OpenTelemetry)
보안 Mutual TLS, OAuth2, API Gateway 인증

💡 실전 팁

  • 동기식은 사용자 응답이 필요한 API에서만 최소화해서 사용
  • 나머지는 가능한 한 이벤트 기반 메시지 처리로 전환
  • 시스템 전체의 안정성과 확장성을 위해 비동기 메시징 + Circuit Breaker + 트랜잭션 패턴 조합을 고려

 

728x90