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를 선택했는데요. 카프카로도 물론 구현되겠지만 상황과 요건에 맞는 프레임워크를 사용하는것도 중요한거 같습니다
하나부터 열까지 리더가 상세히 설명해 주기를 바라는 구성원이 있습니다. 반대로 큰 얼개만 듣고 나머지는 자율적으로 하고 싶어 하는 경우도 있죠. 회식에 참여하는 것을 너무나 힘겨워 하는 구성원이 있는 반면, 동료들과 함께 시간을 보내며 가까워지는 것을 원하는 구성원도 있습니다.
... 더 보기직장인으로서 10년 정도 일하게 되면 피할 수 없는 순간이 바로 조직에서 리더의 역할을 받게 되는 인사발령이다. 팀원이었을 때는 내게 주어진 업무를 내가 가진 능력과 주변 동료들의 도움으로 해결하고, 그에 합당한 평가와 보상을 기다리며, 나쁘지 않는 리워드와 내 위치에 안도하며 또 새해를 맞이하고 하루하루를 버텨나가는 과정에 큰 어려움이 없다.
... 더 보기나는 가끔 조합형 한글의 아름다움에 대해 생각한다.
그 아름다움은 단순히 예쁜 글꼴이나 정갈한 종이 위의 자소 배열에서 끝나지 않는다. 진짜 매력은, 정밀한 정보 구조와 이산 수학적 규칙성 속에 숨어 있다.