네트워크

[네트워크] RabbitMQ와 Kafka

찹쌀궁뎅이 2025. 3. 18. 10:49
반응형

(이전) 회사에서 프로젝트 설계 중 Message Queue에 대한 얘기가 나왔다. RabbitMQ와 Kafka 중 어떤 것을 사용하는 것이 더 효율적일지 정리 후 보고해달라 하셔서 알아보게 되었다.

일단, Kafka와 RabbitMQ의 정의를 알아보기 전 메시지 큐 (Message Queue)에 대하여 알아야 한다.


1. 메시지 큐 (Message Queue) 란?

  • 간단하게 말하면, 메시지를 일시적으로 저장하는 대기열(queue) 역할을 하는 것이다.

특징

  • FIFO(First-In-First-Out) 방식으로 메시지를 전달
  • 메시지가 소비되기 전까지 queue에서 대기
  • 비동기 방식으로 시스템간 결합도를 낮춤

2. RabbitMQ란?

RabbitMQ는 AMQP를 구현한 오픈소스 메시지 브로커이다. 여기서

메시지 브로커(Message Broker) 란?

  • 서로 다른 시스템 간 메시지를 중개(Broker)하는 역할을 수행하는 미들웨어이다.
  • Publisher(Producer)로부터 전달받은 메시지를 Subscriber(Consumer)로 전달해주는 중간 역할이며, 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다. 이 때 메시지가 적재되는 공간을 Message Queue라고 하며 메시지의 그룹을 Topic이라고 한다.

3. Kafka란?

Apache Kafka는 대규모 데이터 스트리밍 및 분산 메시징을 위한 이벤트 스트리밍 플랫폼이다.

이벤트 스트리밍 플랫폼이란?

실시간으로 발생하는 이벤트 데이터를 지속적으로 수집, 저장, 처리 및 전달하는 시스템이다.

 

  • 이벤트 (Event): 특정 시점에 발생하는 데이터 (ex. 사용자 클릭, 결제 완료 등)
  • 스트리밍 (Streaming): 이벤트 데이터를 실시간으로 처리하고 전달하는 방식

4. RabbitMQ와 Kafka의 차이

구분 RabbitMQ Kafka
주요 목적 메시지 브로커 (Message Broker) 이벤트 스트리밍 플랫폼 (Event Streaming)
메시징 방식 메시지 큐 로그 기반 스트리밍
전송 모델 Point-to-Point(P2P) & Pub/Sub Pub/Sub
메시지 유지 소비 후 메시지 삭제 로그처럼 기록이 남고 보관 가능
데이터 순서 보장 FIFO 지원 가능 (여러 queue 사용 시 순서 보장 어려움) 같은 파티션 (Partition) 내에서 순서 보장
확장성 큐 단위로 수직 확장 수평 확장에 유리
성능 빠른 처리, 낮은 지연 시간 높은 처리량, 대규모 데이터 처리 가능
사용 사례 요청-응답 방식, 단기 메시징, 비동기 처리
(ex. 이메일 전송, 채팅)
로그 데이터 처리, 이벤트 소싱, 실시간 분석
(ex. 로그 수집, 모니터링, 대규모 데이터 처리)

두 가지의 특징 및 차이점을 위주로 살펴보았다.
프로젝트의 특징을 잘 고려하고, 사용 사례를 찾아보며 알맞는 것을 사용하는 것이 좋을 것 같따!


 

반응형

'네트워크' 카테고리의 다른 글

[네트워크] 소켓(Socket) 통신  (0) 2025.03.17