Overview

Apache Kafka는 분산형 커밋 로그(commit log) 기반의 메시징 시스템으로, 높은 처리량과 내결함성을 갖춘 이벤트 스트리밍 플랫폼입니다. 주요 특성은 다음과 같습니다.

  1. 퍼블리시–서브스크라이브 모델
  2. 내결함성 및 내구성
  3. 높은 처리량과 낮은 지연
  4. 유연한 스트림 처리 연동
  5. 오픈소스 에코시스템

Kafka stream vs Flink Datastream

Apache Kafka Stream(kafka-streams/ksqlDB) vs. Apache Flink Stream/Table API 비교

Apache Kafka 에 내장된 Kafka StreamsksqlDB는 “스트림 프로세싱 라이브러리이자 프레임워크”로, Kafka 토픽에서 바로 데이터를 읽고 쓰는 경량화된 모델을 제공합니다. 반면 Apache Flink 의 DataStream APITable/API & SQL은 독립 실행형 분산 처리 엔진으로, 다양한 소스·싱크를 지원하며 복잡한 상태 관리와 시간 지향 연산을 수행합니다.

특징 Kafka Streams / ksqlDB Flink DataStream / Table API
아키텍처 애플리케이션 라이브러리(embedded), Kafka 클라이언트 위에서 실행 마스터(JobManager)–워커(TaskManager) 클러스터 기반 엔진
배포·운영 JVM 프로세스 단위로 독립 실행, Kafka 클러스터 외 별도 인프라 불필요 별도 플러그형 클러스터 필요, YARN/Kubernetes·Standalone 지원
상태 관리
(State) RocksDB 내장, 토픽 백업 통해 체크포인트 관리 체크포인트·세이브포인트로 exactly-once 보장, RocksDB 포함 다수 백엔드
시간 의미
(Time Semantics) 인제션 타임 위주, 윈도우링은 지원하나 이벤트 타임 지연 처리 한계 이벤트-인제션-프로세싱 타임 전면 지원, 워터마크 기반 late 데이터 처리
API 스타일 Java/Kotlin DSL, ksqlDB SQL Java/Scala/Python DataStream DSL, Table API·SQL 지원
스케일링 스레드 단위 분산(토픽 파티션 매핑), 클라이언트별 수평 확장 한계 클러스터 전체의 수천~수만 개 슬롯에 걸쳐 유연한 병렬도 조정
커넥터 지원 Kafka 중심, 외부 시스템은 커스텀 프로듀서·컨슈머로 구현 필요 100여 개 내장 커넥터 제공(Kafka, JDBC, Cassandra, Elasticsearch 등)

결론:

Publisher Performance Test

카프카는 크게 Producer(=Publisher), Consumer(=Subscriber) 이용자로 나뉘며 각 행위를 Publish(=Produce), Subscribe(=Consume)으로 칭한다.

테스트 또한 Publisher, Subscriber로 나뉘어서 진행할 예정이다.