실시간 데이터의 '마감 시간' 정하기: 스트림 처리와 워터마크 전략
(fredly.dev)[블로그] 실시간 데이터의 '마감 시간' 정하기: 스트림 처리와 워터마크 전략
(원문: https://fredly.dev/watermark-pattern/)
실시간 스트림 처리 시스템에서 데이터의 '적시성'과 '정확성' 사이의 트레이드오프를 해결하는 워터마크 패턴(Watermark Pattern)을 소개합니다. 저자의 실무 경험(CCTV 메타데이터 처리)을 바탕으로, 분산 환경에서 발생하는 데이터 순서 뒤바뀜 문제를 어떻게 엔지니어링적으로 해결하는지 다룹니다.
주요 내용:
- 이벤트 시간 vs 처리 시간: 네트워크 지연으로 인해 발생하는 두 시간축의 간극과 이로 인한 데이터 순서 역전 문제 분석.
- 공항 게이트 비유: 무한정 기다릴 수 없는 실시간 시스템에서 '마감 시간'으로서의 워터마크 역할 설명.
- 워터마크의 수학적 정의:
Watermark = max(Event Time) - Lag
시스템이 "이 시점 이전 데이터는 모두 수집되었다"고 신뢰할 수 있는 논리적 임계점 설정. - 시스템 구성 요소:
- 타임스탬프 추출기(Timestamp Extractor): 데이터 내 실제 생성 시간 추출.
- 워터마크 생성기(Watermark Generator): 단조 증가(Monotonically Increasing)를 보장하며 마커 패킷 발행.
- 지연 처리 정책(Late Data Policy): 마감 후 도착한 지연 데이터(Late Data)에 대한 대응 시나리오(무시, 별도 저장, 결과 업데이트).
- 엔지니어링 인사이트: 완벽한 정합성보다는 '허용 가능한 오차' 내에서의 적시성이 중요한 실시간 데이터 파이프라인 설계 전략.