728x90
반응형
마이크로서비스 아키텍처에서는 시스템이 쪼개진 만큼 서비스 간 통신 방식이 매우 중요합니다. 통신 방식은 크게 동기(Synchronous)와 비동기(Asynchronous) 두 가지로 나뉩니다.
1. 동기 통신 (Synchronous Communication)
요청을 보낸 서비스가 응답이 올 때까지 가지 않고 기다리는(Blocking) 방식입니다. 구조가 직관적이라 가장 많이 쓰이지만, 호출 지연(Latency)이 연쇄적으로 늘어날 수 있습니다.
① HTTP / REST API (OpenFeign)
- 개념: 가장 대중적이고 표준적인 통신 방식입니다. 스프링 생태계에서는 OpenFeign 라이브러리를 사용해 편리하게 구현합니다.
- 장점: 웹 표준 준수, 구현 및 디버깅 용이, 기술 스택 무관.
- 단점: 헤더가 무겁고 JSON 기반이라 데이터 크기가 큼. 블로킹(Blocking)으로 인한 성능 병목 가능성.
② gRPC (Google Remote Procedure Call)
- 개념: HTTP/2 기반의 고성능 RPC 프레임워크입니다. JSON 대신 이진 형식인 Protocol Buffers를 사용합니다.
- 장점: JSON보다 획기적으로 빠른 속도와 적은 대역폭 소모. 양방향 스트리밍 가능.
- 단점: 바이너리 데이터라 디버깅이 까다로움. .proto 파일 동기화 및 관리 공수 발생.
2. 비동기 통신 (Asynchronous Communication)
요청을 보낸 뒤 응답을 기다리지 않고 자기 할 일을 바로 하는(Non-blocking) 방식입니다. 중간에 메시지 큐(Message Queue)를 두고 이벤트를 주고받습니다.
① 메시지 브로커 (Kafka, RabbitMQ)를 통한 이벤트 기반 통신
- 개념: 발행자(Publisher)가 이벤트를 던지면 구독자(Subscriber)들이 가져가 처리하는 방식입니다.
- 장점: 서비스 간 결합도 완벽 해소(Decoupling). 장애 격리 및 트래픽 버퍼 역할 수행.
- 단점: 추가 인프라 관리 비용. 실시간 데이터 정합성 확인의 어려움(최종 일관성).
3. 어떤 상황에 어떤 통신 방법을 써야 할까?
REST API / gRPC가 적합한 상황:
- 즉각적인 응답(결과 확인)이 반드시 필요한 경우 (예: 로그인 검증, 실시간 결제 승인, 주문 가능 수량 조회)
메시지 큐(Kafka)가 적합한 상황:
- 부수적인 연쇄 작업이 많고 기다릴 필요가 없는 경우 (예: 알림톡 발송, 포인트 적립, 로그 전송 등)
4. 한눈에 보는 요약 표

반응형
'Study' 카테고리의 다른 글
| [내일배움캠프 TIL] REST API에서 현재 로그인 유저를 표현하는 방법 - /me vs /{userId} (0) | 2026.06.12 |
|---|---|
| [내일배움캠프 TIL] Spring Cloud Config Server 설정 파일 관리 방식: Native vs Git 분리 (우리의 선택과 기술적 명분) (0) | 2026.06.11 |
| [내일배움캠프 TIL] 분산트랜잭션과 데이터 일관성 (0) | 2026.06.09 |
| [내일배움캠프 TIL] MSA 총정리 (0) | 2026.06.08 |
| [내일배움캠프 TIL] SAGA 패턴 (0) | 2026.06.05 |