inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Năm 2026! Hướng dẫn thực hành Redis dành cho nhà phát triển Backend: Từ cơ bản đến các mô hình thực tế

Pub/Sub: Sử dụng trình môi giới tin nhắn thời gian thực

Redis와 Kafca의 Pub/Sub 차이

8

rainbow8956

2 câu hỏi đã được viết

0

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

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

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

감사합니다.

아키텍처 redis FastAPI

Câu trả lời 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가 더 적합한 선택입니다.

0

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 및 다른 데이터베이스를 활용하는 팁을 확인할 수 있습니다.

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

캐시 무효화

0

11

2

27강 슬랙 테스트 부분도 누락된 것 같네요

1

21

2

22강 케글 연동 강의내용 누락된듯해요

1

20

2

한국투자증권 미국 주식 매매 수수료와 환전 수수료가 높은 경우 자동매매 베개투자법을 적용해도 괜찮을까요?

0

37

2

스크립트를 한번에 복사하고 싶습니다.

0

31

2

@Version 어노테이션이 붙은 필드는 낙관적 락이든 비관적 락이든 업데이트가 됩니다.

0

34

1

너무 흥미진진합니다..

1

39

2

SP를 아직도 사용하나요?

0

39

2

캐시전략 - Write-behind

0

40

2

모델 서빙과 관련된 강좌 출시 예정된 바가 있으신지 여쭤봅니다!

0

41

2

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

0

56

2

Singleton 관련 질문입니다.

1

69

2

Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문

0

26

1

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

50

2

라우팅 테이블 설정 중 궁금한게 있습니다.

0

47

1

user-service jwt

0

48

2

애그리거트 질문있습니다!

0

46

2

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

0

71

2

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

0

53

2

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

0

99

1

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

0

110

2

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

0

93

2

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

0

75

2

Redis Container 해킹

0

123

1