Flink, KeyedProcessFunction, Redis를 활용한 실시간 추천 시스템 구축 노하우

by DD
11개월 전
조회수 6

Flink를 활용하여 유저의 실시간 이벤트를 조합하는 스트림 조인 서비스를 구축함

KeyedProcessFunctionTimerService를 통해 유연한 지연 시간 제어 및 이벤트 조합 로직 구현

Redis를 활용한 중복 제거 로직으로 데이터 처리 지연 시간을 300ms에서 3ms 미만으로 개선

KeyedProcessFunction을 활용한 이벤트 조합

Flink의 KeyedProcessFunction은 유연한 상태 관리와 TimerService를 제공하여 복잡한 이벤트 조합 로직을 구현한다. 구체적으로, 이벤트 ID를 기준으로 이벤트를 파티셔닝하고, 각 키에 대한 상태를 관리한다. 따라서 타이머 설정을 통해 이벤트 도착 순서와 관계없이 조합을 수행하며, 지연 시간 조절이 가능하다.

무중단 배포를 위한 Savepoint와 Blue-Green 전략

Flink 애플리케이션의 상태 관리를 위해 Savepoint를 활용하여 배포 중 데이터 유실을 방지한다. 따라서, CheckpointedFunction을 통해 타이머 상태를 보존하고, 배포 후에도 이벤트 조합 성공률을 유지한다. Blue-Green 배포 전략을 통해 서비스 중단 없이 새로운 버전으로 전환하여 서비스 안정성을 확보한다.

Redis를 활용한 Exactly-Once Semantics 구현

데이터의 정확성을 보장하기 위해 Redis를 활용하여 중복 제거 로직을 구현한다. 구체적으로, Redis SET NX 명령어 또는 Lua script를 사용하여 동시성 문제를 해결하고, 중복된 이벤트 발행을 방지한다. 결과적으로, 데이터 처리 지연 시간을 획기적으로 줄여 실시간성을 향상시켰다.

AI 실시간 추천 시스템을 위한 Flink 기반 스트림 조인 서비스 구축기