어 나 갱수.

[MSA] Message Queue를 알아보자 🤗 본문

MSA

[MSA] Message Queue를 알아보자 🤗

김경수 2023. 11. 25. 20:52
728x90

Message Queue란??

Message Queue는 프로세스 또는 프로그램 사이에 데이터를 교환할 때 사용하는 통신 방법 중에 하나입니다.

Message Queue를 이용해서 MSA에서 가장 중요한 서비스 간 통신을 할 수 있습니다.

대표적인 Message Queue에는 Kafka, RabbitMQ, ActiveMQ 등이 있습니다.

 

지금 publsher가 `m n + 1`이라는 메시지를 큐에 담고 있습니다. 현재 큐에는 소비를 기다리는 많은 메시지가 있습니다.

그리고 Queue의 메세지를 소비할 수 있는 소비자가 consumer A, consumer B 이렇게 있습니다.

consumer A가 `m1`이라는 메시지를 큐에서 소비했습니다. 이러면 consumer B는 `m1`이라는 메시지를 소비하지 못합니다.

하나의 메시지는 한 번만 처리 가능합니다.

 

Message Queue 구성요소

메시지

  • 메시지 큐를 통해 전송되는 데이터의 단위이다. 메시지는 텍스트, JSON, 바이너리 등 다양한 형식으로 구성된다.

  • 메시지가 저장되는 공간이다. 일반적인 Queue와 같이 FIFO의 형식으로 이루어져있다.

생산자

  • 메시지를 생성하고 메시지 큐로 데이터를 전송하는 역할을 한다. 예를 들어 데이터베이스에 새로운 레코드를 생성하고
    이를 메시지 큐에 전송한다.

소비자

  • 큐에서 메시지를 가져와서 처리하는 역할을 한다. 예를 들어 메시지 큐에 있는 데이터베이스 생성 레코드를 가져와서 저장하거나 특정 작업을 수행할 수 있다.

중개인

  • 메시지 큐 시스템을 관리하고 메시지를 중계하는 매개체이다. 중개인은 다양한 프로토콜을 사용해서 생산자와 소비자가 통신하는 것을 도와준다.

 

 

Messaging System

MSA에서는 각 서비스를 마이크로 단위로 분리합니다.

중앙에서 Messaging System가 메시지를 받습니다. 예를 들어 `Member:Regist:01`의 형태의 메시지를 받는 것입니다.

MemberServicer가 Messaging System을 구독(Subscribe)하고 있다가 `Member:`로 시작하는 메시지가 있다면 

MemberService가 그 메시지를 가지고 옵니다. 그리고 Regist라는 단어를 보고 `회원가입 요청이구나`라는 생각을 가질 수 있습니다.

이러한 구조를 Publish/Subsribe 구조라고 합니다.

 

 

Message Queue는 메세지를 만드는 발행자(publisher)와 메세지를 보관하고 있는 큐(Queue) 큐에서 메세지를 소비하는 여러 개의 소비자(consumer)로 이루어져 있습니다.

 

이 통신 방식은 publisher가 consumer에게 명령을 내리는 형식으로 이루어져 있습니다.

publish가 queue에 메시지를 담으면 consumer들이 명령에 맞는 동작으로 메세지를 소비합니다.

 

대표적인 Message Queue 시스템

RabbitMQ, Apache Kafka, ActiveMQ, Redis 등이 있다.

 

장단점

장점

  • 서비스 간의 결함도가 낮아져서 비즈니스 로직에만 집중할 수 있다.
  • 비동기 통신을 함으로 시간적 제약 없이 메시지를 처리할 수 있다.
  • 메시지 처리 방식은 Message Broker가 담당하고 각 서비스는 메시지만 보내기만 하면 된다.

단점

  • Message Broker 운영을 위한 자원이 더 필요하다.
  • 시스템이 복잡하다.

Reference

728x90

'MSA' 카테고리의 다른 글

[MSA] API Gateway란? 😊  (0) 2023.11.23
Oracle Ace 님의 MSA 발표 정리  (2) 2023.07.27