MinChur

메시지 브로커: RabbitMQ와 Kafka를 활용한 비동기 시스템

|
1 min read

시스템 간의 결합도를 낮추고 대규모 트래픽을 안정적으로 처리하기 위한 RabbitMQ와 Kafka의 핵심 원리를 비교 정리합니다.

1. RabbitMQ: 신뢰 중심의 메시지 큐

RabbitMQ는 AMQP 프로토콜을 기반으로 하며, 메시지의 '안전한 전달'에 초점을 맞춥니다.

  • 핵심 요소: Producer(생산자), Exchange(교환기), Queue(대기열), Consumer(소비자)
  • 장점: 복잡한 라우팅(Direct, Topic, Fanout)이 가능하며, ACK 메커니즘을 통해 메시지 유실을 방지합니다.
  • 용도: 실시간 응답이 중요한 비동기 작업 처리, 이메일 발송, 주문 시스템 등.

2. Kafka: 대용량 데이터 스트리밍의 강자

Kafka는 분산 로그 시스템에 가깝습니다. 메시지를 큐에 담고 지우는 것이 아니라, 파일 시스템에 저장하여 영속성을 보장합니다.

  • 핵심 요소: Topic, Partition, Offset, Producer, Consumer Group
  • 장점: 압도적인 처리량(Throughput)을 자랑하며, 소비자가 원하는 시점의 데이터를 다시 읽을 수 있습니다.
  • 용도: 로그 수집, 실시간 스트림 처리, 빅데이터 분석 플랫폼 등.

3. 무엇을 선택해야 할까?

  • RabbitMQ: 빠르고 정확한 메시지 전달이 필요할 때, 라우팅 로직이 복잡할 때 추천합니다.
  • Kafka: 데이터의 양이 어마어마하고 유실 없이 데이터를 영구적으로 보관하며 분석해야 할 때 강력한 위력을 발휘합니다.