Database

아파치 카프카(Apache Kafka) - 카프카 스트림즈

TedDev 2025. 1. 6. 13:14
728x90

Kafka Streams는 Apache Kafka의 스트리밍 데이터를 실시간으로 처리하기 위한 Java 라이브러리이다. Kafka Streams는 데이터를 Kafka 토픽에서 읽어와 실시간으로 변환, 집계, 분석한 뒤 결과를 다시 Kafka 토픽으로 쓰는 데 사용된다. 이를 통해 분산 스트리밍 애플리케이션을 쉽게 구현할 수 있다.

 

Kafka Streams의 주요 개념

  1. 스트림(Stream)
    • Kafka 토픽에서 지속적으로 흐르는 데이터
    • Kafka Streams에서는 스트림이 무한히 이어지는 레코드들의 순차적 흐름으로 간주된다.
  2. 토폴로지(Topology)
    • 스트림 처리 작업의 논리적 흐름
    • 데이터 변환, 필터링, 집계 등의 작업이 단계별로 정의된다.
  3. 키값 쌍(Key-Value Pair)
    • Kafka Streams에서 처리되는 데이터는 항상 키값 쌍 형태이다.
  4. 상태 저장(Stateful Processing)
    • Kafka Streams는 로컬 상태 저장소(state store)를 사용하여 상태를 유지하며 이를 통해 집계나 조인을 효율적으로 처리한다.
  5. 처리 보장
    • Kafka Streams는 메시지 처리를 Exactly Once, At Least Once로 보장할 수 있다.

 

Kafka Streams의 주요 구성 요소

  1. KStream
    • 연속적인 스트림 데이터를 나타낸다.
    • 주로 Kafka 토픽에서 데이터를 읽고 변환 작업에 사용된다.
    • 예 : 필터링, 매핑, 집계
  2. KTable
    • 업데이트 가능한 상태를 나타낸다.
    • 테이블처럼 동작하며 키에 따라 데이터를 덮어쓴다.
    • 주로 데이터의 현재 상태를 관리할 때 사용된다.
    • 예 : 누적 합계, 마지막 값 저장.
  3. GlobalKTable
    • Kafka 클러스터 전체에서 복제된 테이블
    • 모든 노드가 동일한 데이터를 가지고 있음
    • 주로 조인(join) 작업에서 사용된다.

 

Kafka Streams의 특징

  1. 분산 처리
    • Kafka Streams는 Kafka 클러스터를 활용하여 데이터를 병렬 처리
    • 애플리케이션은 클러스터의 모든 인스턴스에 걸쳐 실행된다.
  2. 가벼운 아키텍처
    • 별도의 클러스터나 브로커가 필요하지 않고 애플리케이션에 내장되어 작동
  3. 확장성
    • Kafka 토픽의 파티션 수에 따라 확장이 가능
  4. Exactly Once Processing
    • Kafka의 트랜잭션을 활용하여 데이터 손실이나 중복 없이 정확히 한 번 처리 보장.
  5. 상태 관리
    • 로컬 상태 저장소(RocksDB)를 사용하여 상태를 유지하고, 장애 발생 시 체크포인트 및 복구 지원

 

 

Kafka Streams의 주요 사용 사례

  1. 실시간 로그 분석
    • 실시간으로 로그 데이터를 수집, 필터링, 집계
  2. 이벤트 기반 애플리케이션
    • 사용자 이벤트 데이터를 실시간으로 처리하여 분석
  3. 사기 탐지
    • 금융 트랜잭션 데이터 스트림에서 이상 거래 탐지
  4. 실시간 데이터 변환
    • 데이터를 읽어 변환 후 다른 시스템으로 전달

 

Kafka Streams의 장점

  1. 내장형 배포
    • 별도의 클러스터 없이 애플리케이션에 포함하여 실행
  2. 고성능
    • Kafka의 높은 처리량과 안정성을 그대로 사용
  3. 개발 편의성
    • 직관적인 API 제공

 

Kafka Streams vs 다른 스트리밍 프레임워크

특징 Kafka Streams Apache Flink Spark Streaming
배포 방식 내장형 애플리케이션 전용 클러스터 필요 Spark 클러스터 필요
상태 관리 내장 상태 저장소(RocksDB) 사용자 정의 가능 제한적
사용 사례 Kafka와의 밀접 통합 복잡한 처리 워크플로우 배치와 스트리밍 결합
학습 곡선 쉬움 중간 중간

 

Kafka Streams는 Kafka 중심의 실시간 스트리밍 처리에 최적화된 라이브러리로 간단한 설정과 강력한 기능을 제공한다. 복잡한 워크플로우보다는 Kafka 데이터를 기반으로 한 실시간 변환과 집계에 적합하다.

반응형