스파이크성 트래픽 처리를 위해 Kafka Streams 윈도우를 도입하여 데이터 집계를 수행함
데이터 생성 시간과 Kafka 발행 시간 불일치 문제를 TimestampExtractor로 해결함
더미 이벤트 발행을 통해 윈도우 닫힘 문제를 해결하고 정산 시스템 안정성을 확보함
Kafka Streams는 기본적으로 Kafka 발행 시간을 기준으로 윈도우를 할당한다. 따라서 데이터 생성 시간과 발행 시간의 불일치로 인한 문제를 해결하기 위해 TimestampExtractor를 사용한다. 구체적으로, 이벤트 시간을 데이터 생성 시간으로 재정의하여 정산 데이터의 정확성을 보장한다.
Kafka Streams에서 윈도우는 스트림 시간이 윈도우 종료 시점과 유예 시간을 모두 지나야 닫힌다. 따라서, 이벤트가 없는 경우 를 외부에서 주입하여 을 강제로 전진시킨다. 결과적으로, 을 보장하고 을 유지한다.
Kafka Streams의 스트림 시간은 파티션별로 독립적으로 관리된다. 따라서, 모든 더미 이벤트의 키값이 같으면 한 파티션에서만 시간이 흐르는 문제가 발생한다. 파티션별 키값을 다르게 설정하거나, 파티션 번호를 직접 지정하여 각 파티션의 윈도우가 독립적으로 닫히도록 설계해야 한다.