오픈소스 라이브러리의 커뮤니티 활성도·유지보수 상태를 수집하고, 인기도 점수에 따라 갱신 주기를 차등화해 한정된 크롤링 자원을 효율적으로 사용
오픈소스 생태계 전체를 같은 주기로 수집하면 결국 중요한 컴포넌트와 거의 쓰이지 않는 컴포넌트가 같은 비용을 먹습니다. 이 작업은 수집 자원이 유한하다는 사실을 인정하고 우선순위를 데이터로 만든 작업입니다.
Stars나 commits 같은 지표는 완벽한 품질 점수가 아니지만 갱신 주기를 조정하는 운영 신호로는 충분히 쓸 수 있습니다. 그래서 점수 자체보다 수집 정책에 연결하는 쪽을 더 신경 썼습니다.
라이브러리/컴포넌트를 선택할 때는 버전 정보뿐 아니라 커뮤니티 활성도·유지보수 상태 같은 질적 정보가 필요합니다. 이런 신호는 소스 저장소에 흩어져 있어 외부 API로 수집·정량화할 필요가 있었습니다.
“모두 똑같이 자주 긁기"가 아니라 인기도 점수로 우선순위를 매겨 갱신 주기를 차등화했습니다. 자원을 가장 가치 있는 컴포넌트에 집중시켰습니다.
점수가 높은 컴포넌트는 짧은 주기로, 낮은 컴포넌트는 긴 주기로 재수집되도록 스케줄러가 큐를 구성합니다.
데이터 엔지니어로서 수집 모듈 개발 → 인기도 점수화 → 차등 수집 전략 수립·적용을 단독으로 수행했습니다. 외부 GraphQL API로 활성도 지표를 모으는 수집기를 만들고 점수 기반으로 갱신 주기를 다르게 가져가는 전략을 설계·적용해 자원 효율과 최신성을 동시에 달성했습니다.
🕷 라이브러리 크롤러 시리즈 ② — ① 멀티 언어 크롤러 구축 · ③ 크롤러 현대화·플랫폼 이관