피드로 돌아가기
Dev.toInfrastructure
원문 읽기
분산 환경 Retry Storm 차단으로 비용 $240에서 $0.30으로 절감
How I Stopped Retry Storms from Destroying My Scraping Budget
AI 요약
Context
단일 세션 단위의 maxRetries 설정으로 인해 분산 스크래핑 환경에서 동일 URL에 대한 중복 요청이 계속 재발생하는 구조적 결함 발생. 여러 Run과 Worker 간에 상태가 공유되지 않아 무한 루프 형태의 Retry Storm이 유발되며 컴퓨팅 비용이 급증하는 한계 노출.
Technical Solution
- Request Hash 기반 그룹화: URL과 쿼리 파라미터, 액션을 조합한 해싱을 통해 단순 URL 이상의 세밀한 요청 패턴 식별
- Cross-run 상태 관리: 세션 내 휘발성 카운터 대신 Redis와 같은 Persistent Store를 도입하여 전체 워크스페이스 단위의 요청 횟수 추적
- Upstream Blocking 설계: 스크래퍼 내부 로직이 아닌 큐 단계의 외부 게이트(ProceedGate)에서 요청을 제어하여 불필요한 컴퓨팅 자원 소모를 원천 차단
- 시간 윈도우 기반 Throttling: 60초 이내 동일 패턴 10회 이상 발생 시 Hard-block을 수행하는 임계치 기반 제어 로직 적용
- 토큰 기반 승인 프로세스: 요청 전 proceed_token 발행 여부를 확인하는 Gate Step을 추가하여 실행 권한을 명시적으로 제어
실천 포인트
1. 분산 환경의 Retry 로직 설계 시 세션 단위가 아닌 전역(Global) 상태 저장소 활용 검토
2. 비용 발생 지점 이전 단계(Upstream)에서 요청을 필터링하는 Gatekeeper 패턴 도입 고려
3. 단순 URL 매칭 대신 Action과 Params를 포함한 Hash 기반의 요청 식별 체계 구축
4. 실시간 비용 모니터링 및 이상 패턴 감지 시 즉각적인 Circuit Breaker 작동 기제 마련