Apache Kafka는 분산형 커밋 로그(commit log) 기반의 메시징 시스템으로, 높은 처리량과 내결함성을 갖춘 이벤트 스트리밍 플랫폼입니다. 주요 특성은 다음과 같습니다.
Apache Kafka Stream(kafka-streams/ksqlDB) vs. Apache Flink Stream/Table API 비교
Apache Kafka 에 내장된 Kafka Streams와 ksqlDB는 “스트림 프로세싱 라이브러리이자 프레임워크”로, Kafka 토픽에서 바로 데이터를 읽고 쓰는 경량화된 모델을 제공합니다. 반면 Apache Flink 의 DataStream API와 Table/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 등) |
결론:
카프카는 크게 Producer(=Publisher), Consumer(=Subscriber) 이용자로 나뉘며 각 행위를 Publish(=Produce), Subscribe(=Consume)으로 칭한다.
테스트 또한 Publisher, Subscriber로 나뉘어서 진행할 예정이다.