티스토리 뷰
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
'MSA' 카테고리의 다른 글
스프링 부트 기반의 MSA 환경에서 Spring Actuator를 필수 여부 (0) | 2025.03.20 |
---|---|
MSA(Microservices Architecture) 환경에서 Spring Boot + Next.js API 타입을 일치 (0) | 2025.03.18 |
최저 리소스와 최고 성능으로 스프링부트 애플리케이션을 구동 (0) | 2025.03.18 |