inflearn logo
강의

講義

知識共有

2026年!バックエンド開発者のためのRedis実践ガイド:基礎から実務パターンまで

Pub/Sub: リアルタイムメッセージブローカーの活用方法

Redis와 Kafca의 Pub/Sub 차이

60

rainbow8956

投稿した質問数 3

0

항상 좋은 강의 감사합니다.
Redis와 Kafca의 Pub/Sub 차이가 궁금합니당.

예를 들어, 인스타 라이브에서 사용자의 리액션 좋아요를 Redis에 두고 post로 좋아요를 업데이트 칠 때, MYSQL 좋아요 수도 같이 증가하기 위해 Redis와 Kafca의 Pub/Sub 의 차이점이 있을까요?

좋아요 api가 redis의 좋아요 수 증가 > kafca 메시지 발행 > mysql 구조라 가정했을 때, 대규모트래픽에서 kafca와 redis의 Pub/Sub의 차이랑 뭐가 더 적절한 선택인지 궁금합니다.

감사합니다.

아키텍처 redis FastAPI

回答 2

0

codingpe

안녕하세요. 😊

대규모 처리일 경우 'Redis 좋아요 증가 → Kafka 메시지 발행 → MySQL 업데이트'는 실무적으로 잘 설계된 패턴이라고 할 수 있습니다.

Redis의 Pub/Sub과 Kafka의 메시지 발생의 가장 기본적인 차이점은 메시지 유실 가능성입니다.

Redis의 Pub/Sub은 완전한 실시간 알림 성격으로 Publish할 때 받지 못하면 해당 데이터는 바로 유실됩니다. 즉 특정 장애 상황에서 MySQL에 좋아요 수치가 일치하지 않을 수 있는 거죠.

 

대신 Kafka는 메시지가 유실되지 않고 전달을 보장합니다.

또한 트래픽이 폭발적으로 몰리는 상황에서 메시지를 버퍼링해 두고, MySQL이 처리 가능한 속도로 메시지를 소비할 수 있게 해 줍니다.

정리하자면Redis는 빠른 속도(카운터 증가), Kafka는 신뢰성 있는 처리(MySQL 반영 보장)와 버퍼링 으로 각각의 역할을 분리하는 것이 좋습니다.

참고로 Redis에 Pub/Sub 말고 Streams라는 기능이 있습니다. 마치 Kafka와 같이 메시지 영속성과 컨슈머 그룹을 지원합니다. 소규모 트래픽이라면 Redis Streams로 Kafka를 대체할 수도 있습니다. 이럴 경우 아키텍처가 좀 단순해 질테구요.(Redis로 속도와 메시징 둘 다 처리)

그러나 역시 대규모 트래픽 환경이라면 Kafka가 더 적합한 선택입니다.

1

rainbow8956

명강의 감사합니다!

0

communityai8509

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

질문해 주신 Redis와 Kafka의 Pub/Sub에 대한 차이점에 대해 설명드리겠습니다. 두 시스템 모두 메시지 전송을 위한 Pub/Sub 방식으로 사용되지만, 각자의 특성과 강점에서 차이가 있습니다.

Redis Pub/Sub

  • 단순성: Redis의 Pub/Sub는 매우 간단하고 가벼운 방식으로 구성되어 있습니다. 높은 처리 속도를 필요로 하고, 시스템 간 데이터 동기화나 즉각적인 데이터 배포가 필요할 때 유용합니다.
  • 비영구성: 메시지가 전송되면 이후에는 저장되지 않으며, 수신하지 못한 클라이언트는 메시지를 나중에 받을 수 없습니다. 즉, 일시적인 메시지 교환에 적합합니다.
  • 실시간 통신: 낮은 지연 시간과 빠른 전송 속도로 실시간 통신이 요구될 때 적합합니다.

Kafka Pub/Sub

  • 내구성 및 안정성: Kafka는 메시지를 로그에 기록하여 영구적으로 저장하고, 특정 시점으로 되돌아갈 수 있는 기능을 제공합니다. 즉, 대량의 데이터 스트림을 처리하고, 데이터 손실 없이 메시지를 수신해야 할 때 유용합니다.
  • 고급 토픽 관리: Kafka는 복잡한 데이터 스트림을 관리하고, 각 토픽에 대해 다양한 파티셔닝 및 복제 옵션을 제공합니다.
  • 대규모 확장성: 대규모 트래픽 처리 및 확장에 적합하며, 수많은 소비자와 프로듀서 간의 연결을 효율적으로 관리할 수 있습니다.

선택 시 고려할 점

  • 실시간 처리: 메시지가 즉시 처리되어야 하고, 낮은 지연 시간이 중요할 경우 Redis가 적합합니다.
  • 데이터 보존: 메시지의 지속성과 복구가 중요하거나, 메시지의 재처리가 필요한 경우 Kafka가 유리합니다.
  • 트래픽 규모: 매우 큰 규모의 데이터 전송 및 처리가 필요할 때는 Kafka가 더 나은 선택일 수 있습니다.

결론적으로, 좋아요 업데이트와 같은 실시간 반응의 경우 Redis가 빠르고 효율적인 선택이 될 수 있지만, 메시지의 영구 저장 또는 복구가 필요하다면 Kafka를 고려해볼 수 있습니다.

아래는 관련 정보를 얻을 수 있는 링크입니다:
- Redis Container 해킹: Redis 및 다른 데이터베이스를 활용하는 팁을 확인할 수 있습니다.

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

Cursor 실행 문의

0

6

1

15강 12-3) 값 제출후 mysql 저장이 안됩니다.

0

10

2

슬랙에서 메시지 일부 잘림

1

23

2

Nat Gateway

0

24

2

API 오류: EGW00201 - 초당 거래건수를 초과

1

30

2

캐글 save version 할 시 md파일과 다름.

1

28

2

FRED API

1

34

1

제가 AWS 에 배포했는데

1

34

1

갑자기 stock_prediction은 어디서 발생한건가요?

1

40

2

pipeline/run-buy-pipeline 실행시 "LLM호출전체실패"에러발생

1

30

2

레디스로 재고 관리

0

40

2

Lock 해제 문의 드립니다.

0

44

2

레디스로 대기큐 구현 질문

0

76

2

API LIMIT

0

54

1

캐시 무효화

0

46

2

너무 흥미진진합니다..

1

61

2

순위가 동률일 때의 처리에 대해 질문드립니다.

0

73

2

Redlock 알고리즘 관해 궁금한게 있습니다!

0

96

2

좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.

0

69

2

백엔드 서버 코드 변경에서 프론트엔드 서버가 값을 파싱하지 못하는 문제

0

114

1

강사님 GETDEL 관련해서 질문 있습니다

0

123

2

비밀번호를 걸고 실행된 레디스 서버에 lua 스크립트를 등록하는 경우

0

105

2

보안 설정을 한 수강생들은 Connection Settings에 비밀번호를 넣어야 추가되네요

0

83

2

Redis Container 해킹

0

133

1