포시코딩

4월4일 - 메시지 큐와 브로커 본문

TIL

4월4일 - 메시지 큐와 브로커

포시 2023. 4. 5. 00:41
728x90

메시지 큐(Message Queue)

프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중 하나로

메시지 지향 미들웨어(Message Oriented Middleware: MOM)을 구현한 시스템을 의미한다.

메시지 큐의 기본적인 원리를 설명하면 다음과 같다.

  1. Producer(생산자)가 Message를 Queue에 넣는다.
  2. Consumer가 Message를 가져와 처리한다.

메시지 큐를 활용하면 비동기, 낮은 결합도, 확장성, 탄력성, 보장성 등의 이점을 누릴 수 있다.

자세한 내용은 블로그 참고

이러한 이점이 있는 메시지 큐를 활용할 수 있는 시스템을 브로커라고 한다.

 

메시지 지향 미들웨어(MOM)

분산 시스템 간 메시지를 주고받는 기능을 지원하는 소프트웨어나 하드웨어 인프라를 의미한다.

 

브로커(Broker)

위의 메시지 큐를 활용할 수 있는 시스템.

크게 메시지 브로커이벤트 브로커로 나뉜다.

 

메시지 브로커

publisher가 생상한 메시지를 메시지 큐에 저장하고,

저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 해주는 브로커.

 

보통 서로 다른 시스템(혹은 소프트웨어) 사이에서 데이터를 비동기 형태로 처리하기 위해 사용한다.

이러한 구조를 보통 pub/sub 구조라고 하며 대표적으로 RabbitMQ 소프트웨어가 있다.

 

메시지 브로커의 제일 큰 특징은 consumer가 큐에서 데이터를 가져가게 되면 

즉시 혹은 짧은 시간 내에 큐에서 데이터가 삭제되는 특징들을 가지고 있다.

 

이벤트 브로커

이벤트 브로커는 기본적으로 메시지 브로커의 큐 기능들을 가지고 있기 때문에 메시지 브로커의 역할을 할 수 있다.

하지만 메시지 브로커는 이벤트 브로커의 역할을 할 수 없다.

 

이벤트 브로커는 publisher가 생산한 이벤트를 데이터베이스에 저장하듯 계속 저장하며

후에 consumer가 특정 시점부터 이벤트를 다시 읽어갈 수 있다는 차이점이 있다.

(장애가 일어난 시점부터 그 이후의 이벤트들을 다시 처리할 수 있다.)

 

이벤트 브로커의 제일 큰 특징은 대용량 데이터 처리에 있어서

메시지 브로커보다 더 많은 양의 데이터를 처리할 수 있는 능력이 있다는 것이다.

 

이벤트 브로커에는 대표적으로 Kafka가 있다.

 

 

 

 

참고한 곳

https://overcome-the-limits.tistory.com/673

 

[Project] 프로젝트 삽질기9 (feat Queue, bull)

들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림 서비스를 구축하려면, Queue를

overcome-the-limits.tistory.com

728x90