스트림 처리 (stream processing)
한 줄 정의: 끝없이 흘러 들어오는 데이터를 저장 후 일괄 처리하지 않고 도착하는 대로 계산하는 방식입니다.
쉽게 풀면
데이터를 한데 모아 두었다가 밤에 한꺼번에 처리하는 대신, 들어오는 즉시 계속 계산해 결과를 갱신하는 방식입니다. 데이터에 끝이 없으므로 “최근 5분” 같은 시간 창을 정해 그 안의 값만 집계합니다. 결제 이상 탐지나 실시간 대시보드처럼 몇 초의 지연도 중요한 곳에 쓰입니다.
왜 중요한가
의사결정에 필요한 시간이 짧아질수록 일괄 처리의 지연이 곧 비용이 됩니다. 스트림 처리는 데이터의 가치가 가장 높은 시점에 바로 반응할 수 있게 해 주며, 상태를 유지하는 연산과 정확히 한 번 처리 같은 보장을 프레임워크 차원에서 제공해 신뢰성 있는 실시간 시스템을 만들 수 있게 합니다. 현대 데이터 아키텍처의 필수 구성요소입니다.
논문에서는 이렇게 쓰입니다
"이벤트 시간 기준 5분 텀블링 윈도우와 워터마크를 설정해 지연 도착 데이터를 허용하면서 스트림 처리 집계를 수행하였다."
늦게 도착하는 기록까지 감안해 시간 구간별 집계를 실시간으로 계산했다는 뜻입니다.
조금 더 깊게 보면
핵심 개념은 사건이 실제로 발생한 이벤트 시간과 시스템이 처리한 처리 시간의 구분, 그리고 이벤트 시간이 어디까지 진행되었는지를 알리는 워터마크입니다. 창은 겹치지 않는 텀블링, 겹치는 슬라이딩, 활동 간격으로 나누는 세션 형태가 표준입니다. 장애 시에도 결과가 한 번만 반영되게 하려면 상태 스냅숏과 오프셋 관리를 결합해야 하며, 이는 정확히 한 번 의미론으로 다뤄집니다.
주의할 점
맵리듀스나 ETL 파이프라인이 유한한 데이터 묶음을 한 번에 처리하는 일괄 방식인 데 비해, 스트림 처리는 경계가 없는 데이터를 전제로 창과 시간 개념을 도입합니다. 실시간이라는 말이 지연 0을 뜻하지는 않으며 정확도와 지연 사이에는 항상 교환 관계가 있습니다.