
비용은 줄이고 속도는 2배로, 파편화된 파이프라인을 하나로 묶는 핀터레스트의 전략
핀터레스트가 추천 성능의 핵심인 사용자 시퀀스 데이터를 최적화하기 위해 데이터 플랫폼을 완전히 재설계한 과정을 담았습니다. 데이터의 신선도, 일관성, 그리고 효율성이라는 세 마리 토끼를 잡기 위해 도입한 'Configuration-as-Code'와 람다 아키텍처의 실무 적용 사례를 깊이 있게 다룹니다. 대규모 데이터 엔지니어링과 ML 인프라를 고민하는 엔지니어에게 명확한 가이드를 제공합니다.
대규모 트래픽을 처리하며 실시간성과 학습 정합성이 모두 중요한 추천/랭킹 시스템 엔지니어에게 강력히 추천합니다. 특히 파이프라인 파편화로 인해 생산성이 정체된 데이터 플랫폼 팀에게 '설정 기반 인프라'는 필수적인 전환점입니다.
사용자 행동 시퀀스 데이터는 추천 및 랭킹 시스템의 핵심이지만, 대규모 환경에서는 비용이 많이 들고 유지보수가 매우 어렵습니다. 특히 실시간 서빙과 오프라인 학습 데이터 간의 일관성을 유지하는 데 한계가 있었으며, 새로운 시그널을 온보딩할 때마다 복잡한 개별 파이프라인을 구축해야 하는 생산성 저하 문제가 존재했습니다.
'단일 정의, 다중 런타임' 원칙을 적용하여 Python 기반의 Configuration-as-Code로 시퀀스 로직을 통합 관리하도록 재설계했습니다. 또한 공유 실행 엔진과 플러그형 실행기(Executor), 실시간과 배치를 병행하는 람다 아키텍처, 그리고 I/O 효율성을 극대화하는 컬럼형 시간 파티셔닝 저장소를 도입했습니다.
인프라 운영 비용이 유의미하게 절감되었고, 신규 시그널 추가를 위한 온보딩 시간이 획기적으로 단축되어 개발 생산성이 향상되었습니다. 기술적 개선은 실제 서비스의 사용자 참여 지표(Engagement Metrics) 상승으로 이어졌으며 데이터 신선도와 정합성을 동시에 확보했습니다.
Trade-off
시스템의 실시간 특성상 기존 레거시 시스템과의 100% 데이터 일치(Match)는 불가능했기 때문에, 약 90% 이상의 근사치를 허용하는 정책을 수립해야 했습니다. 또한 전환 과정에서 시스템 안정성을 보장하기 위해 섀도우(Shadow) 파이프라인을 병렬로 운영하며 추가적인 컴퓨팅 리소스를 소요했습니다.
사용자가 서비스 내에서 수행한 최근 행동들의 시간 순서 목록에 임베딩 등 강화된 신호를 결합한 데이터 구조입니다.
데이터 필터링, 강화, 조합 로직을 코드로 정의하고 관리하여 여러 런타임에서 동일하게 실행되도록 하는 방식입니다.
실시간 데이터 처리를 위한 스피드 레이어와 대규모 과거 데이터 처리를 위한 배치 레이어를 통합한 아키텍처입니다.




