피드로 돌아가기
Dev.toFrontend
원문 읽기
API 제한 40k 건 돌파를 위한 Sample-and-Anchor 기반 시각화 설계
GitHub's Stargazers API Caps at 40,000. Here's How Star-History Tools Fake the Rest
AI 요약
Context
GitHub Stargazers API의 최대 호출 가능 페이지가 400페이지(약 40,000건)로 제한된 기술적 제약 존재. 20만 건 이상의 Star를 보유한 대형 저장소의 성장 곡선을 그리기 위해 전체 데이터를 fetch 하는 방식은 불가능한 구조.
Technical Solution
application/vnd.github.star+jsonAccept Header를 활용하여 불필요한 유저 정보를 제외하고starred_at타임스탬프만 추출하는 데이터 최적화- Link Header의
rel="last"값을 파싱하여 추가 요청 없이 전체 데이터 규모를 즉시 파악하는 효율적 페이지 계산 HARD_PAGE_LIMIT(400) 내에서evenSample로직을 통해 24개의 페이지를 균등하게 추출하여 API 호출 횟수를 최소화하는 Sampling 전략stargazers_countAPI 값과 현재 시간을 우측 끝점에 고정하는 Anchor 기법을 적용하여 샘플링 데이터와 실제 총합 사이의 간극을 메우는 보간법 설계localStorage기반의 24시간 TTL 캐싱 구조와 Schema Versioning(gsh:v1:)을 도입하여 중복 요청 방지 및 데이터 무결성 확보- 서버리스 Browser-only 아키텍처 채택으로 Personal Access Token(PAT)의 클라이언트 측 저장 및 보안성 강화
실천 포인트
1. API Pagination 제한 확인 및 `rel="last"` 헤더를 통한 전체 규모 선파악
2. 대량 데이터 시각화 시 전수 조사 대신 균등 샘플링 및 엔드포인트 앵커링(Anchoring) 검토
3. 외부 API 연동 시 클라이언트 사이드 캐싱 및 버전 관리 스키마 도입