Kafka vs. RabbitMQ: Choosing the Right Messaging Broker
Medium
이벤트 중심 아키텍처의 세계에서 효율적인 소통을 위해서는 적절한 메시지 브로커를 선택하는 것이 중요합니다. 가장 인기있는 두 개는 Kafka와 RabbitMQ이며, 각각 장단점이 있습니다. 이 두개는 비슷한 기능을 수행하지만 서로 다른 아키텍처, 성능 및 사용 사례를 가지고 있습니다.
여기서는 두 브로커의 아키텍처 차이점과 성능을 비교하고 Kafka와 RabbitMQ의 몇 가지 일반적인 사용 사례를 살펴봅시다.
아키텍처
[Kafka]
Apache Kafka는 높은 처리량 및 실시간 데이터 처리 기능으로 유명한 오픈 소스 분산 이벤트 스트리밍 플랫폼입니다. Kafka는 프로듀서가 메시지를 작성하고 컨슈머가 해당 주제를 구독하여 메시지를 받는 pub-sub 모델을 따릅니다. Kafka는 메시지를 분산 커밋 로그에 저장하여 높은 확장성과 내결함성을 가능하게 합니다. 이를 통해 높은 처리량과 메시지 리플레이가 가능하여 실시간 데이터 처리 및 이벤트 소싱에 이상적입니다.
[RabbitMQ]
RabbitMQ는 AMOP(Advanced Message Queuing Protocol)을 구현하는 유연한 오픈 소스 메시지 브로커입니다. 전통적인 message-queue 모델을 따르므로 응용 프로그램이 메시지를 주고 받고 특정 소비자에게 메시지를 전달하여 비동기적으로 통신할 수 있습니다. 이를 통해 메시지 순서 지정이 가능하고 메시지 라우팅의 유연성을 보장하므로 작업 처리 및 마이크로서비스 통신에 적합합니다.
성능
[Kafka]
처리율이 높고 실시간 데이터 스트리밍 시나리오에서 우수하여 뛰어난 확장성과 낮은 지연 시간을 자랑합니다. 초당 수백만 개의 메시지를 처리할 수 있어 빠르고 지속적인 데이터 처리가 필요한 사례에 적합합니다. 여러 브로커에 워크로드를 분산하여 수평적 확장을 가능하게 해 대용량 데이터를 효율적으로 처리합니다. 또한 디스크에 메시지를 지속하여 강력한 내구성을 보장합니다.
[RabbitMQ]
수신 확인 및 메시지 지속성과 같은 기능을 제공해 신뢰할 수 있는 메시지 전달을 제공합니다. 초당 수천 개의 메시지를 처리할 수 있어 중간 수준의 처리 요구사항을 가진 사용 사례에 적합합니다. 중앙 집중식 아키텍처는 일부 성능 오버헤드를 가질 수 있지만 견고성과 메시지 무결성을 제공합니다. 수직 확장은 가능하지만 수평 확장성은 Kafka에 비해 제한적입니다.
유스케이스
[Kafka]
실시간 분석 및 스트리밍 애플리케이션
특히 빅테이터와 관련된 이벤트 소싱, 수집 및 로그 집계
대용량 메시지 처리를 통한 데이터 파이프라인 및 마이크로서비스 통신
높은 확장성과 내결함성을 요구하는 애플리케이션
[RabbitMQ]
메트릭 및 알림을 포함한 작업 처리, 서비스 통합, 워크플로우 조정 및 관리
마이크로서비스 간 비동기 통신
메시지 우선 순위 및 신뢰할 수 있는 메시지 전달 기능을 갖춘 엔터프라이즈 메시징 시스템
다양한 애플리케이션 시나리오에서 유용하게 사용
결정하기
높은 처리량과 실시간 데이터 처리를 우선시한다 ▶️ Kafka
안정적인 메시지 전달이 필요하다 ▶️ RabbitMQ
메시지 재생과 로그 집계를 고려한다 ▶️ Kafka
대용량 마이크로서비스 커뮤니케이션을 위한 원활한 확장을 찾는다 ▶️ Kafka
번역: [https://ducktopia.tistory.com/114]
원문:
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 3월 25일 오후 2:13
사실 고민없이 그냥 카프카 쓰면됨.. 특별히 토끼가 필요한경우는 거의없음
Kafka로 대부분 해결 되더라구요 여기에 한표^^
요새 두개중에 고민하고 있는데 고민할 필요없이 카프카 쓰면 된다는 분들이 많네요 저는 위의 이유를 포하뫠 유연한 라우팅기능도 포함해서 rabbit mq를 선택했는데요. 카프카로도 물론 구현되겠지만 상황과 요건에 맞는 프레임워크를 사용하는것도 중요한거 같습니다
필
... 더 보기리
❓
... 더 보기필자는 SI 프로젝트를 수행하는 회사에서 30년 넘게 근무하고 있다. 그동안 프로젝트를 수행하는 기술과 도구는 비약적으로 발전했다. 가장 큰 발전은 의사소통 도구의 혁신이다. 휴대폰이 등장으로 전화 통화가 쉬워졌고, 이메일/메신저/화상회의 도구는 보편화되었다. 30년 전에는 휴대폰, 메일, 메신저가 없이 고객이나 프로젝트 팀원과 소통하려면 유선 전화기와 대면소통 외에는 방법이 없었다.
... 더 보기