Kafka 고급 활용 학습

Kafka를 실무에서 대규모 데이터 처리, 장기 보관, 멀티 데이터센터 운영까지 확장하려면 Flink/Spark 연동, Schema Registry, Tiered Storage, Cross-Cluster Kafka 등의 개념을 이해해야 합니다.


📌 1. Kafka + Flink/Spark (실시간 데이터 처리 프레임워크 연동)

Kafka는 Flink, Spark와 결합하여 실시간 데이터 처리 시스템을 구축할 수 있습니다.

🔹 Kafka + Apache Flink

Apache Flink는 저지연 실시간 데이터 스트리밍 처리에 최적화된 프레임워크입니다.

특징 설명
실시간 스트리밍 Kafka에서 데이터를 받아 실시간 분석
상태 기반 처리 이벤트의 상태를 저장하여 복잡한 계산 수행 가능
Exactly-once 처리 정확히 한 번만 처리 (Kafka와 잘 호환됨)

✅ Flink + Kafka 예제

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> stream = env.addSource(new FlinkKafkaConsumer<>("input-topic", new SimpleStringSchema(), properties));
stream.map(value -> "Processed: " + value).addSink(new FlinkKafkaProducer<>("output-topic", new SimpleStringSchema(), properties));
env.execute();

Kafka에서 데이터를 읽고, **"Processed: "**를 붙여 새로운 Kafka Topic에 저장


🔹 Kafka + Apache Spark Streaming

Apache Spark Streaming은 마이크로 배치(Micro-Batch) 기반 실시간 분석 프레임워크입니다.

특징 설명
마이크로 배치 처리 일정한 시간 간격으로 데이터를 묶어서 처리
대규모 데이터 분석 가능 머신러닝 및 데이터 분석과 결합 가능
고가용성 데이터 손실 없이 복구 가능

✅ Spark Streaming + Kafka 예제

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode, split

spark = SparkSession.builder.appName("KafkaSpark").getOrCreate()
df = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").option("subscribe", "input-topic").load()
df.selectExpr("CAST(value AS STRING)").writeStream.format("console").start().awaitTermination()

✅ Kafka에서 데이터를 받아 Spark Streaming으로 실시간 출력

🔹 Kafka + Flink vs Kafka + Spark Streaming

비교 항목 Kafka + Flink Kafka + Spark Streaming
처리 방식 이벤트 단위(저지연) 마이크로 배치
처리 속도 빠름 (ms 단위) 배치 기반 (초 단위)
상태 관리 지원 (Stateful Processing) 기본 지원 X (별도 구현 필요)
적용 사례 IoT, 실시간 모니터링 로그 분석, 머신러닝

실시간 저지연 처리는 Flink, 대규모 데이터 분석은 Spark가 유리


📌 2. Kafka Schema Registry (Avro/JSON Schema 관리)

Kafka에서는 데이터 형식(스키마)을 표준화하여 비호환성을 방지해야 합니다.
이를 위해 Schema Registry를 사용합니다.

🔹 Schema Registry란?

  • JSON, Avro, Protocol Buffers와 함께 사용
  • 스키마 변경(버전 관리) 지원
  • Kafka Producer-Consumer 간의 데이터 구조 일관성 유지

🔹 Avro 스키마 예제

{
  "type": "record",
  "name": "User",
  "fields": [
    {"name": "id", "type": "int"},
    {"name": "name", "type": "string"}
  ]
}

Kafka 메시지가 Avro 형식을 따르도록 강제

🔹 Schema Registry 적용 방식

  1. Kafka Producer가 메시지를 Avro 형식으로 직렬화
  2. Schema Registry에 스키마를 저장
  3. Consumer가 메시지를 받을 때 스키마를 확인 후 역직렬화

Schema Registry를 사용하면 Kafka 메시지 형식을 통합하여 데이터 충돌을 방지할 수 있습니다.


📌 3. Kafka Tiered Storage (장기 보관 데이터를 위한 스토리지 옵션)

Kafka는 기본적으로 디스크 기반 로그 저장을 사용하지만, 장기간 데이터를 보관하려면 추가 스토리지가 필요합니다.
이를 위해 **Tiered Storage(계층형 스토리지)**를 사용할 수 있습니다.

🔹 Kafka Tiered Storage 개념

계층 설명
Hot Storage (빠른 디스크) SSD, NVMe 기반 저장소 (저지연)
Warm Storage (HDD, NAS) 주기적으로 접근하는 데이터
Cold Storage (클라우드, S3, HDFS) 장기 보관 (비용 절감)

🔹 Kafka Tiered Storage 활용 예제

  • 단기 데이터(최근 7일) → Kafka Broker 디스크 저장
  • 장기 데이터(6개월 이상) → AWS S3, HDFS로 이전

Kafka Tiered Storage를 사용하면 스토리지 비용을 줄이고, 장기 데이터를 효율적으로 관리 가능


📌 4. Kafka Streams vs Flink (스트리밍 데이터 처리 비교)

Kafka Streams와 Flink는 모두 Kafka 데이터를 처리하는 스트리밍 프레임워크지만 차이가 있습니다.

비교 항목 Kafka Streams Apache Flink
Kafka 통합 Kafka 전용 Kafka 포함 가능
처리 방식 이벤트 기반 (Stream Processing) 저지연 스트리밍
배포 방식 애플리케이션 내장 클러스터 필요
상태 관리 RocksDB 기반 Flink State Backend
적용 사례 간단한 스트리밍 복잡한 이벤트 분석

Kafka Streams는 Kafka에 최적화된 경량 솔루션, Flink는 대규모 실시간 분석에 적합


📌 5. Cross-Cluster Kafka (여러 데이터센터에서 Kafka 활용)

Kafka를 멀티 데이터센터 환경에서 운영하려면 Cross-Cluster Kafka를 설정해야 합니다.

🔹 Cross-Cluster Kafka 아키텍처

  • Active-Active: 여러 데이터센터에서 Kafka가 독립적으로 운영되며, 양방향 복제 지원
  • Active-Passive: 한쪽 Kafka 클러스터에서 데이터를 처리하고, 다른 데이터센터로 백업
  • MirrorMaker 2: Kafka 클러스터 간 데이터 복제를 위한 도구

🔹 MirrorMaker 2를 이용한 Kafka 복제

bin/connect-mirror-maker.sh config/mirror-maker.properties

Kafka 데이터를 원격 데이터센터로 자동 복제 가능

🔹 Cross-Cluster Kafka 적용 사례

사례 설명
DR(재해 복구) 구성 장애 발생 시 데이터 손실 없이 백업 가능
데이터 글로벌 동기화 미국, 유럽, 아시아 간 실시간 데이터 동기화
로드 밸런싱 여러 데이터센터에서 Kafka를 분산 운영

Cross-Cluster Kafka를 활용하면 글로벌 시스템에서도 안정적인 데이터 스트리밍이 가능


✅ 정리

학습 주제 설명
Kafka + Flink/Spark 실시간 데이터 처리 프레임워크와 결합
Kafka Schema Registry Avro/JSON Schema 관리
Kafka Tiered Storage 장기 보관 데이터를 위한 스토리지 옵션
Kafka Streams vs Flink 스트리밍 데이터 처리 비교
Cross-Cluster Kafka 여러 데이터센터에서 Kafka 활용

 

이제 Kafka를 대규모 데이터 처리, 글로벌 운영 환경에서도 활용할 수 있습니다! 🚀

'kafka' 카테고리의 다른 글

[Kafka] Kafka 운영 및 최적화 학습  (0) 2025.02.03
[Kafka] Kafka 개념 및 기초 학습  (0) 2025.02.03
[Kafka] 학습 로드맵  (0) 2025.02.03

+ Recent posts