피드로 돌아가기
400 ad accounts 3 subrequests = silent data loss in Cloudflare Workers (and how I fixed it)
Dev.toDev.to
Infrastructure

Cloudflare Workers Subrequest 제한 해결을 통한 데이터 유실 방지 및 확장성 확보

400 ad accounts 3 subrequests = silent data loss in Cloudflare Workers (and how I fixed it)

강해수2026년 6월 22일2intermediate

Context

약 400개 광고 계정에 대한 성능 체크를 수행하는 Fan-out 구조에서 요청당 1,000개의 Subrequest 제한 초과로 인한 데이터 유실 발생. KV Cache 쓰기 작업 추가에 따라 호출 수가 1,200개로 증가하며 예외 처리 없이 일부 데이터가 누락되는 Silent Data Loss 현상 노출.

Technical Solution

  • Fan-out 트리거와 실제 작업 로직을 분리하는 비동기 아키텍처로 전환
  • Entry Worker에서 Queue.sendBatch()를 사용하여 계정별 메시지를 즉시 발행함으로써 Upstream Fetch 및 KV Write 부하 제거
  • Queue Consumer가 max_batch_size = 10 설정을 통해 메시지를 소량으로 분할 처리하는 구조 설계
  • 개별 Consumer Invocation당 Subrequest 수를 30개(10개 메시지 × 3회 호출)로 낮추어 1,000개 제한 수치 무력화
  • Fire-and-forget 방식의 Queue 특성을 활용해 단일 Invocation의 리소스 제약 사항을 원천적으로 회피

Cloudflare Workers 사용 시 fetch, KV, R2, D1 등 모든 외부 호출이 Subrequest 제한에 포함됨을 인지하고, 대량 처리 작업 시 Queue 기반의 비동기 분할 처리 패턴 검토 필요

원문 읽기