데이터베이스

Redis Pub/Sub vs Kafka 비교

Jinwookoh 2025. 3. 3. 21:59

Redis와 Kafka는 둘 다 메시징 기능을 제공하지만, 사용 목적과 특성이 다르기 때문에 어떤 것이 더 좋은지는 사용 사례에 따라 다릅니다.

1. Redis Pub/Sub vs Kafka 비교

특징 Redis Pub/Sub Kafka
메시징 방식 발행-구독 (Pub/Sub) 로그 기반 메시지 브로커
메시지 지속성 메시지 소비 후 유지되지 않음 (단기적) 메시지가 지속적으로 저장됨 (장기적)
확장성 단일 노드에서는 빠르지만, 클러스터링이 복잡함 분산 시스템으로 설계되어 확장성이 뛰어남
성능 메모리 기반으로 빠름 (낮은 지연시간) 로그 기반이라 지연시간이 조금 높을 수 있음
데이터 보존 메시지는 구독자가 받지 않으면 사라짐 메시지는 설정된 기간 동안 유지됨
메시지 재처리 불가능 가능 (오프셋을 이용해 다시 읽기 가능)
트랜잭션 지원 없음 지원 (Exactly-once, At-least-once 등)
사용 사례 실시간 알림, 캐시 업데이트, 간단한 Pub/Sub 로그 저장, 이벤트 소싱, 데이터 스트리밍, 대용량 메시징

2. 어떤 경우에 Redis가 적합한가?

  • 메시지가 실시간성이 중요하고, 빠르게 소비되어야 하는 경우
  • 메시지의 보존이 필요하지 않은 경우 (예: 알림 시스템, 채팅)
  • 단순한 Pub/Sub 구조가 필요한 경우
  • 낮은 지연 시간이 중요한 경우 (밀리초 단위 응답)

예제 사용 사례

  • 실시간 알림 시스템 (예: 주문 상태 변경 알림)
  • 실시간 채팅 서비스 (메시지가 영구 저장될 필요 없음)
  • 캐시 무효화 (예: 여러 개의 서버가 캐시 변경 사항을 공유해야 할 때)

3. 어떤 경우에 Kafka가 적합한가?

  • 대량의 데이터를 안정적으로 처리해야 하는 경우
  • 메시지 보존이 필요한 경우 (예: 로그, 데이터 스트리밍)
  • 트랜잭션이 필요한 메시징 시스템 (Exactly-once, At-least-once)
  • 여러 소비자가 같은 메시지를 다른 타이밍에 처리해야 하는 경우 (이벤트 소싱)

예제 사용 사례

  • 주문 시스템에서 주문 데이터를 여러 시스템으로 전달
  • 실시간 로그 처리 및 분석 (예: ELK 스택과 연동)
  • 데이터 파이프라인 (예: Kafka → Spark → 데이터베이스)
  • 금융 거래 데이터 스트리밍 및 분석

4. 결론

  • "빠른 메시징이 필요하고, 메시지 보존이 필요 없다면?" → Redis
  • "메시지를 여러 시스템에서 재처리해야 하고, 안정성이 중요하다면?" → Kafka
  • "빠른 속도도 중요하고, 어느 정도 보존도 필요하다면?" → Redis Streams (Redis 5.0 이상에서 Kafka와 비슷한 메시지 큐 기능 제공)

🚀 즉, Redis는 가볍고 빠르게 Pub/Sub을 사용할 때 좋고, Kafka는 대규모 분산 메시징 및 이벤트 처리에 적합합니다!