Study

서비스 간 통신 방법

kinim329 2026. 4. 16. 11:07

서비스 간 통신은 여러 서비스가 서로 필요한 데이터를 주고받거나 기능을 요청하는 방식이다.

서비스 간 통신이 필요한 이유

모놀리식 구조에서는 하나의 애플리케이션 내부에서 메서드 호출로 기능을 실행할 수 있다.

하지만 MSA에서는 기능이 각각 분리되어있으므로 다른 서비스의 기능이 필요할 때 네트워크를 통해 요청해야한다.

 

서비스 간 통신 방식의 종류

서비스 간 통신은 크게 동기 통신과 비동기 통신으로 나눌 수 있다.

1. 동기 통신

동기 통신은 한 서비스가 다른 서비스에 요청을 보내고, 응답이 올 때까지 기다리는 방식이다.

즉, 요청한 서비스는 상태의 서비스 처리 결과를 바로 받아야 다음 작업을 진행할 수 있다.

대표적인 방식은 다음과 같다.

RESTAPI

HTTP 기반으로 요청과 응답을 주고받는 방식이다.

가장 많이 사용되며, 구현과 테스트가 비교적 쉽다.

특징

  • 구현이 단순하다
  • 브라우저, Postman등으로 테스트하기 편하다.
  • 응답을 기다려야 하므로 상대 서비스가 느리거나 장애가 나면 영향받기 쉽다

GRPC

Rest와 마찬가지로 요청과 응답 방식이지만, 더 빠르고 효율적인 통신을 위해 사용하는 방식이다.

Protocol Buffers를 사용하여 데이터를 직렬화하므로, 일반적인 JSON 기반 REST보다 성능이 좋은 편이다.

특징

  • 속도가 빠르다
  • 데이터 크기가 작다
  • 서비스 간 내부 통신에 적합하다
  • 사람이 바로 읽기 어렵고 초기 학습 비용이 있다

2. 비동기 통신

비동기 통신은 요청을 보낸 뒤 즉시 응답을 기다리지 않고 다음 작업을 진행하는 방식이다.

보통 메시지 브로커를 통해 이벤트나 메시지를 전달한다.

대표적인 방식은 다음과 같다.

메시지 큐

서비스가 메시지를 큐에 넣고, 다른 서비스가 큐에서 메시지를 꺼내 처리하는 방식이다.

예시 : RabbitMQ, ActiveMQ

특징

  • 서비스 간 결합도가 낮아진다
  • 일시적으로 상대 서비스가 느려도 버퍼 역할을 할 수 있다
  • 순서 보장, 재시도, 실패 처리 등을 따로 고려해야한다.

이벤트 기반 통신

특정 사건이 발생했을 때 이벤트를 발행하고, 이를 구독한 서비스들이 처리하는 방식이다.

예시 : kafka, RabbitMQ

특징

  • 확장성이 좋다
  • 서비스 간 직접 호출이 줄어든다
  • 최종 일관성 구조와 잘 어울린다
  • 흐름 추적이 어렵고 디버깅이 복잡해질 수 있다

동기통신과 비동기통신 비교

구분 동기통신 비동기통신
처리방식 응답을 기다림 응답을 기다리지 않음
대표 예시 RESTAPI, gRPC kafka, RabbitMQ
장점 이해하기 쉽고 즉시 결과 확인 가능 결합도 낮고 확장성 좋음
단점 장애 전파 가능성 높음 흐름 파악과 에러 처리 복잡

 

'Study' 카테고리의 다른 글

Websocket 정리  (0) 2026.04.19
그래프 표현, DFS/BFS, 최단경로  (0) 2026.04.17
분산 트랜잭션과 데이터 일관성  (0) 2026.04.14
데드락  (0) 2026.04.13
동기화  (0) 2026.04.12