카프카는 대규모 메시지를 저장하고 빠르게 처리하기 위해서 개발되었지만 일련의 연속된 메시지인 스트림을 처리 하는데도 점차 사용 되었다.
이번 글에서는 카프카에서 제공하고 있는 스트림 API를 통해 스트림을 처리하는 방법에 대해 정리해보고자 한다.
Stream Processing은 데이터 흐름에 따라 처리 즉 데이터가 분석 시스템이나 프로그램에 도달하자 마자 처리하기 때문에 실시간 분석이라고 하며
Batch Processing은 이미 저장된 된 데이터를 기반으로 분석이나 질의를 수행하고 특정 시간에 처리하는 특징이 있다.
Stream Processing의 장점은 다음과 같이 이야기 할 수 있다.
카프카 스트림즈는 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언트 라이브러리 이다.
특히 입력 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/
스트림 프레임워크 Storm, Samza, Spark Streaming를 활용하기 위해서는 클러스터를 구축해야하며 해당 프레임워크 위에 핵심 앱을 구축해야 한다.