Copied


GitHub가 별 관찰 스크래핑을 개인정보 보호 역사 API로 대체합니다

Ted Hisokawa   Oct 14, 2026 21:31 0 Min Read


GitHub는 별 관찰 기반 우회 방식을 개별 신원 노출 없이 별 추세를 집계하는 전용 히스토리 엔드포인트로 대체했다고 밝혔습니다. 이 변경이 중요한 이유는 유지보수자들이 스타 히스토리를 사용해 릴리스, 런칭 또는 이벤트가 프로젝트의 궤적을 바꿨는지 판단하는 반면, GitHub는 이전 방식이 데이터 수집에 남용되고 있고 서비스 비용도 많이 든다고 밝혔기 때문입니다.

GitHub가 바꾼 점

2026년 10월 14일자 엔지니어링 게시물에서 GitHub는 새로운 저장소 별 기록 API가 단일 요청으로 최대 30주분의 일일 별 수를 식별 없이 반환할 수 있다고 밝혔습니다. GitHub는 엔드포인트가 별을 먼저 세고 응답을 나중에 자르는 대신 별을 세기 전에 시간별로 필터링한다고 밝혔습니다. 이는 데이터베이스 작업을 줄여준다고 합니다.

회사는 이전 GET /repos/{owner}/{repo}/stargazers 엔드포인트가 현재 별 관측 목록을 나열하도록 설계되었으며, 과거 이벤트 로그 역할을 하기 위해 설계된 것은 아니라고 밝혔습니다. 사용자가 저장소를 언스타 할 때 별이 제거되기 때문에, 이 모델은 과거 별 표시 및 별표 해제 활동의 완전한 역사를 보존하지 못합니다. GitHub는 도구들이 별 관측 기록 페이지를 읽고 사용자 이름을 버려 타임스탬프만으로 곡선을 재구성했다고 밝혔습니다.

왜 옛 방식이 문제가 되었는가

GitHub는 원래 엔드포인트가 두 문제를 일으켰다고 밝혔습니다. 첫째, 신원이 대량 수집에 사용되어, 악의적인 행위자들이 공개 별 관찰자 목록을 스팸 및 피싱 캠페인을 위해 스크랩하는 결과를 낳았다고 합니다. 둘째, 별이 높은 저장소는 데이터베이스가 수천 개의 항목을 처리해 단일 페이지를 반환하도록 강요할 수 있습니다.

GitHub가 별이 약 251,000 개라고 밝힌 react/react의 경우, 전체 곡선을 재구성하는 데 기존 방식에서는 약 2,511 개의 요청이 필요했습니다. GitHub는 페이지네이션 버그 때문에 모든 요청이 별 값으로 모두 집계되어 페이지 수를 결정했으며, 최대 100 명만 반환될 때도 그렇다고 밝혔습니다. 접근 제한이 시작되기 전 일주일에, GitHub는 거의 37,000 개의 느린 카운트 쿼리가 기록되었으며, 평균 3 초에 달했고, 데이터베이스 보호 장치가 1,000 개 이상을 삭제했다고 밝혔습니다. 접근 제한 후 별 관찰자 요청은 약 60% 감소했고, 총 시간 감소는 약 80%줄었다고 밝혔습니다.

새로운 엔드포인트의 작동 방식

GitHub는 여러 설계를 평가한 후 시간 범위 방식을 채택했다고 밝혔습니다. 한 옵션은 신원 없이 별 관찰자 타임스탬프를 반환하는 것이었지만, GitHub는 여전히 API 사용자가 많은 개별 레코드를 페이지링해야 한다고 말했습니다. 또 다른 방법은 먼저 별을 집계하고 나중에 페이지 지정하는 것이었지만, GitHub는 표준 SQL 계획이 LIMIT와 OFFSET을 적용하기 전에 모든 일치하는 행을 스캔하고 그룹화하는 것이라고 말했습니다.

출시된 디자인은 대신 페이지와 per_page를 인덱스된 created_at 범위에 매핑하고, 별을 먼저 그 범위로 필터링한 후 결과를 일일 집계로 묶습니다. GitHub는 요청한 최대 30주간의 기록을 커버할 수 있으며, 페이지가 증가할수록 저장소의 역사를 역으로 이동할 수 있다고 밝혔습니다. react/react 예시에서 GitHub는 새 접근법이 약 2,511개가 아니라 약 24개의 요청이 필요하다고 말하며, 전체 역사에서 각 별을 한 번 정도 검토한다고 했습니다.

한계와 남은 상충 요소

GitHub는 새로운 엔드포인트가 더 안전하고 예측 가능하지만, 제약 조건이 없는 것은 아니라고 말했습니다. 캘린더 경계는 이력 슬라이싱 방식에 영향을 미치고, 제거된 별은 모델에 보존되지 않으며, 비정상적으로 밀도가 높은 주도 여전히 느리거나 비용이 많이 드는 쿼리를 생성할 수 있습니다. GitHub는 또한 일반 요청 경로가 더 이상 모든 현재 별을 조회하지 않더라도 밀도가 높은 주가 여전히 확장 제한으로 남아 있다고 말했습니다.

이 회사는, 별-역사 문제에 대한 검토를 통해 GitHub.com 에 대한 별도의 수정도 이루어졌다고 밝혔는데, 저장소 별 관찰자 페이지가 별을 필요에 따라 세는 대신 캐시된 별 수를 사용하도록 업데이트되었다. GitHub는 이 변경으로 해당 페이지에서 매주 수백 건의 느린 쿼리가 제거되었다고 밝혔다.


Read More