DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
KOEN
Read Original

Contents

Continue Reading

  • More from Pinterest
  • Related reads#ApacheFlink
#Backend

핀터레스트의 차세대 DB 적재 프레임워크 내 파티션 완료 처리 기법

핀터레스트의 차세대 DB 적재 프레임워크 내 파티션 완료 처리 기법
01

Summary

실시간 스트리밍 시대에 데이터가 다 들어왔다고 확신하는 법: 핀터레스트의 이벤트 시간 기반 파티션 완료 처리

Flink와 Iceberg의 메타데이터를 극대화하여 다운스트림 배치 작업의 지연과 데이터 누락 문제를 완벽하게 제어하는 아키텍처를 공개합니다.

본 아티클은 핀터레스트가 배치 기반 데이터 인제스션을 실시간 CDC 스트리밍 방식으로 마이그레이션하면서 겪은 데이터 완결성 판단 문제를 해결하는 과정을 다룹니다. 플링크와 아이스버그의 싱크 단에 직접 확장 기능인 Accumulators와 CommitProcessor를 구현하여 성능 저하 없이 파티션 완료 상태를 추적합니다. 최종적으로 데이터 신선도와 완결성 사이의 조율이 가능한 설정형 정책을 제공하여 다양한 다운스트림 시스템의 요구사항을 충족합니다.

  • 01스트림 인제스션 전환 시 발생하는 언제 파티션이 완료되었는가에 대한 다운스트림 소비자의 근본적인 질문 해결
  • 02플링크 커스터마이징을 통해 부가적인 인프라나 아웃오브밴드 서비스 없이 Iceberg 테이블 자체 속성으로 신호 제어
  • 03t-digest 알고리즘 기반의 마이크로 스케치를 적용해 데이터 규모와 상관없이 단 수백 바이트로 완결성 상태 관리
  • 04CDC 테이블에서 축적된 워터마크 의견을 스파크 배치 프로세스가 베이스 테이블로 자동 전파하는 메타데이터 파이프라인 구축
  • 05완결성과 신선도 사이의 균형을 직접 튜닝할 수 있는 다양한 퍼센타일 기반의 최종화 정책 설계

+RECOMMENDATION

실시간 CDC 스트리밍 환경에서 일관된 일 또는 시간 단위 배치 다운스트림 처리가 필요하거나, 이벤트 지연 데이터로 인해 배치 파이프라인 시작 시점을 결정하는 데 어려움을 겪는 데이터 엔지니어들에게 Flink-Iceberg 메타데이터 활용 패턴으로 적극 추천합니다.

The Problem

기존 배치 기반 시스템에서는 전체 DB를 한 번에 읽어 파티션을 쉽게 완료 처리할 수 있었으나, 실시간 스트리밍 기반의 차세대 CDC 프레임워크 도입 이후에는 이벤트 시간 지연으로 인해 특정 파티션의 데이터가 언제 완료되는지 판단하기 어려워졌습니다.

The Solution

아파치 플링크와 아이스버그 싱크에 Accumulators와 CommitProcessor라는 확장 포인트를 도입하여, 체크포인트별로 이벤트 시간 통계(t-digest 스케치)를 수집하고 커밋 후 비퇴행성 워터마크 알고리즘을 수행하여 파티션 완료 여부를 판단하도록 구현했습니다.

The Result

수백 바이트 수준의 초경량 메타데이터만으로 데이터를 자가 기술하며, 다운스트림 배치 작업이 센서를 통해 메타데이터를 확인하고 안전한 시점에 처리를 시작할 수 있게 되었으며, 이 신호는 스파크 업서트 작업을 통해 베이스 테이블까지 전파됩니다.

Trade-off

데이터 완결성과 대기 시간 사이의 트레이드오프가 존재하며, 신속성을 위해 퍼센타일 기반 정책을 선택할 경우 매우 늦게 도착하는 일부 데이터가 유실되거나 파티션 완료 마킹 이후에 도착하여 얼럿을 발생시킬 수 있습니다.

03

Key Concepts

Concept · 01

t-digest

대량의 데이터 분포를 고정된 작은 크기의 메모리 공간 내에서 고정밀도로 근사하는 컴팩트하고 병합 가능한 스케치 알고리즘입니다.

  • 플링크의 병렬 라이터 서브태스크들이 수집한 이벤트 시간 분포를 소량의 메타데이터 크기로 압축하는 데 사용되었습니다.
  • 체크포인트마다 병렬 상태를 독립적으로 계산한 뒤 커미터에서 순서 독립적으로 병합하는 데 활용됩니다.
Concept · 02

Iceberg Snapshot Summary

아파치 아이스버그의 메타데이터 레이어로, 매 커밋마다 쓰여진 파일 수 등 쓰기 작업에 대한 요약 정보를 자체 보관하는 영역입니다.

  • 별도의 외부 저장소를 두지 않고도, 각 체크포인트 커밋 시 생성되는 스냅샷 요약 내에 수집된 t-digest 통계 데이터를 내재화하여 관리합니다.
Concept · 03

Non-regressing Watermark Algorithm

시간의 경과에 따라 절대 뒤로 후퇴하지 않고 오직 앞으로만 가도록 보장된 논리적 시간의 마일스톤을 추적하는 알고리즘입니다.

  • 지연 데이터 유입으로 인해 워터마크가 뒤로 밀리는 현상을 원천 방지하여 일관성 있는 완료 상태를 다운스트림에 제공합니다.
  • 파티션 최종 마킹 이후 수집된 늦은 데이터가 발견되면 데이터 컨슈머에게 얼럿을 발송하는 기준으로 동작합니다.
Continue reading · same source

PinterestMore from Pinterest

View all posts from Pinterest
  • 투타워를 넘어: 3타워 인게이지먼트 공동 학습 모델 출시 (2부)

    Recommendation SystemsMulti-Task LearningModel Serving
    1주 전
  • NVIDIA Dynamo 기반 Pinterest의 VLM 서빙 스택 구축기

    NVIDIA DynamovLLMBlackwell GPU
    2주 전
  • AI 팀으로의 전환

    Generative AIAI AgentsEngineering Management
    3주 전
  • 핀터레스트 홈 피드를 위한 조건부 학습 검색(CLR) 확장하기

    Recommendation SystemsLearned RetrievalTransformer
    1개월 전
  • 피너의 성장: 핀터레스트의 주간 활성 사용자 증가를 이끄는 유스케이스 표현 개선 사례

    Recommendation SystemsClusteringEmbeddings
    2개월 전

Related reads#ApacheFlink

Explore #ApacheFlink
Netflix

두 개의 플링크 오토스케일러 이야기

#ApacheFlink1개월 전
토스

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

#ApacheFlink5개월 전
라인·Apache Iceberg

Hive에서 Iceberg로: 데이터 반영 속도 12배 향상의 비밀

#ApacheFlink5개월 전

Source

Pinterest
Pinterest
Engineering Blog

Published · September 25, 2026

Topics

Apache FlinkApache IcebergChange Data CaptureData PipelinesStream Processing