핵심 요약
토스가 1분~7일의 슬라이딩 집계를 실시간으로 제공하기 위해 minutes/hours/days의 3개 Flink 앱으로 아키텍처를 분리했고, 상태를 SSOT로 관리해 장애 시 Redis 재구성이 가능하도록 설계했습니다.
구현 방법
- 각 앱이 분/시간/7일 윈도우를 처리하도록 구분
- SSOT로 상태를 두고 Redis를 프로젝션으로 사용
- 백필과 캐치업의 2단계 파이프라인으로 초기 적재 정합성 확보
- 서빙 시 Redis를 한 번만 조회해 합산
주요 결과
- 1분~7일 슬라이딩 집계의 실시간 서빙 가능
- 장애/재시작 시 Redis 재구성 용이
- 운영 복잡도 감소 및 병목 완화
