Kafka - KsqlDB

develkkm·2025년 11월 16일

0부터 시작하는 Kafka

목록 보기
14/18

ksqlDB는 Kafka 위에서 동작하는 Streaming 전용 데이터베이스다.
SQL 문법을 통해 Streaming 데이터를 실시간으로 처리할 수 있도록 구성되어 있으며 Kafka Streams API 기반으로 실행된다.

  • 대용량 실시간 Streaming 데이터 처리
  • 빠른 분석 로직 구현
  • 실시간 이벤트 기반 시스템 구성

즉 연속해서 들어오는 Kafka Topic 데이터를 SQL 형태로 가공하고 분석하기 위한 구조다.


Kafka Streams

ksqlDB의 내부 실행 구조는 Kafka Streams API를 기반으로 구성된다.
Streaming 처리는 다음 요소들로 이루어진다.

  • Kafka Streams API
  • Streams Topology
  • State Store
  • Kafka Topic

Streams 애플리케이션은 Topic에서 데이터를 읽고 Topology를 따라 연속적인 처리를 수행하며 필요한 상태는 State Store에 저장된다.

State Store는 RocksDB 기반으로 구성된다.

Producer–Consumer 방식과 비교하면 Streams 방식은 Topology와 State Store를 활용하는 구조로 실시간 처리를 위한 더 복합적인 실행 모델을 가진다.


RocksDB

RocksDB는 Key-Value 기반 Embedded Database로
Streaming 처리에서 상태를 저장하기 위한 엔진으로 사용된다.

특징

  • Key-Value 기반 단일 노드 Embedded DB
  • 대규모 데이터에서도 높은 처리 속도
  • Java Interface 제공
  • 분산 기능은 없으며 독립 DB 인스턴스 형태로 동작

Kafka Streaming 구조에서는 Partition 단위로 RocksDB 인스턴스가 생성된다.

  • Partition이 여러 개라면 Partition마다 RocksDB 인스턴스가 하나씩 생성
  • 개별 RocksDB 인스턴스끼리는 서로 상호작용하지 않음
  • Kafka의 분산은 Partition이 담당하고 RocksDB는 각 Partition의 상태 저장을 담당

Kafka Streams & RocksDB

  • Kafka Topic에서 이벤트가 입력
  • Streams Topology가 이벤트를 처리
  • 처리 과정에서 필요한 상태는 State Store를 통해 관리

즉 Streaming 처리 과정의 중간 상태나 집계 데이터는
각 Streams Task에 연결된 RocksDB에 저장된다.


ksqlDB & Kafka Streams

ksqlDB는 입력된 SQL을 Kafka Streams Topology로 변환하여 실행한다.
Streaming 처리는 Partition 단위로 분리되며 각 Partition은 하나의 Stream Task가 담당한다.

구조

  • ksqlDB 서버 인스턴스는 하나의 Process
  • SQL이 실행되면 Streams Topology가 생성
  • Topology는 Stream Task 단위로 분리
  • Task는 Thread에서 실행

입력 Topic의 Partition 수에 따라 Sub-Topology와 Task가 결정된다.

예를 들어 Partition이 3개인 Topic을 사용하면 3개의 Sub-Topology와 3개의 Stream Task가 생성된다.


병렬 처리 구조

Streaming 병렬도는 Partition과 Task를 기준으로 구성된다.

  • 입력 Topic Partition 수 = Stream Task 수
  • Stream Task 수가 곧 병렬 처리 가능한 단위

동작 방식

  • Stream Task는 일반적으로 하나의 Stream Thread에 매핑
  • Thread 수가 Task보다 적으면 Thread 한 개가 여러 Task를 순차적으로 처리
  • Task마다 RocksDB State Store가 생성
  • Stream Thread들은 서로 데이터를 공유하지 않음

또한 여러 Topic이 동일한 Partition 수를 가지는 경우
각 Partition에 대해 동일한 수의 Stream Task가 생성된다.


RDBMS 실시간 분석 구조 비교

Streaming 기반 실시간 처리 구조는 일반적인 RDBMS 기반 분석 구조와 다음과 같은 차이를 가진다.

RDBMS 기반 처리

  • 주기적인 배치 처리 중심
  • 다양한 분석 기능을 제공하지만 실시간성은 제한적

Streaming 기반 처리 구조

  • 상대적으로 적은 비용으로 구성 가능
  • 실시간 Event Streaming 데이터 분석에 최적화
  • Kafka Partition 기반 확장으로 높은 확장성 확보 가능

Streaming 분석 환경에서는 데이터가 지속적으로 흘러들어오는 구조를 기반으로 하기 때문에 Partition 기반의 자연스러운 병렬 구조를 활용할 수 있는 것이 장점이다.


ksqlDB 활용 사례

ksqlDB는 다음과 같은 실시간 처리 환경에서 사용된다.

  • 온라인 서비스 로그 분석
  • Fraud Detection 등 실시간 이상 탐지
  • IoT 센서 데이터 Streaming 분석
  • 실시간 이벤트 기반 전처리 및 변환

이처럼 다양한 Streaming 데이터 처리 환경에서 ksqlDB는 SQL 기반 실시간 분석 구조를 제공한다.

profile
알던것을 더 확실하게

0개의 댓글