피드로 돌아가기
Building a Fault-Tolerant Migration Pipeline for Wallet Logs
Dev.toDev.to
Backend

300만 건 Wallet Log 마이그레이션을 위한 2-Phase Fault-Tolerant 파이프라인 구축

Building a Fault-Tolerant Migration Pipeline for Wallet Logs

Timilehin Olusegun2026년 5월 4일10intermediate

Context

기존 단일 Job 기반의 Fetch-Transform-Write 구조로 인한 Network IO, CPU, DB Write의 강한 결합 발생. 300만 건 이상의 대규모 데이터 처리 시 Timeout, Memory Exhaustion 및 체크포인트 부재로 인한 복구 불가능한 구조적 한계 직면.

Technical Solution

  • Fetch와 Process 단계를 분리한 Two-Phase 아키텍처 도입을 통한 관심사 분리 및 병목 해소
  • Raw JSON 데이터를 Staging Table에 먼저 저장하여 소스 API 의존성을 제거하고 프로세싱 단계의 독립적 재시도 환경 구축
  • 전체 데이터를 Segment 단위의 Bounded Subset으로 나누어 관리함으로써 메모리 압박 완화 및 단계적 진행 제어
  • Checkpoint Table을 활용한 Cursor, Page, Segment 상태 기록으로 실패 지점부터 즉시 재개 가능한 Recovery 메커니즘 구현
  • Deterministic Transaction Reference 및 Raw-record Fingerprinting을 통한 Idempotency 보장으로 데이터 중복 생성 원천 차단
  • Queue Worker를 통한 병렬 처리 구조 설계로 데이터 변환 및 Upsert 처리 속도 최적화

- 대량 데이터 이동 시 Fetch-Stage-Process-Clean의 단계적 파이프라인 검토 - 재시도 시 데이터 정합성 보장을 위한 Idempotency Key 및 Fingerprint 설계 적용 - 상태 추적을 위한 별도의 Checkpoint Table을 통해 Resume 기능 구현 - 외부 API 의존성을 최소화하기 위해 Raw 데이터를 임시 저장하는 Staging 영역 확보

원문 읽기