개요
Pub/Sub 구조란?

- 이벤트(메시지)를 발행하는 Publisher가 존재하며, Publisher는 특정 Channel(혹은 Topic)에 이벤트를 전송한다.
- 특정 Channel(혹은 Topic)을 구독하는 Subscriber가 존재하며, Publisher에 관계없이 발행된 이벤트를 받을 수 있다.
- 구체적인 발행/구독 방식은 각 서비스마다 다른데, 오늘은 대표적인 Pub/Sub 서비스인 Kafka와 Redis에 대해서 알아보도록 하겠다.
특징
Kafka
- 대규모 데이터 스트리밍 및 이벤트 기반 시스템에서 주로 사용되는 분산 스트리밍 플랫폼
- 대용량 데이터를 실시간으로 처리하고 저장
- 내구성 및 확장성이 뛰어남
Redis
- 초고속 인메모리 데이터 스토어
- 캐싱, 세션 관리, 빠른 데이터 조회 및 간단한 메시징에 사용
- RAM에서 데이터를 처리하기 때문에 매우 짧은 지연 시간을 제공
작동 방식
Kafka
- 생산자와 소비자가 데이터를 주고받으며, 메시지를 주제(Topic)과 파티션으로 분류하여 여러 브로커에 저장
- 소비자는 자신이 원하는 주제를 구독하여 데이터를 가져옴
Redis
- 생산자가 특정 키로 메시지를 전송하면, Redis는 연결된 모든 구독자에게 메시지를 즉시 푸시
- 모든 데이터는 메모리에 저장되므로, 데이터 접근이 매우 빠름
메시지 처리 및 전송
Kafka

- 소비자가 메시지 대기열에서 데이터를 가져오는 풀 기반 시스템
- 메시지를 보존하며, 메시지의 크기와 전송 방법을 유연하게 관리
- 메시지 전송 실패 시 오류 처리 및 재시도 지원
Redis

- 메시지를 자동으로 구독자에게 푸시하는 푸시 기반 시스템
- 메시지를 일회성으로 전송
- 저장하지 않고 즉시 삭제하기 때문에 추후 재요청 불가능
성능 및 내결함성
Kafka
- 높은 처리량과 병렬 처리 기능 지원하여 여러 소비자가 동일한 메시지를 동시에 처리 가능
- 데이터 복제를 통해 내결함성 강화
Redis
- 짧은 지연 시간으로 실시간 데이터 처리에 적합
- 데이터가 메모리에 저장되므로 기본적으로 백업이 지원되지 않으며, 개발자가 직접 설정해야 함
사용 사례
Kafka
- 실시간 데이터 스트리밍 및 분석
- 로그 수집 및 처리
- 이벤트 소싱 아키텍쳐
- 데이터 파이프라인 구축
Redis
- 캐싱 계층
- 세션 관리
- 실시간 순위표 및 카운터
- 분산 잠금 시스템