Redpanda 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

데이터 엔지니어 · 데이터 사이언티스트 streaming kafka-compatible cpp 2026.03 작성

1. Redpanda란?

Redpanda는 Apache Kafka와 완벽하게 호환되는 고성능 스트리밍 데이터 플랫폼입니다. C++로 작성되어 Kafka의 Java 기반 구현보다 2~10배 빠른 처리 속도를 자랑하며, 클라우드 네이티브 환경에 최적화되어 있습니다. 데이터 엔지니어와 데이터 사이언티스트가 실시간 스트리밍 파이프라인을 구축할 때 필수 도구입니다.

🔄 Kafka-Compatible API

기존 Kafka 클라이언트(Python, Java 등)를 그대로 사용 가능. 마이그레이션 비용 제로.

⚡ Blazing Fast (C++)

C++ 엔진으로 싱글 노드에서 10M+ 메시지/초 처리. 메모리 효율 6배 ↑.

☁️ Cloud-Native & Tiered Storage

S3 등 오브젝트 스토리지와 자동 연동. 무한 스토리지, 비용 최적화.

실무 포인트: Kafka 토픽을 Redpanda로 1시간 내 이전 가능. 생산자/소비자 코드 변경 불필요.

2. 왜 써야 하는가?

기존 Kafka, Pulsar, Kinesis 등의 대안을 비교하면 Redpanda의 우월성이 명확합니다. 특히 C++ 기반의 낮은 지연과 운영 단순성이 강점입니다.

기능 Redpanda Apache Kafka Apache Pulsar AWS Kinesis
언어 C++ (고성능) Java (무거움) Java (복잡) Managed (벤더 락인)
Throughput 10M+ msg/s 1M msg/s 2M msg/s ~1M msg/s
호환성 100% Kafka API 기준 부분 호환 Kinesis 전용
운영 복잡도 단일 바이너리 다중 JVM BookKeeper + ZK 매니지드
Tiered Storage 기본 지원 (S3) 플러그인 지원 제한적
리소스 사용 낮음 (6GB RAM) 높음 (32GB+) 매우 높음 페이 투 유즈
주의: Kafka에서 Redpanda로 전환 시 MirrorMaker2 사용으로 zero-downtime 마이그레이션.

3. 핵심 개념

Redpanda는 Kafka와 동일한 개념을 사용합니다: Brokers, Topics, Partitions, Producers, Consumers, Groups. 차이점은 Wasm 지원과 Tiered Storage입니다.

아키텍처 다이어그램

+----------------+ +----------------+ +----------------+ | Producers | --> | Brokers | --> | Consumers | | (Python/Java) | | (C++ Engine) | | (Groups) | +----------------+ +----------------+ +----------------+ | v +-------------+ | Tiered | | Storage | (S3/ GCS) | (Infinite) | +-------------+ ^ | +-------------+ | Partitions | | (Log Segs) | +-------------+

Brokers: 클러스터 노드. rpk로 관리.

Topics: 스트림 논리 단위. 파티션으로 샤딩.

Tiered Storage: 로컬 SSD + 원격 S3 자동 오프로드. 무한 보존 가능.

4. 퀵스타트

1. 설치 (Docker 추천)

docker run -d --pull=always -p 8082:8082 \
  -p 9092:9092 -p 0.0.0.0:9644:9644 \
  --name redpanda-1 \
  --cpuset-cpus=0 \
  docker.redpanda.com/redpandadata/redpanda:v24.2.1 \
  redpanda start --overprovisioned --set redpanda.tls=false \
  --set redpanda.enable_transactions=false \
  --set redpanda.auto_create_topics=true \
  --set redpanda.kafka_address_peers=9092 \
  --set redpanda.check=false --set redpanda.dev-mode=true

2. rpk로 토픽 생성

docker exec -it redpanda-1 rpk topic create my-topic -p 3

3. Python 생산자/소비자 예제 (kafka-python 사용)

pip install kafka-python

Producer

from kafka import KafkaProducer
import json
import time

producer = KafkaProducer(
    bootstrap_servers='localhost:9092',
    value_serializer=lambda v: json.dumps(v).encode('utf-8')
)

for i in range(10):
    producer.send('my-topic', {'message': f'Hello Redpanda {i}'})
    time.sleep(1)
producer.flush()

Consumer

from kafka import KafkaConsumer

consumer = KafkaConsumer(
    'my-topic',
    bootstrap_servers='localhost:9092',
    value_deserializer=lambda m: json.loads(m.decode('utf-8')),
    group_id='my-group'
)

for message in consumer:
    print(message.value)
테스트: Ctrl+C로 중지 후 docker logs redpanda-1 확인.

5. 핵심 설정 레퍼런스

redpanda.yaml 또는 rpk cluster config로 설정. 재시작 필요.

설정 기본값 설명 실무 추천
num_wal_segments 5 WAL 세그먼트 수 50 (고throughput)
retention_local_target_ms 2d 로컬 보존 시간 1d (Tiered 사용)
cloud_storage_enable_remote_read false S3 읽기 활성 true
log_segment_size 1GiB 로그 세그먼트 크기 64MiB (많은 토픽)
rpc_server 0.0.0.0:33145 Admin 포트 방화벽 개방
enable_tiered_storage false Tiered 활성 true (프로덕션)

6. 실무 팁 & 트러블슈팅

성능 팁

자주 겪는 문제

문제 1: "NoBrokersAvailable"
해결: bootstrap_servers 확인, docker 포트 포워딩.
문제 2: 디스크 풀 (OutOfStorage)
해결: retention_bytes 조정 또는 Tiered 활성. df -h 확인.
문제 3: 느린 소비 (Lag 증가)
해결: fetch_max_wait_ms=100, max_poll_records=500. rpk topic consumer-groups describe.

클러스터 확장: rpk cluster membership --add-node new-node:33145

7. 참고 자료

추가 학습: Redpanda Connect (Kafka Connect 대안)으로 스트림 ETL.