[Kafka] Kafka의 개념 이해 및 redis와 비교

요즘 실시간 데이터 처리나 대용량 로그 시스템을 설계할 때 Kafka를 자주 마주치게 된다.

하지만 Kafka가 정확히 무엇을 위한 도구인지, 또 Redis와는 어떤 관계인지에 대해 처음엔 감이 잘 안 와서 이번 글을 통해 Kafka의 등장 배경부터 개념, 아키텍처, 그리고 Redis와의 조합까지 정리해보려고 한다.


📌 Kafka의 개발 배경

Kafka는 원래 LinkedIn에서 내부 로그 수집 시스템을 개선하기 위해 개발되었다.

이전에는 다음과 같은 문제점들이 있었다.

  • 각 애플리케이션이 직접 로그나 이벤트를 다른 시스템으로 전달해야 했음 → 중복 로직 발생
  • 실시간 분석, 모니터링, ETL 등 다양한 파이프라인마다 별도 설계 필요
  • 시스템 간의 데이터 이동에서 신뢰성과 확장성 부족
  • 대량의 데이터를 안정적으로 처리할 중앙 메시지 허브가 없었음

💡 Kafka의 해결 방향

Kafka는 이런 문제를 해결하기 위해 다음과 같은 목표를 가지고 설계되었다:

  • 고속 처리 (High Throughput)
  • 내구성 보장 (Durability)
  • 수평 확장성 (Horizontal Scalability)
  • 분산 아키텍처 (Distributed Architecture)
  • 다수의 독립 소비자 지원 (Multiple Independent Consumers)

⚙️ Kafka의 기본 개념

Kafka는 간단히 말해 Publish / Subscribe 기반의 메시지 브로커이다.

하지만 단순 메시지 큐를 넘어 분산 스트리밍 플랫폼으로 동작한다.

🔹 핵심 용어 정리

용어 설명
Producer Kafka에 메시지를 보내는 주체 (예: 웹 서버, IoT 장비 등)
Consumer Kafka에서 메시지를 읽는 주체 (예: 알림 서버, 분석 시스템)
Topic 메시지를 구분하는 주제. Kafka는 메시지를 Topic 단위로 관리
Partition Topic을 수평으로 나눈 단위. 메시지 순서가 보장되는 최소 단위
Offset Partition 내에서 메시지의 위치. Consumer가 이 값을 기억해서 다음 메시지를 읽음
Broker Kafka 서버 하나를 의미. Kafka는 여러 Broker로 클러스터를 구성함
Consumer Group 같은 Topic을 읽는 Consumer들의 집합. 메시지를 분산 처리 가능

🧠 Kafka 아키텍처 이해하기

Kafka는 메시지를 토픽 → 파티션 → 브로커 구조로 저장하고 처리한다.

[ Producer1 ]         [ Producer2 ]
                           
                           
         ┌──────── Kafka Cluster ────────┐
                                        
           [ Broker1 ] [ Broker2 ]      
                                      
                                      
           Topic: 'user_log'            
            ├── Partition 0 ────────┐   
            ├── Partition 1 ────────┐   
            └── Partition 2 ────────┐   
         └───────────────────────────┘
                              
                              
            [ Consumer Group A ]
               ├─ Consumer A1
               └─ Consumer A2

            [ Consumer Group B ]
               ├─ Consumer B1
               └─ Consumer B2

이 구조 덕분에 Kafka는 다음과 같은 장점을 가진다:

  • Partition을 기준으로 병렬 처리 가능 → 확장성 뛰어남
  • 메시지를 디스크에 저장하며 Offset으로 추적 → 재처리 가능
  • 여러 Consumer Group이 같은 Topic을 독립적으로 소비 → 유연성

🔄 Kafka와 Redis의 관계

Kafka와 Redis는 서로 다른 목적의 기술이지만 실시간 데이터 처리 파이프라인에서 함께 자주 사용된다.

📌 Redis란?

  • 인메모리 데이터 저장소
  • 데이터 구조가 다양하고 초고속 응답 처리가 강점
  • 기본적인 Pub/Sub 기능도 제공함

🤝 Kafka와 Redis의 조합 시나리오

시나리오 설명
Kafka → Redis Kafka로 들어온 메시지를 Redis에 캐싱하여 빠르게 조회 (예: 실시간 대시보드)
Redis → Kafka Redis에 임시로 쌓인 데이터를 Kafka로 넘겨 로그 저장/분석 (예: 유저 이벤트 로그)
Kafka + Redis Kafka는 메시지 브로커, Redis는 캐싱/세션 관리용으로 병행 사용

예시 상황

  • 실시간 알림 시스템: Kafka는 이벤트를 브로드캐스팅하고 Redis는 유저별 알림 큐를 관리
  • AI 추론 결과 캐싱: Kafka로 요청이 들어오고 Redis에 결과를 미리 저장하여 재요청 시 빠르게 응답

🆚 Kafka vs Redis 비교 요약

기준 Kafka Redis
메시지 처리량 초대형 소형~중형
데이터 보존 디스크 기반, 장기 보존 가능 메모리 기반, 휘발성 가능
메시지 순서 Partition 단위 순서 보장 보장되지 않음
소비자 다수 지원 (Consumer Group) 제한적
주요 용도 로그, 이벤트 스트림, 분석 파이프라인 캐싱, Pub/Sub, 세션

✅ 마무리: Kafka를 언제, 어떻게 써야 할까?

Kafka는 대규모 데이터 파이프라인을 구성할 때 중심 허브 역할로 사용하면 좋다.

반면 Redis는 빠른 응답을 위한 보조 저장소 또는 Pub/Sub 보완재로 이상적이다.

Kafka는 “데이터가 흘러가는 중심”, Redis는 “그 중 일부를 빠르게 캐싱하거나 전달”하는 역할로 보면 된다.


📚 참고 자료