← 기술 목록으로

멀티 언어 라이브러리 크롤러 구축 & Java→Python 전환

여러 프로그래밍 언어 생태계의 라이브러리·라이선스 정보를 수집하는 크롤러를 신규 개발·재구현해 데이터 커버리지를 8개 언어로 확장

기간2021 (입사 첫 해)
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어
PythonGoWeb CrawlingGitPackage Registry

0작업자의 메모

언어가 하나 늘 때마다 크롤러를 임시로 붙이면 결국 유지보수가 먼저 무너집니다. 이 작업은 커버리지를 늘리는 동시에, 다음 언어를 붙일 때 덜 흔들리는 구조를 만드는 데 의미가 있었습니다.

Java에서 Python으로 옮긴 부분도 단순한 언어 변경이 아니라 수집·라이선스·버전 처리 로직을 더 다루기 쉬운 형태로 재정리한 작업으로 봐야 합니다.

1배경

2한 일

신규 언어 크롤러 개발 — 각 언어 패키지 레지스트리 특성을 분석해 맞춤 크롤러 설계. 특히 Go는 웹 크롤링 + Git 명령어 기반 수집을 결합한 하이브리드로 수집률을 높임.

Go (pkg.go.dev)Swift (CocoaPods).NET (NuGet)

기존 크롤러 재구현 — Java로 작성된 아래 크롤러를 Python으로 재구현하며 레지스트리 API 변경 반영·로직 개선.

JavaScript (NPM)Python (PyPI)PHP (Packagist)Ruby (RubyGems)

A아키텍처 (수집 파이프라인)

여러 패키지 레지스트리에서 Web과 Git 방식으로 수집한 데이터를 표준화해 라이브러리 버전과 라이선스 저장소에 적재하는 파이프라인
레지스트리별 수집 차이는 collector가 흡수하고 이후 표준화·저장 경계는 공통으로 유지했습니다.

3결과

커버리지 8개 언어 — 라이브러리 정보 수집 체계를 완성해 데이터 커버리지를 확장
스택 통일 — 크롤러를 Python으로 일원화해 개발 생산성·유지보수 효율 향상
확장 기반 — 이후 수년간 이어질 수집 파이프라인(크롤러·동기화 모듈·오케스트레이션)의 토대

4역할

입사 첫 해 데이터 엔지니어로서 신규 언어 크롤러 설계·개발과 기존 크롤러의 Python 재구현을 단독으로 수행했습니다. 각 패키지 레지스트리의 차이를 흡수하는 수집 로직을 직접 설계했습니다.

이 Go 크롤러 라인은 이후에도 꾸준히 개선됐습니다(라이브러리/모듈 수집 파이프라인).

🕷 라이브러리 크롤러 시리즈 ①② 인기도 기반 차등 수집 · ③ 누락 점검·Python 전환