본문 바로가기
MessageQueue/Kafka

Event broker 와 Message broker 란?

by 아이티.파머 2023. 6. 2.
반응형

큐를사용하고 공부하다보면 여러가지 큐가 있다는 사실을 안다.

kafka, redis queue,rabbit mq, active mq….  

하지만 이큐들이 어떤 메커니즘으로 어떤 철학을 가지고 생성되었는지 까지는 알지 못했다.   그래서 어느순간 궁금하긴했다. 

이 제품들의 차이점이 말이다.   기본적인 차이점들은 대부분 알고들있다.  AMPQ 프로토콜을 지원한다. 단순 메모리 큐다, TCP 통신을 이용함으로 대용량에 적합하다. 이렇게는 알고있지만 브로커에대해선 아직 생소하다.  그래서 한번 찾아보기 시작했고 이에대해 정리를 해보았다. 

 

메세지큐에는 여러가지 큐들이 있다. 카프카, 레빗엠큐, 엑티브엠큐, 레디스큐까지 다양하다.
헌데 우린 이 메세지큐들이 좋다는걸 알지만 어떤차이점이 있고 언제 어떻게 적절하게 사용하여야 하는지는 잘모른다. 먼저 이 여러가지 큐들의 가장큰 차이점은 이벤트 브로커이냐, 메세지브로커이냐로 나뉘며 이 두가지가 어떤 차이 점이 있는지 알아보자.

이벤트 브로커와 메세지 브로커란?

먼저 이벤트브로커(event broker)메세지브로커(message broker)는 모두 메세지를 전송하고 라우팅한다는의미에서는 같은 의미로 사용 된다. 즉 일반적으로 두가지모두 데이터 흐름에 중요한 역할을 하는 미들웨어 이다.

                         Publisher (producer)
                             |
                             v
                    +----------------+
                    |  Event Broker  |        
                    |  Message Broker|        
                    +----------------+        
                             ^
                             |
                         Subscriber(Consumer)

하지만 두가지를 좀더 정확하게 이야기하면 다른 의미로 표현된다.

 

이벤트 브로커는 이벤트 주도아키텍쳐(EDA- Event Driven Architecture) 를 구현하는데 사용되는 시스템이다. 이벤트 브로커는 이벤트라고 불리는 레코드를 보관하고 인덱스를 통해 개별 엑세스를 관리 할 수있다. 또한 필요한 시간동안 이벤트를 보존할수있으며 , 이벤트 데이터를 브로커에 저장함으로 단일 진실 공급원으로 사용 가능하다.

 

메세지 브로커는 메세지 지향 미들워어(Message-Oriented Middleware)를 구현하는데 사용되는 시스템이다. 메세지 브로커는 데이터를 보내고 처리하고 삭제하는 구조이다. 보통 어플리케이션간의 네트워크 데이터를 중계해주는 역할을 담당한다.

 

개인적으로 이둘의 차이점은 빨간색으로 표시한 부분이 가장 큰차이점으로 보인다. 레코드를 큐에 보관을 하느냐, 혹은 단순히 미들웨어 단에서 네트워크간 통신을 위해 데이터를 전달하고 삭제 하는 역할을 하는가에 따라 이벤트기반, 메세지기반 브로커로 분리 할 수 있을것 같다. 이 두가지는 공통점이 많으면서도 어떤 시스템을 만드느냐에 따라 제품군을다르게 해서 사용 해야 할 것이다.

결론

두가지다 같은 분산처리방식이다. 메세지큐와, 이벤트큐는 비슷한 구조를 가지며 송신자와 수신자사이에서 메세지나 이벤트를 교환하는 역활을 수행한다.

결국 메세지기반에 중점을두고 처리하느냐 , 이벤트기반에 두고 데이터를 처리하느냐에 따라 다르게 분리되고 대표적으로 메세지큐는 Producer / Consumer 의 패턴을 사용하고, 이벤트큐는 Publisher / Subscriber 의 패턴을 사용한다.

 

 


참고

  • 메시지 기반 큐
  • **메세지기반 아키텍처는 Producer / Consumer (발생-소비)의 패턴**을 따르는 형식으로 Producer 가 메세지를 생성하고 Consumer가 메세지를 소비하는 형태이다. 메세지는 보통 큐 또는 토픽을 통해 전달되며, 큐는 보통 FIFO 방식으로 메세지를 처리하고, 토픽은 여러 컨슈머가 연결되어 있을 경우 동일한 메세지를 동시에 처리 할 수있다.
  • 이벤트 기반 큐
  • 이벤트 기반 아키텍처는 Publisher / Subscriber (게시- 구독) 패턴을 따르는 형식으로 구독자가 이벤트를 구독하고 있다가 처리한다. 이벤트는 이벤트 버스를 통해 전달되고, 이벤트 핸들러는 해당 이벤트를 수신하여 처리한다.

메세지기반의 브로커특징

메세지기반의브로커는 Producer 에서 데이터를 queue 로 전송하고 Consumer 에서 데이터를 받아 처리하며 처리된 데이터는 삭제된다.

  • 메세지를 소비자가 처리하고 난뒤에는 큐에서 삭제된다.
  • 일반적으로 한번 소비된 메세지는 더이상 사용되지 않으며 처리 완료 후에는 삭제 된다.
  • 메세지의 보존기간이나 지속성은 메세지큐의 구성에 따라 다를수도 있다.

이벤트기반 브로커의 특징

  • 이벤트를 처리한 후에도 해당 이벤트는 보관 가능하고 재처리 가능 하다.
  • 보존기간에 따라 이벤트 저장소를 사용하여 검색 할 수 있다.
  • 이벤트 발생후 비동기적으로 구독자에게 전달되고, 각 구독자는 이벤트를 독립적으로 처리 할 수 있다.

카프카를 사용한 이벤트기반의 브로커 특징 및 예제

예를 들어 카프카와 같은 이벤트기반의 브로커(kafka)라면 큐를 이용할때 토픽과 파티션이라는 개념으로 사용되는데 offset 을 group-id 에 따라 offset을 다르게 관리 할 수있다.

다음 그림을 보고 생각해보자 .

 

 

그림에 대한 설명

analysis module 과 data-saver module 두가지의 Topic 이름은 동일 하나, group_id를 다르게 사용함으로 offset을 다르게 관리 할 수있다. 이를통해 하나의 토픽에서 두가지의 일을 가능하게 할 수있다. 그림으로 보는것 처럼 사용자를 통해 들어온 Tracking 데이터는 TRACKING_TOPIC 의 topic 에 쌓이게 되고,같은 토픽을 바라보는 모듈 두개는 별도의 그룹아이디를 가지고 있음으로 offset을 각자 관리 하게 된다.

이로써 data-saver 모듈은 데이터를 가져와 저장만 하는 역확을 하고, data-analisys 모듈은 쌓여 있는 데이터를 가져와서 분석후 저장 할 수있다.

이처럼 데이터를 이벤트형식으로 사용가능하고 레코드를 보관할수있는 형식을 이벤트 브로커라 한다.

반응형

'MessageQueue > Kafka' 카테고리의 다른 글

kafka ack mode 란?  (0) 2023.06.08
Message Queue 처리 구조에 따른 종류  (0) 2023.06.02
docker kafka 보안 설정  (0) 2023.05.31
kafka patitioning 과 replication, ack ISR 의 관계  (7) 2023.05.03
kafka cluster 구성  (0) 2020.05.13