강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

yso829612님의 프로필 이미지
yso829612

작성한 질문수

웹소켓/STOMP 채팅서비스(spring, vue, redis)

websocket과 stomp 비교

메시지 브로커 선택에 관한 질문

작성

·

27

·

수정됨

0

  1. 안녕하세요, 강의에서는 메시지 브로커용으로 redis를 사용하셨는데, redis 외에도 rabbitmq나 카프카 같은 것들도 사용되는 것으로 알고있습니다. 그 중에서 특별히 redis를 사용한 이유가 있는지 궁금합니다.

  2. 그리고 무중단 배포 시 스프링 내장 브로커를 사용하면 서버 재실행 시 구독 정보가 초기화되기에 메시지 브로커를 도입하려고 하는데 이때는 셋 중에 어떤 것을 사용하면 좋을지 궁금합니다.

답변 2

0

bradkim님의 프로필 이미지
bradkim
지식공유자

안녕하세요. 먼저 좋은 질문 주셔서 감사합니다.

 

일단은 메시지브로커 목적으로는 redis와 카프카가 가장 많이 사용되는 만큼 2가지만 비교해서 1,2번 질문을 한꺼번에 대답해드리도록 하겠습니다.

 

먼저 redis는 인메모리 데이터베이스이고 메시지를 별도로 저장하지 않고 전파하기에 성능에 강점이 있습니다. 메시지브로커로서 지연없는 서비스를 위해서는 적절하다고 생각합니다. 다만, 단점으로는 메시지를 저장하지 않으므로 일시적인 채팅서버 장애시에는 메시지가 유실될 가능성이 있습니다.

 

이에반해 카프카는 일단 메시지를 자체 디스크에 저장을 합니다. 그래서 메시지 유실의 가능성이 크게 낮아집니다. 다만, 디스크기반에 메시지 저장 시스템을 갖추고 있다보니 성능에 단점이 있습니다.

 

그래서 결론은 채팅서비스의 성능이냐 메시지유실의 방지냐의 관점에서 2가지 중에 하나를 선택하시면 될것 같습니다.

 

저는, 채팅내용의 유실은 생각보다 흔하고 아주 크리티컬 하지는 않다고 생각하여 레디스를 도입하였지만, 안정적인 채팅서버를 구축하고 싶다면 카프카를 도입하셔도 될것 같습니다.

0

안녕하세요, 인프런 AI 인턴입니다. yso829612님.

Redis, RabbitMQ, 그리고 Kafka는 모두 메시지 브로커로 사용되지만, 각각의 특성과 장점이 다르기에 상황에 맞게 선택이 필요합니다. 질문하신 두 가지를 중심으로 답변 드리겠습니다.

  1. Redis 선택 이유:

    • 속도: Redis는 메모리 기반 데이터 저장소로 매우 빠른 처리 속도를 자랑합니다. 이는 실시간 데이터 처리 및 가벼운 메시지 전송에 적합합니다.
    • 설치 및 관리 용이성: Redis는 설치와 초기 설정이 간단하고, 유지보수 부담이 상대적으로 낮습니다.
    • Pub/Sub 기능: 단순한 publish/subscribe 기능이 필요한 경우 Redis의 간단한 구조가 유리할 수 있습니다.
  2. 무중단 배포 시 메시지 브로커 선택:

    • Redis: 간단한 Pub/Sub의 경우 Redis는 설정이 쉬우며, 빠른 데이터 전송이 요구되는 실시간 서비스에 적합합니다. 그러나 데이터 영속성과 복잡한 메시지 큐잉이 필요하다면 한계가 있을 수 있습니다.
    • RabbitMQ: 안정성과 메시지의 영속성이 중요하다면 RabbitMQ가 유용할 수 있습니다. 특히 복잡한 라우팅이 필요하거나, 다양한 메시지 전달 기능을 필요로 할 때 강력함을 발휘합니다.
    • Kafka: 대량의 데이터 처리와 높은 안정성을 요구하는 경우 Kafka가 적합합니다. Kafka는 이벤트 스트리밍을 위한 분산형 시스템으로, 영속성이 중요하고 대규모 데이터를 처리해야 할 때 권장됩니다.

관련된 유사한 주제의 질문과 답변에서 더 많은 힌트를 얻으실 수 있습니다:
- 레디스 pub/sub 질문: Redis 사용 이유에 대해 쉽고 명확하게 설명합니다.
- 아키텍처 질문입니다: 메시지 브로커 활용 시의 고려사항에 대한 추가 정보입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yso829612님의 프로필 이미지
yso829612

작성한 질문수

질문하기