구축 & 운영/RabbitMQ

메시지 브로커 비교 (Apache Kafks vs RabbitMQ vs ActiveMQ)

단칸이 2022. 3. 8. 18:12

메시지 브로커의 도입 배경

프로그램의 동작 방식을 실시간으로 제어하기 위해, 서버로부터 임의의 시점에 데이터를 수신해야 하는 경우가 발생하였습니다.

클라이언트가 자신에게 설정된 신규 정책이 있는지 서버에 주기적으로 확인하는 Polling 방식(또는 주기적인 체크가 부담스러울 경우 Long Polling 방식) / 웹 소켓 등 현재 알고 있는 통신 방식이 후보에 올랐으며, 이 외에 다른 통신 기법이 있는지 추가적인 확인을 하게 되었습니다. 

자료를 찾던 도중 [메시지 브로커] 라는 개념을 접하게 되었으며, 프로젝트에 적용하기에 적합한 기술인지 확인하게 되었습니다.


메시지 브로커 비교 (Apache Kafka vs RabbitMQ vs ActiveMQ)

Apache Kafka

 

[메시지 브로커 도입기] - Apache Kafka 조사

Apache Kafka Kafka는 대용량의 실시간 로그 처리에 특화되어 설계된 시스템으로, 메시지를 topic을 통해 카테고리화 하는 pub-sub 모델을 이용합니다. 이 모델에서 메시지의 생산자는 topic에 대한 정보

blog.wellmade.today

RabbitMQ

 

[메시지 브로커 도입기] - RabbitMQ 조사

RabbitMQ 메시지가 생성되면 Exchange에 전송되며, 여기에서 어떤 Queue에게 라우팅 할 것인지 결정하게 됩니다. 구분 설명 Direct Exchange 메시지의 Routing Key와 정확히 일치하는 Queue로 라우팅 Topic Excha..

blog.wellmade.today

ActiveMQ

 

[메시지 브로커 도입기] - ActiveMQ 조사

ActiveMQ 구분 설명 최초 배포일 2004년 개발 및 2007년 Apache 재단에 소스코드 증여 라이선스 Apache License 2.0 개발 언어 Java 클라이언트 지원 언어 Java, C, C++, Ruby, Perl, Python, PHP, C# 지원 프로토..

blog.wellmade.today


결론

ActiveMQ의 경우 Java 어플리케이션 간 통신이 가능하기 때문에 백엔드를 Spring Framework 등으로 구성했을 때에는 이점이 있습니다. 그러나 저희 팀에서는 현재 Java를 사용하지 않기 때문에, Kafka와 RabbitMQ의 비교만 진행하였습니다. (아래에는 주관적인 견해가 포함되어 있습니다.)

구분 Kafka RabbitMQ
메시지 전송 보장여부 O O
메시지 처리 성능 100,000 / 초 20,000 / 초
메시지 저장소 파일 (디스크) 메모리 / 디스크
지원 프로토콜 TCP/IP AMQP, STOMP, MQTT, HTTP 및 웹 소켓
메시지 수신 방식 Pull (소비자가 가져오는 방식) Push (생산자 -> 소비자)
메시지 전송 순서 보장여부 O X (단일 큐 내에서만 보장)
메시지 전달 장애 발생 시 다음 접속 시 클라이언트가 Offset 계산하여 메시지 이어서 수신 메시지 보존을 위해 서버에서 별도 처리 필요
메시지 재사용 가능여부 O (다시 Read 가능) X (한 번 수신하면 Queue에서 메시지 삭제)
아래 부터는 메시지 브로커를 조사하며 느낀 주관적인 의견입니다.
문서화 좋음 좋음 (보기 편함)
리소스 관리 어려움 (파티션 할당 시 삭제 불가) 쉬움 (큐 할당 및 삭제의 자동화)
운영 및 관리 보통 (Yahoo에서 관리 페이지 개발) 좋음 (관리용 플러그인 제공)
개발 비용 보통 (메시지 순서 보장 원리를 이해하고 클라이언트 개발해야 될 것으로 보임) 다소 낮음 (샘플링이 잘 되어있으며, 관리 페이지에서도 대부분의 설정 가능)

현재 저희 팀에서 사용하는 개발 언어는 두 프로젝트에서 모두 지원하며, 기능적인 측면에서도 부족함이 없습니다. 성능적 측면에서는 Kafka가 월등하지만, 현재로서는 오버 스펙입니다.

이러한 전제와 메시지 브로커를 처음 도입하는 상황을 고려하여, 커뮤니티가 충분히 활성화 되어있고 관리적인 측면에서 유리할 것으로 판단되는 RabbitMQ를 선택하게 되었습니다.


자료 출처

자료 명 출처
Kafka와 ActiveMQ 비교자료 * https://stackoverflow.com/questions/44792604/what-is-the-difference-between-apache-kafka-vs-activemq
Kafka의 동작 원리 * https://coding-start.tistory.com/132
RabbitMQ의 동작 원리 * https://nesoy.github.io/articles/2019-02/RabbitMQ
Kafka, ActiveMQ, RabbitMQ 비교 * https://kji6252.github.io/2015/12/18/message-quere/
* https://twowinsh87.github.io/etc/2018/08/07/etc-kafka-8/
* https://stackshare.io/stackups/activemq-vs-kafka-vs-rabbitmq
* https://trends.google.com/trends/explore?date=today%205-y&q=%2Fm%2F0zmynvd,%2Fm%2F0264f96,%2Fm%2F0bhc0tk
RabbitMQ 홈페이지 * https://www.rabbitmq.com/
RabbitMQ와 Kafka의 비교 * https://pegasuskim.wordpress.com/2016/05/13/apache-kafka%EC%99%80-rabbitmq-%EC%9D%98-%EC%B0%A8%EC%9D%B4/
* https://hamait.tistory.com/403?category=138704 
* https://hamait.tistory.com/405
* https://content.pivotal.io/blog/understanding-when-to-use-rabbitmq-or-apache-kafka
https://sgitario.github.io/rabbitmq_vs_kafka/
Kafka 관리 툴 소개 * https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-%EC%B9%B4%ED%94%84%EC%B9%B4-%EB%A7%A4%EB%8B%88%EC%A0%80-%EC%86%8C%EA%B0%9C/
* https://blog.naver.com/PostView.nhn?blogId=occidere&logNo=221395731049&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView

'구축 & 운영 > RabbitMQ' 카테고리의 다른 글

Web STOMP 플러그인 설치  (0) 2022.03.19
RabbitMQ 설치  (0) 2022.03.19
ActiveMQ 조사  (0) 2022.03.08
RabbitMQ 조사  (0) 2022.03.08
Apache Kafka 조사  (0) 2022.03.08