피드로 돌아가기
190 Countries, Zero API Calls: Shipping Static Data in a Chrome Extension
Dev.toDev.to
Frontend

네트워크 요청 0회, 30KB 정적 데이터 번들링을 통한 즉각적 비자 정보 조회 구현

190 Countries, Zero API Calls: Shipping Static Data in a Chrome Extension

SHOTA2026년 5월 23일4beginner

Context

비자 요구 사항의 낮은 변경 빈도와 신뢰할 수 있는 무료 API의 부재로 인해 외부 API 호출 시 발생하는 Latency 및 가용성 리스크 존재. 사용자 경험 최적화를 위해 네트워크 의존성을 완전히 제거한 클라이언트 사이드 데이터 처리 구조 필요.

Technical Solution

  • ISO 국가 코드를 Key로 하는 2차원 JSON Matrix 구조를 설계하여 O(1) 시간 복잡도의 데이터 조회 구현
  • WXT 프레임워크의 public 디렉토리를 통한 정적 자산 번들링으로 API 서버 인프라 비용 제거
  • Service Worker 내 메모리 캐싱 전략을 통해 초기 1회 로드 이후 모든 조회 요청을 동기적으로 처리
  • Content Script와 Background Service Worker 간의 메시지 패싱을 통해 Google Flights DOM 내 실시간 정보 주입
  • 데이터 업데이트 주기와 변경 빈도를 분석하여 CWS 버전을 통한 분기별 수동 업데이트 체계 구축

Impact

  • Gzip 압축 기준 전체 데이터셋 크기를 30KB 미만으로 최적화
  • 네트워크 요청 0회를 통한 조회 지연 시간(Latency)의 완전한 제거

Key Takeaway

데이터의 업데이트 빈도가 매우 낮고 데이터셋 규모가 작을 경우, API 서버 구축보다 클라이언트 번들링을 통한 Static Data 처리가 시스템 복잡도 감소와 성능 향상 면에서 압도적으로 유리함.


1. 데이터 변경 주기가 분기 단위 이하인지 확인

2. 전체 데이터셋의 Gzip 압축 크기가 클라이언트 허용 범위를 초과하지 않는지 검토

3. API 인증 및 네트워크 실패 케이스 처리 비용과 정적 파일 업데이트 비용을 비교 분석

4. 런타임 효율을 위해 Key-Value 기반의 매트릭스 구조로 데이터 정규화 적용

원문 읽기