🕊️ Kafka vs. RabbitMQ: 알맞은 메시지 브로커 찾기

이벤트 중심 아키텍처의 세계에서 효율적인 소통을 위해서는 적절한 메시지 브로커를 선택하는 것이 중요합니다. 가장 인기있는 두 개는 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]

원문:

Kafka vs. RabbitMQ: Choosing the Right Messaging Broker

Medium

Kafka vs. RabbitMQ: Choosing the Right Messaging Broker

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 3월 25일 오후 2:13

 • 

저장 256조회 12,518

댓글 3

함께 읽은 게시물

DAO와 Repository / dto와 VO에 대한 생각

... 더 보기

DAO와 Repository / dto와 VO에 대한 생각

blog.naver.com

DAO와 Repository / dto와 VO에 대한 생각

 • 

저장 4 • 조회 346


우리 팀의 소화력을 알고 있나요?

P

... 더 보기

우리 팀의 소화력을 알고 있나요?

Brunch Story

우리 팀의 소화력을 알고 있나요?

성급한 널 처리의 오류

... 더 보기

성급한 널 처리의 오류

K리그 프로그래머

성급한 널 처리의 오류

 • 

저장 21 • 조회 3,683


🗞️ 주간 뉴스레터 - 해외 프론트엔드 기술 트렌드 - 2월 1주차

... 더 보기

New client-side hooks coming to React 19

Marmelab

New client-side hooks coming to React 19

 • 

저장 16 • 조회 2,153


데이터 분석가의 도메인 지식을 넓히는 방법 3가지

... 더 보기

 • 

저장 11 • 조회 2,374


SI 프로젝트 실패비율은 예전보다 줄어들었을까?

필자는 SI 프로젝트를 수행하는 회사에서 30년 넘게 근무하고 있다. 그동안  프로젝트를 수행하는 기술과 도구는 비약적으로 발전했다. 가장 큰 발전은 의사소통 도구의 혁신이다. 휴대폰이 등장으로 전화 통화가 쉬워졌고, 이메일/메신저/화상회의 도구는 보편화되었다. 30년 전에는 휴대폰, 메일, 메신저가 없이 고객이나 프로젝트 팀원과 소통하려면 유선 전화기와 대면소통 외에는 방법이 없었다.

... 더 보기