Stream Processing Framework

스트림 프로세싱(Stream Processing): “in motion” 이동중인 데이터의 실시간 혹은 준실시간(near-realtime) 처리를 의미한다. 데이터를 수집해 한번에 처리 하는 배치 프로세싱(batch processing)과 다르게 스트림 프로세싱은 연속적인 데이터 스트림을 쿼리 및 분석하고 짧은 시간(밀리초) 안에 중요한 이벤트에 대응할 수 있다.

스트림 프로세싱은 이벤트 스트리밍과 밀접한 관련이 있는데, 데이터가 연속적으로 발생하는 시스템에서 일련의 데이터 포인트에 대해 특정한 조치를 하는 것을 이벤트 스트리밍이라고 한다.

이 때, 이벤트는 데이터 포인트를 의미하며, 스트리밍은 그러한 이벤트의 연속적인 전달을 의미한다.

이러한 프로세싱은 단순한 수집에서부터 집계(합계, 평균 등의 계산), 분석(패턴 분석 및 예측), 변환 및 다른 데이터 소스와 결합을 의미한다.

An overview of event stream processing(https://hazelcast.com/glossary/event-stream-processing/)

An overview of event stream processing(https://hazelcast.com/glossary/event-stream-processing/)

스트림 프로세싱은 배치 프로세싱과 비교되곤 하는데, 스트림 프로세싱이 모든 배치 프로세싱을 대체하는 것을 의미하지 않는다.

배치 프로세스는 정적 데이터 세트를 대상으로 작업하는 경우에 알맞으며, 스트림 프로세싱은 동적으로 흘러가는 데이터 처리에 적합하다.

두 방식은 상호 보완적으로 사용되며 이들을 결합한 하이브리드 모델도 존재한다.

기준 배치 프로세싱 스트림 프로세싱
처리 방식 • 일정기간 단위로 수집하여 한 번에 처리 • 연속된 데이터를 하나씩 처리
처리량 • 대규모 데이터 단위 • 주로 소량의 레코드 단위
속도 • 수분~시간의 지연시간 • (준)실시간
사용환경 • 복잡한 분석이 요구되는 환경
• 데이터 처리량이 많은 환경
• 데이터를 스트림으로 전달할 수 없는 레거시 시스템 환경 • 실시간 처리 및 분석 정보가 요구되는 환경
• 고급 메시징
사용 예 • 급여 및 청구 시스템 • 은행 ATM
• 부정행위 탐지 및 모니터링 시스템
• SNS 데이터 분석

스트림 프로세싱의 특성으로는 이벤트 처리 보장, 내결함성(Fault Tolerance) 및 상태 관리 등을 통하여 지원된다는 것이다. 이벤트 처리 보장은 데이터 파이프라인에서 데이터를 전달하는 방법으로, At-least-once, At-most-once, Exactly-once 가 있다.

이벤트 처리 보장

스트림 프로세싱 구현 방식