#Backend

핀터레스트의 차세대 DB 인제스션 프레임워크 내 자동화된 스키마 진화

핀터레스트의 차세대 DB 인제스션 프레임워크 내 자동화된 스키마 진화
01

Summary

핀터레스트가 스키마 변경 지옥에서 벗어난 방법: 자동화된 스키마 진화 프레임워크

Flink와 Iceberg를 활용해 데이터 중단 없이 스키마를 동기화하는 3단계 전략

핀터레스트 엔지니어링 팀이 대규모 CDC 파이프라인에서 발생하는 스키마 변경 문제를 해결하기 위한 기술적 여정을 공유합니다. 단순히 DDL을 업데이트하는 것을 넘어 코드 생성, 메타데이터 버전 관리, 데이터 수렴을 자동화하여 파이프라인의 가용성을 극대화한 사례입니다.

  • 01Kafka-Flink-Spark-Iceberg로 이어지는 전 과정의 스키마 자동 전파
  • 02가용성을 해치지 않는 3단계 수렴(Divergence - Code - Data) 모델 채택
  • 03안정성을 고려한 하위 호환성 위주의 가산(Additive) 스키마 변경 지원
  • 04Pull/Push 방식을 결합한 스키마 변경 감지 및 자동 PR 생성 워크플로우
  • 05복잡한 DDL 추론을 위한 MySQL binlog 기반 감사(Audit) 트레일 활용

RECOMMENDATION

대규모 CDC 파이프라인에서 빈번한 스키마 변경으로 고통받는 데이터 엔지니어와 백엔드 개발자에게 강력히 추천합니다.

The Problem

업스트림 스키마의 빈번한 변경이 인제스션, 변환, 저장소 등 파이프라인 전반의 계약을 깨뜨려 데이터 정합성을 해치고 수동 대응 부담을 가중시키는 문제가 있었습니다.

The Solution

Kafka, Flink, Spark, Iceberg를 아우르는 SLA 기반의 자동화된 스키마 전파 프레임워크를 구축하고, 3단계 수렴 모델(Phase-based Convergence)을 도입했습니다.

The Result

스키마 변경 시 발생하던 파이프라인 중단 위험을 최소화하고, PR 기반의 감사와 자동화된 롤아웃을 통해 온라인과 오프라인 데이터 간의 정합성을 안정적으로 유지하게 되었습니다.

Trade-off

안정성을 위해 추가적인(Additive) 변경 위주로 자동화를 제한했으며, 복잡한 타입 변경이나 삭제 등은 수동 개입이나 전체 재처리(Backfill)가 필요한 한계가 있습니다.

03

Key Concepts

Concept · 01

SLA-Based Convergence

스키마 변경을 원자적 작업이 아닌 단계적 프로세스로 취급하여, 일정 시간 내에 온라인과 오프라인 스키마를 일치시키는 모델입니다.

  • Iceberg 스키마를 먼저 업데이트하고 이후에 Flink/Spark 코드를 순차적으로 배포하여 중단을 방지합니다.
Concept · 02

Change Data Capture (CDC)

데이터베이스의 변경 사항을 실시간으로 감지하여 외부 시스템으로 전달하는 기술입니다.

  • 업스트림 DB의 DDL 변경을 감지하여 전체 파이프라인의 스키마 진화를 트리거하는 원동력이 됩니다.
Concept · 03

Apache Iceberg

대규모 분석 데이터셋을 위한 오픈 테이블 포맷으로, 원자적인 스키마 진화 기능을 제공합니다.

  • CDC 테이블과 베이스 테이블의 스키마 관리를 담당하며, 필드 ID 기반의 추적을 통해 안전한 변경을 지원합니다.