피드로 돌아가기
Building the future for benefits tracking
Dev.toDev.to
Backend

Stagehand와 Token Bucket을 통한 가변적 포털 스크래핑 자동화 구현

Building the future for benefits tracking

Dylen Belanger2026년 6월 23일8intermediate

Context

공개 API가 없는 보험사 포털의 빈번한 DOM 구조 변경으로 인한 기존 Selector 기반 스크래퍼의 잦은 장애 발생. 서버리스 환경의 Timeout 제약과 MFA 포함 장시간 실행되는 스크래핑 프로세스 처리의 한계 존재.

Technical Solution

  • LLM 기반 Stagehand 도입을 통한 자연어 기반 요소 제어로 DOM 변경에 따른 유지보수 비용 절감
  • Vercel의 waitUntil 함수를 활용하여 HTTP 202 Accepted 응답 후 백그라운드에서 장시간 스크래핑을 수행하는 비동기 구조 설계
  • Bottleneck 라이브러리의 Token Bucket 알고리즘을 적용하여 Browserbase의 동시 세션 및 분당 요청 제한(25회) 준수
  • Scrape와 Notification 단계의 상태 체크를 분리하여 개별 프로세스의 실패가 전체 워크플로우를 차단하지 않도록 설계
  • Hourly Cron Job과 Loop Guard를 조합하여 30분 이상 정체된 Task의 자동 재시도 및 무한 루프 방지 로직 구현
  • 데이터 보안을 위해 Credentials의 At-rest 암호화 및 실행 시점에만 메모리 내 복호화 수행

- 제어 불가능한 외부 UI 스크래핑 시 Selector 대신 LLM 기반의 시맨틱 매칭 검토 - 서버리스 환경의 Timeout 극복을 위해 응답 즉시 반환 후 백그라운드 처리를 수행하는 비동기 패턴 적용 - 외부 API Rate Limit 준수를 위해 Token Bucket 기반의 요청 스케줄러 도입 - 분산 작업의 안정성 확보를 위해 Idempotency 보장 및 단계별 상태 추적 테이블 설계

원문 읽기