Kafka 완전 정복 : 클러스터 구축부터 MSA 환경 활용까지/기본,심화 개념, 아키텍처와 생태계

Ch05. Kafka Streams와 ksqlDB 개념 및 이해 - Kafka Streams, ksqlDB

webmaster 2023. 5. 7. 23:13
728x90

Realtime Event Stream Processing

대용량의 이벤트 스트림 데이터를 실시간으로 분석 및 처리는 요구사항은 다양함

  • Database에 저장 후 분석 및 처리하는 것이 아니라, Kafka에 있는 움직이는 데이터(Data in Motion)를 바로 분석 및 처리하는 것이 핵심!

Realtime Event Stream Processing 사례(센서에서 발생하는 데이터를 실시간으로 분석)

실시간 이벤트 스트림을 실시간으로 분석하여, 실시간으로 빠르게 대응하기 위한 기술

실시간으로 동작하는 공장 데이터

기존에 사용하던 Realtime Event Stream Processing 방법들(Apache Spark, Storm, Flink)

Apache Spark

  • UC 버클리대학교에서 개발(2009, 2010 BSD, 2013 ASF)
  • 범용적인 목적을 지닌 분산 클러스터 컴퓨팅 프레임워크
  • MapReduce 형태의 클러스터 컴퓨팅 패러다임의 한계를 극복하고자 등장( 하둡과 같은 기술을 한계를 극복하고자 했다)
  • Spark Cluster를 구성해야 하며 이를 관리하는 Cluster Manager와 데이터를 분산 저장하는 Distributed Storage System이 필요 - 사용이 어려움

Apache Storm

  • 2011년에 개발된 후 트위터(Twitter, Inc.)에 의해 오픈소스화(2014)
  • 주로 Clojure 프로그래밍 언어로 작성된 분산형 스트림 프로세싱 프레임워크
  • 별도의 Storm Cluster를 설치 구성
  • 상태 관리가 지원되지 않아 Aggregation, Windows, Water Mark 등을 사용할 수 없기 때문에 고급 분석에 제약

Apache Flink

  • 베를린 TU대학교에서 시작(2010, 2014 오픈소스화)
  • 통합 스트림 처리 및 Batch 처리 프레임워크
  • Java 및 Scala로 작성된 분산 스트리밍 Data Flow 엔진
  • 사용자의 Stream Processing Code는 Flink Cluster에서 하나의 Job으로 배포 및 실행

Kafka 진영에서 나온 Realtime Event Stream Processing 방법들(Kafka Streams, ksqlDB)

kafka Streams

  • Event Streaming용 Library(Java, Scala)
  • Kafka 0.10.0.0 에 처음 포함(2016)
  • Framework 이 아님(라이브러리이다) - 별도의 Cluster 구축이 불필요
  • application.id 로 KStreams Application을 grouping
  • groupBy, count, filter, join, aggregate 등 손쉬운 스트림 프로세싱 API 제공

ksqlDB

  • Event Streaming Database(또는 SQL 엔진) -RDBMS/NoSQL DB 가 아님
  • Confluent Community License(2017)
  • 간단한 Cluster 구축 방법 - 동일한 ksql.service.id 로 ksqlDB를 여러 개 기동
  • 여러 개의 Cluster는 ksql.service.id 값을 서로 다르게 하기만 하면 됨
  • SQL과 유사한 형태로 ksqlDB에 명령어를 전송하여 스트림 프로세싱 수행

Kafka 기반 Event Stream Processing 방식 정리

Kafka Pub/Sub vs Kafka Streams vs ksqlDB

  • Kafka Pub/Sub를 사용하면, data를 가지고 와서 사용하는 부분을 모두 Appliction 개발자가 코딩을 해주어야 한다.
  • Kafka Streams를 사용하면, 카프카가 제공하는 API를 통해 더 간단하게 코딩 가능
  • KsqlDB 같은 경우에는 SQL을 작성만 하면 되므로 더 간단하다.

ksqlDB vs Kafka Streams

Apache Kafka용 Event Stream Processing을 위한 방법

Kafka 와의 상호작용 구조(Broker와 별개로 구성)

Data Flow

개발 방식 및 배포 방식(SQL 배포 vs Application 배포)

 

728x90