본문으로 이동
문서

Apache Flink + RocksDB 튜닝으로 광고 Frequency Capping 실시간 집계를 일주일까지 확장하기

이승민/최원용 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

기존 Airflow 배치 구조는 장기 슬라이딩 집계를 시간 단위로 절삭하고 서빙 때 여러 Redis 계층을 합산해야 해, 1분부터 7일까지의 정밀한 실시간 집계를 제공하기 어려웠습니다. 이를 해결하기 위해 집계 구간별 병목이 다르다는 점을 고려해 Flink 앱을 minutes·hours·days로 분리하고, State를 단일 진실 공급원으로 삼아 Redis를 재구성할 수 있도록 설계했습니다. 특히 days 앱은 만료 타이머가 없는 백필과 타이머를 등록하는 캐치업을 별도 파이프라인으로 나누고, eventTime 기준 Redis 쓰기와 timerState TTL 등으로 전환 정합성을 확보했습니다. 운영 중에는 앱별 지표와 프로파일링을 바탕으로 RocksDB 메모리·레벨·Filter Block 설정, Flink 메모리와 직렬화를 조정했으며, 병목은 앱마다 다르므로 설정을 분리하고 실제 동작을 측정해 튜닝해야 한다는 점을 보여줍니다.

  • 백필은 카운트만 쌓고 캐치업은 만료 타이머까지 재구축하므로, 두 단계를 분리하고 별도 Kafka Consumer Group을 사용해야 합니다.
  • Watermark가 느린 파티션에 막힐 수 있으므로 Redis 쓰기 여부는 전체 watermark가 아니라 이벤트의 eventTime으로 판단합니다.
  • RocksDB의 Write Stall은 write_buffer_size만 키우기보다 managed memory와 WBR을 조정해 Write Buffer Manager의 실제 예산을 확보해야 합니다.
  • Direct I/O에서는 Filter Block Cache Miss가 디스크 읽기로 이어지므로, 대형 SST를 다룰 때 partitioned-index-filters 설정을 검토해야 합니다.
  • 설정값은 Flink 내부에서 덮어써질 수 있으므로, 실제 적용 여부를 소스 코드와 운영 지표로 확인해야 합니다.

소개

1분부터 7일까지 슬라이딩 윈도우 Frequency Capping을 세 Flink 앱으로 분리하고 각각의 병목을 해결한 기록을 공유합니다.

비슷한 학습 자료

컨퍼런스 엔지니어링데이 2025

네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY 2025 에서 발표되었던 세션을 공개합니다. [발표 내용] - 본 영상에서는 “실시간 거래 리포트를 어떻게 하면 사용자가 원하는 다양한 조건으로 빠르게 조회할 수 있을까?” 라는 질문에서 출발한 기술적 여정을 다룹니다. - 단순히 데이터를 쌓고 조회하는 단계를 넘어, 거래 데이터의 최신성과 응답 속도, 그리고 확장성을 동시에 확보하기 위한 여러 시도를 공유합니다. [발표 대상] - 데이터 플랫폼 엔지니어 / 데이터 아키텍트 – 대용량 실시간 데이터 처리 및 저지연 설계에 관심 있는 분 - 분석 플랫폼 운영자 / BI 개발자 – 다차원 필터 조회 속도 및 Freshness 향상 전략을 찾고 있는 분 - Spark, Iceberg, StarRocks 활용자 – 실제 조합 운영 사례를 통해 운영 팁을 얻고자 하는 분 [목차] 0. 소개 (Introduction) 1. 문제 정의 (Problem Definition)...

데이터베이스 데브옵스 · 인프라

컨퍼런스 엔지니어링데이 2025

Paimon 겟또다제 ! (w/ ADVoost Shopping)

컨퍼런스 엔지니어링데이 2025

네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY 2025(5월)에서 발표되었던 세션을 공개합니다. [발표 내용] ADVoost Shopping에서 실시간 유효 광고 선정을 위해 Apache Flink와 Paimon을 활용한 architecture에 대해 소개합니다. Apache Paimon의 주요 기능과 다양한 옵션들에 대해 소개합니다. [강의 대상 및 직군] 실시간 처리를 위해 고민하고 있는 데이터 엔지니어 Paimon, Iceberg와 같은 lakehouse format을 운영하거나 도입하려는 데이터 엔지니어 [목차] Episode 1: ADVoost Shopping에서 실시간 유효 광고 선정을 처리하는 법 - Apache Paimon을 활용한 실시간 유효 광고 선정 Architecture - 실시간 유효 광고 선정에서 Apache Flink + Paimon을 도입한 이유 - Apache Paimon 소개 Episode 2: Apache Paimo...

데이터베이스 데브옵스 · 인프라

문서 이세찬

토스페이먼츠 데이터 엔지니어링 팀이 50억 건의 데이터를 1초 이내로 조회하는 시스템을 구축한 이야기를 들려드려요.

백엔드 데이터베이스

문서 김문수

Spark 작업이 효율적으로 실행되는지 모니터링하기 위해서 Spark Analyzer를 만든 경험을 공유하려고 합니다. 저희와 비슷한 고민을 가진 분들께 도움이 되길 바랍니다.

데이터베이스 데브옵스 · 인프라

문서 박지환

Kafka Streams 윈도우 도입기

문서 박지환

재고 정산 처리에 Kafka Streams window를 도입하며 겪은 이야기

백엔드

문서 한수진

Dataflow 서비스 잘 이해하기

데브옵스 · 인프라 딥러닝 · 머신러닝