D1-less Distributed Pipeline Design
Cloudflare R2와 Workers를 활용한 D1-less 고성능 분산 파이프라인 설계 문서입니다. 데이터베이스 없이도 수백만 건의 데이터를 안정적으로 처리하고, 중단 지점부터 완벽히 재개할 수 있는 Stateless Checkpointing 기술을 핵심으로 합니다.
1. 아키텍처 개요
섹션 제목: “1. 아키텍처 개요”단일 소스 파일(raw.json) 내의 대량 도메인 정보를 수천 개의 병렬 Worker로 분산 처리하는 Fan-out 아키텍처를 따릅니다.
핵심 컴포넌트
섹션 제목: “핵심 컴포넌트”- Orchestrator (Producer): R2 파티션을 스캔하고 처리 대상 파일을 큐에 발송.
- Cloudflare Queues: 작업 메시지의 신뢰성 있는 전달 및 부하 분산.
- Domain Worker (Consumer): 개별 도메인 분석(robots, sitemap 수집) 및 결과 저장.
- R2 Storage: 원본 데이터, 결과 JSON, 작업 상태(Success Tag) 저장소.
2. Stateless Checkpointing: R2 Success 태그
섹션 제목: “2. Stateless Checkpointing: R2 Success 태그”D1 없이 작업 연속성을 보장하기 위해 R2를 상태 저장소로 활용합니다.
동작 원리
섹션 제목: “동작 원리”- Success Flag: 특정 청크(
raw_NNNN.json)의 모든 처리가 완료되면 동일 경로에raw_NNNN.json.success파일을 생성합니다. - Just-in-Time Verification: Orchestrator는 사전 체크 없이 모든 경로를 큐에 던지고, Consumer Worker가 실행 직전에 성공 여부를 확인합니다.
- Idempotency (멱등성): 동일 메시지가 중복 전달되어도
.success파일이 있으면 로직을 건너뛰어 중복 연산을 방지합니다. - Resiliency (복구력): 시스템 중단 후 재시작 시, 완료된 작업은 자동 스킵되고 미완료 작업만 실행됩니다.
3. Just-in-Time Check 상세 설계
섹션 제목: “3. Just-in-Time Check 상세 설계”실행 흐름
섹션 제목: “실행 흐름”- Orchestrator:
wrangler r2 object list로raw_NNNN.json목록 확보 후 즉시 Queue로 발송. - Consumer Worker:
R2.head()로.success파일 존재 여부를 가장 먼저 확인.- 파일 존재 시: 즉시 Early Exit (성공 처리).
- 파일 미존재 시: 도메인 분석(robots.txt, sitemap.xml 추출) 수행.
- Completion: 작업 성공 시 최종 결과물과 함께
.success파일을 업로드하여 발자국을 남깁니다.
4. 데이터 배치 및 파티셔닝 (Hive-style)
섹션 제목: “4. 데이터 배치 및 파티셔닝 (Hive-style)”- Source:
datasets/country={cc}/category={cat}/date=YYYY-MM-DD/raw_NNNN.json - Result:
processing/country={cc}/category={cat}/date=YYYY-MM-DD/(domain_metadata.json, robots.txt, sitemap.xml 등) - Status:
datasets/.../raw_NNNN.json.success(빈 파일)