재수집 때마다 1,000만~1억 건의 외부 API 요청이 필요하던 원테이크 수집을, RAW 보존·재파싱 구조의 오브젝트 스토리지 기반 파이프라인으로 재설계
기간2026 (3월~ 진행)
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어 · 파이프라인 재정립 주도
ETLELTData PipelineObject StorageSeaweedFSDB / Infra
0RAW 재파싱을 택한 이유
이 파이프라인은 재수집이 필요해질 때마다 1,000만~1억 건의 외부 API 요청과 실패 위험이 그대로 다시 왔습니다. 그 규모를 반복해야 하는 구조라면 파이프라인부터 바꾸는 편이 맞았습니다.
RAW를 먼저 보존하자 파싱 버그를 고친 뒤 외부 API를 다시 호출하지 않고 변환만 재실행할 수 있었습니다. 저장 공간은 더 쓰지만 재수집 비용과 rate limit 위험을 줄이는 쪽을 택했습니다.
1배경
제품 데이터는 수집(Gathering) → 정제(Curation) → 배포(Distribution)로 이어지는 파이프라인으로 운영됩니다. 단계별로 처리 방식과 저장 위치가 제각각이라, 흐름을 한눈에 파악하기 어렵고 데이터 규모가 늘수록 확장에 부담이 있었습니다.
RAW를 보존하지 않는 원테이크 수집(API 호출 → 즉시 파싱 → DB 저장) 구조라, 재수집·추가 수집 때마다 매번 1,000만~1억 건의 외부 API 요청이 필요했고 rate limit에 걸려 수집이 장기화
파싱 버그·이상 데이터 발견 시 원본(RAW)이 이미 사라져 원인 추적·재현이 불가능했고, 유일한 해결책이 전체 재수집
오픈소스 RAW 데이터가 늘어나면서 기존 파일시스템 기반 저장은 용량이 차고 파일 수가 늘수록 백업·조회가 무거워지는 한계
수집부터 배포까지의 흐름이 표준화되어 있지 않아 신규 데이터 소스 편입과 운영 인계가 어려움
2접근
수집과 정제를 분리하고 RAW 원본을 먼저 보존해 외부 재요청 없이 다시 파싱할 수 있게 설계했습니다.
파이프라인 전체를 다시 정의하면서 RAW 데이터 저장을 파일시스템에서 오브젝트 스토리지(SeaweedFS)로 옮기는 마이그레이션 전략과 로드맵을 수립했습니다. 단계별 책임과 데이터 흐름을 정의해 수집 플로우를 표준화했습니다.
RAW 데이터를 오브젝트 스토리지에 원본 보존하고 상태 관리 DB로 수집(Collector)과 정제(Worker)를 분리해, 재처리는 외부 요청 없이 재파싱으로 해결
Cache Hit/Miss 패턴(이미 있으면 즉시 반환)과 version_id 기반 수정 이력 추적으로 데이터 재현 가능성 확보
오픈소스 RAW 데이터 수집용 오브젝트 스토리지 설계
파일시스템 → 오브젝트 스토리지(SeaweedFS) 마이그레이션 전략·로드맵 수립
3결과
외부 요청 제거 — 적용한 소스부터는 재수집 때마다 반복되던 1,000만~1억 건의 API 호출이 재처리 시 0건으로 (RAW 재파싱)
기대 효과(설계 산정) — rate limit에 묶여 수일씩 걸리던 기간 재수집을 내부 재파싱으로 대체하는 것이 목표 (산정 예: 2일 → 5분, 실측 아님)
추적·재현 가능 — version_id 이력 추적과 원본 보존으로, 이상 데이터의 원인 규명·재현이 가능
단계별 책임 분리 — Collector·Worker·배포 단계의 입력과 출력을 구분
4역할
데이터 엔지니어로서 파이프라인 재정의 → 스토리지 설계 → 마이그레이션 전략 수립을 주도했습니다. 오브젝트 스토리지 방안은 세 가지 안을 비교 문서로 만들어 팀장·CTO 리뷰로 확정했고, 수집부터 배포까지 전체 흐름을 표준화하고 파일시스템에서 오브젝트 스토리지로 옮기는 로드맵을 세워 저장 구조를 단계적으로 옮기고 있습니다.