피드로 돌아가기
Dev.toBackend
원문 읽기
주별 스크래퍼 5개를 단일 API로 통합하여 유지보수 비용 제거
I Replaced 5 State Website Scrapers with One API Call
AI 요약
Context
주별로 서로 다른 웹사이트 구조와 검색 폼을 가진 라이선스 검증 시스템. 개별 사이트의 HTML 마크업 변경 시마다 스크래퍼를 수정해야 하는 높은 유지보수 부담. 각 주마다 상이한 출력 형식으로 인한 데이터 정규화의 어려움.
Technical Solution
- 다양한 주 정부 웹사이트의 응답 형식을 단일 JSON Schema로 통합하는 Normalization Layer 설계
- REST API 기반의 인터페이스를 구축하여 클라이언트의 주별 비즈니스 로직 제거
- License Number와 Name 등 다양한 검색 파라미터를 지원하는 통합 쿼리 구조 채택
- Node.js의 Promise.all을 활용한 다수 라이선스의 병렬 검증 처리 방식 적용
- 신규 주 추가 시 통합 레이어만 확장하여 기존 통합 코드 변경 없이 기능 확장 가능한 구조
Impact
- 단일 라이선스 조회 시간: 5-10분(수동) → 3-5초(API)
- 50개 라이선스 검증 시간: 4시간 이상(수동) → 2분(배치 처리)
- API 응답 처리 속도: 약 4,523ms(ProcessingMs 기준)
Key Takeaway
외부 시스템의 잦은 변경이 예상되는 환경에서는 직접적인 의존성 대신 정규화 계층(Normalization Layer)을 두어 변경 영향도를 최소화하는 추상화 전략이 필수적임.
실천 포인트
외부 사이트 스크래핑 기반 서비스 구축 시, 도메인 로직과 파싱 로직을 분리하는 어댑터 패턴을 도입하여 유지보수 효율을 높일 것