반응형
(이전) 회사에서 프로젝트 설계 중 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 |
---|