작업 완료 · 2021
멀티 언어 라이브러리 크롤러 구축·Java→Python 전환
생태계별 신규 크롤러를 추가하고 기존 크롤러를 Python으로 옮겨 유지보수 방식을 통일했습니다.
기간2021 (입사 첫 해)
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어
PythonGoWeb CrawlingGit
작업 요약
8개 생태계 수집 · npm 버전 4,000만 건+
지원 언어를 늘리며 크롤러 구현을 통일했습니다
지원 언어가 늘면서 크롤러마다 구현과 실행 방식이 달라져 유지보수가 어려워졌습니다. 신규 언어 크롤러를 추가하면서 기존 구현도 함께 정리했습니다.
기존 Java 구현은 팀의 주력 언어인 Python으로 옮겼습니다. 이 과정에서 수집·라이선스·버전 처리 로직도 함께 정리했습니다.
배경
- 초기엔 소수 언어만 지원 → 더 넓은 개발자 생태계를 포괄하려면 지원 언어 확장이 필요
- 기존 Java 기반 크롤러는 유지보수·신규 언어 확장이 어려워, 데이터팀 주력 언어인 Python으로 스택 통일 필요
한 일
신규 언어 크롤러 개발 — 각 언어 패키지 레지스트리 특성을 분석해 맞춤 크롤러 설계. 특히 Go는 웹 크롤링 + Git 명령어 기반 수집을 결합한 하이브리드로 수집률을 높임.
Go (pkg.go.dev)Swift (CocoaPods).NET (NuGet)
기존 크롤러 재구현 — Java로 작성된 아래 크롤러를 Python으로 재구현하며 레지스트리 API 변경 반영·로직 개선.
JavaScript (NPM)Python (PyPI)PHP (Packagist)Ruby (RubyGems)
아키텍처 (수집 파이프라인)
결과
8개 언어 수집지원 언어의 라이브러리 정보를 수집하도록 크롤러를 추가
스택 통일크롤러를 Python으로 통일해 같은 언어로 수정·유지보수
후속 수집 파이프라인이후 수년간 수집 파이프라인(크롤러·동기화 모듈·오케스트레이션)으로 확장
역할
입사 첫 해 데이터 엔지니어로서 신규 언어 크롤러 설계·개발과 기존 크롤러의 Python 재구현을 단독으로 수행했습니다. 각 패키지 레지스트리의 차이를 흡수하는 수집 로직을 직접 설계했습니다.
이 Go 크롤러는 이후에도 꾸준히 개선됐습니다(라이브러리/모듈 수집 파이프라인).
🕷 라이브러리 크롤러 시리즈 ① — ② 인기도 기반 차등 수집 · ③ 누락 점검·Python 전환