[MSA] 마이크로서비스 간의 통신 방식

Yohan_05·2023년 5월 28일
0

MSA

목록 보기
2/4

마이크로 서비스 통신 패턴

Synchronous Solution

  • 동기적
  • REST API
  • 서비스 A에서 서비스 B로 직접 요청을 보내고 동기적으로 응답을 기다림

Asynchronous Messaging

  • 비동기적
  • 메시지 브로커를 사용하여 서비스 A에서 서비스 B로 메시지를 보냄
  • 서비스 A는 응답을 기다리지 않음.
  • 서비스 B는 일반적으로 동일한 메시징 시스템을 통해 결과를 사용할 수 있을 때 (결과가 예상되는 경우) 결과를 보냄
  • RabbitMQ와 Apache kafka

Synchronous Solution의 문제점?

  • A가 연결을 시도할 때 B가 오프라인 상태일 수도 있음.
  • 그런 경우 어딘가에 요청을 저장하고 나중에 다시 시도해야하는가?
  • 언제, 얼마나 자주 다시 시도해야함?
  • A가 응답을 기다리는 동안 시간이 오래 걸리거나 실패할 수 있음.
  • B가 데이터 처리를 완료했지만 A가 오프라인 상태인 경우 어떻게 처리해야함
  • 등등 고려할 사항들이 너무 많다.

Asynchronous Messaging 에 대해 알아보자.

  • A(Producer)에서 B(Consumer)로 메시지를 전달하고 B에서 A로 메세지를 전달할 때 중개자 역할을 하는 "메시지 브로커" 가 있음.
  • 메시지 브로커는 Producer에서 메시지를 수신하여 Consumer에게 메시지를 전달하여 작업을 수행
  • 메시지 브로커는 Consumer의 연결이 끊어졌을 때 임시 메시지 저장소를 제공
  • 마이크로 서비스 별로의 독립성을 확보
profile
안녕하세요 DevOps 엔지니어로 현업에서 활동중인 요한이라고 합니다.

0개의 댓글