ETC

MSA(MicroService Architecture) 의 통신 방법

D_Helloper 2023. 6. 7. 21:35

일대일(One-to-One) : 하나의 요청이 하나의 서비스를 실행할 경우

일대다(One-to-Many) : 하나의 요청이 여러 서비스를 실행할 경우

위와 같이 호출 하는 쪽과 호출을 받는 쪽으로 구분을 하거나

동기(Synchronous) : 요청을 보내고 응답이 올 때 까지 기다리는 방식

비동기(Asynchronous) : 요청을 보내고 응답을 기다리지 않고 다음을 실행

로 구분

 일대다

  일대일 일대다
동기 1) 요청/응답(Request/response) -
비동기 2) 알림(Notification) 4) 퍼블리시/구독(Publish/subscribe)
  3) 요청/비동기 응답(Request/async response) 5) 퍼블리시/비동기 구독(Publish/async responses)
  1. 요청/응답 : 요청을 보내고 응답이 올 때까지 대기
  2. 알림 : 요청을 전송만 함
  3. 요청/비동기 응답 : 요청을 보내면 비동기로 응답이 돌아옴
  4. 퍼블리시/구독
    1. 등록된 서비스들에 요청을 보냄
    2. 요청을 받은 서비스들은 각자 로직을 처리
    3. 잡지를 구독하는 것과 비슷해서 퍼블리시/구독 방식이라고 함
  5. 퍼블리시/비동기 응답 : 위와 같지만 비동기 형태로 응답을 보냄

IPC

메시지 포맷

  • 텍스트 기반(사람이 쉽게 읽을 수 있음): JSON, XML
  • 바이너리 포맷(성능 상 좋음): Apache AvroProtocol Buffers

비동기 메시지 기반 통신

  • 헤더와 바디로 구성되어 있으며, 채널을 통해 전송
  • 한 곳에만 보낼 수도 있음(One-to-One)
  • 퍼블리시/구독 모델을 따라 여러 곳에 메시지를 전송할 수도 있음(One-to-Many)

  • 메시징 방식은 클라이언트와 서비스 사이의 의존도를 줄여줌
    • 동기 방식은 클라이언트와 서비스가 서로를 알아야 하고 직접 통신하지만, 메시징 방식은 메시징 시스템을 통해 간접적으로 통신하기 때문
  • 전송되는 메시지가 많을 때 버퍼를 활용하여 속도 조절 가능

메시징 표준 프로토콜

  • AMPQ, STOMP

오픈소스 메시징 시스템

  • RabbitMQ, Apache Kafka, Apache ActiveMQ, NSQ 등

자료 출처 : https://futurecreator.github.io/2018/10/04/inter-process-communication-in-microservices/