카프카는 대규모 메시지를 저장하고 빠르게 처리하기 위해서 개발되었지만 일련의 연속된 메시지인 스트림을 처리 하는데도 점차 사용 되었다.

이번 글에서는 카프카에서 제공하고 있는 스트림 API를 통해 스트림을 처리하는 방법에 대해 정리해보고자 한다.

1. Stream Processing and Batch Processing

Stream Processing은 데이터 흐름에 따라 처리 즉 데이터가 분석 시스템이나 프로그램에 도달하자 마자 처리하기 때문에 실시간 분석이라고 하며

Batch Processing은 이미 저장된 된 데이터를 기반으로 분석이나 질의를 수행하고 특정 시간에 처리하는 특징이 있다.

Stream Processing의 장점은 다음과 같이 이야기 할 수 있다.

2. Kafka Streams..?

카프카 스트림즈는 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리 이다.

특히 입력 Kafka 토픽을 출력 Kafka 토픽으로 변환하는 애플리케이션을 빌드하기 위한 라이브러리이다. (후 실습 진행)

ex)

기존 :Producer : ErJuer-Topic , Consumer : ErJuer-Topic

Kafka Streams 활용 : ErJuer-Topic-Input -> (Kafka Streams API) ->ErJuer-Topic-output

추가.  타 스트림 처리 API와의 차이점

https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Introducing Kafka Streams: Stream Processing Made Simple | Confluent Confluent is building the foundational platform for data in motion so any organization can innovate and win in a digital-first world. www.confluent.io

스트림 프레임워크 Storm, Samza, Spark Streaming를 활용하기 위해서는 클러스터를 구축해야하며 해당 프레임워크 위에 핵심 앱을 구축해야 한다.