본문 바로가기
백엔드

Kafka(이벤트 브로커) vs RabbitMQ(메시지 브로커)

by jaeyong 2021. 6. 24.

개요

kafka와 rabbitmq 모두 pub/sub 기반의 메시지 큐 서비스를 제공합니다.

기존에는 rabbitmq보다 kafka에서 더 많은 기능 지원을 한다 정도만 알고 있었는데요.

이벤트 기반 MSA를 공부하면서 kafka와 rabbitmq에 대해서 조금은 더 자세히 알게되어 그 차이점에 대해서 간략하게 기록합니다.

메시지 브로커

메시지 브로커는 publisher가 생산한 메시지를 메시지 큐에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 중간 다리 역할을 해주는 브로커(broker)라고 볼 수 있습니다.

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

이러한 구조를 보통 pub/sub 구조라고 하며 대표적으로 RabbitMQ 소프트웨어가 있고 GCP의 pubsub, AWS의 SQS 같은 서비스가 있습니다.

이와 같은 메시지 브로커들은 consumer가 큐에서 데이터를 가져가게 되면 즉시 혹은 짧은 시간 내에 큐에서 데이터가 삭제되는 특징들을 가지고 있습니다.

이벤트 브로커

이벤트 브로커 또한 기본적으로 메시지 브로커의 큐 기능들을 가지고 있어 메시지 브로커의 역할도 할 수 있습니다.

 

또한 이벤트 브로커는 publisher가 생산한 이벤트를 저장하여, 후에 consumer가 특정 시점부터 이벤트를 다시 consume 할 수 있는 장점이 있습니다.
(예를 들어 장애가 일어난 시점부터 그 이후의 이벤트들을 다시 처리할 수 있습니다.)

이것이 메시지 브로커와 가장 큰 차이라고 볼 수 있습니다.

또한 대용량 데이터 처리에 있어서 메시지 브로커보다는 더 많은 양의 데이터를 처리할 수 있는 능력이 있습니다.

참고

'백엔드' 카테고리의 다른 글

Spring GCP Credentials 파일 여러개 적용하는 방법  (0) 2022.03.07
전략 패턴(Strategy Pattern)  (0) 2021.06.24
MySQL의 Prepare Statement  (0) 2021.06.24

댓글