작업 완료 · 2026

RAW 보존·재파싱 구조로 바꾼 ETL 수집 플로우

외부 데이터를 먼저 보존해 파서 수정 후에도 API를 다시 호출하지 않고 재처리하도록 바꿨습니다.

기간2026 (3월~ 진행)
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어 · 파이프라인 재정립 주도
ETLSeaweedFS스토리지

작업 요약

적용 소스 재처리 시 외부 API 호출 0건

RAW 재파싱을 택한 이유

이 파이프라인은 재수집이 필요해질 때마다 1,000만~1억 건의 외부 API 요청과 실패 위험이 그대로 다시 왔습니다. 파싱 오류를 고칠 때도 같은 요청을 반복해야 해 수집과 파싱을 분리했습니다.

RAW를 먼저 보존하자 파싱 버그를 고친 뒤 외부 API를 다시 호출하지 않고 변환만 재실행할 수 있었습니다. 저장 공간은 더 쓰지만 재수집 비용과 rate limit 위험을 줄이는 쪽을 택했습니다.

배경

제품 데이터는 수집(Gathering) → 정제(Curation) → 배포(Distribution)로 이어지는 파이프라인으로 운영됩니다. 단계별로 처리 방식과 저장 위치가 제각각이라, 흐름을 한눈에 파악하기 어렵고 데이터 규모가 늘수록 확장에 부담이 있었습니다.

접근

전체 구조를 먼저 보고, 크게 열어 세부 내용을 확인하세요.크게 보기ExcalidrawMermaid
Collector가 수집한 원본은 SeaweedFS에 보존하고 상태 관리 DB로 수집과 정제를 구분합니다. Worker는 보존된 RAW를 읽어 재파싱하므로 적용 소스는 외부 API를 다시 호출하지 않아도 됩니다.
Collector가 수집한 원본은 SeaweedFS에 보존하고 상태 관리 DB로 수집과 정제를 구분합니다. Worker는 보존된 RAW를 읽어 재파싱하므로 적용 소스는 외부 API를 다시 호출하지 않아도 됩니다.

파이프라인 전체를 다시 정의하면서 RAW 데이터 저장을 파일시스템에서 오브젝트 스토리지(SeaweedFS)로 옮기는 이전 방식과 순서를 정했습니다. 단계별 책임과 데이터 흐름을 정의해 수집 플로우를 표준화했습니다.

결과

외부 요청 제거적용한 소스부터는 재수집 때마다 반복되던 1,000만~1억 건의 API 호출이 재처리 시 0건으로 (RAW 재파싱)
기대 효과(설계 산정)rate limit에 묶여 수일씩 걸리던 기간 재수집을 내부 재파싱으로 대체하는 것이 목표 (산정 예: 2일 → 5분, 실측 아님)
원본과 수정 이력 보존version_id 이력 추적과 원본 보존으로, 이상 데이터의 원인 규명·재현이 가능
단계별 책임 분리Collector·Worker·배포 단계의 입력과 출력을 구분

역할

데이터 엔지니어로서 파이프라인 재정의 → 스토리지 설계 → 마이그레이션 전략 수립을 주도했습니다. 오브젝트 스토리지 방안은 세 가지 안을 비교 문서로 만들어 팀장·CTO 리뷰로 확정했고, 수집부터 배포까지 전체 흐름을 표준화하고 파일시스템에서 오브젝트 스토리지로 옮기는 로드맵을 세워 저장 구조를 단계적으로 옮기고 있습니다.

현재도 저장소 이전을 진행하고 있습니다.

📦 데이터 플랫폼 재구축 시리즈 ① — 이 전략의 핵심 구현은 별도 항목으로 정리했습니다: ② 오픈소스 RAW 데이터 오브젝트 스토리지 구축 →