깃허브, 자체 검색엔진 ‘블랙버드’ 베타버전 공개

깃허브 저장소 155억 개 문서도 36시간 만에 인덱싱 완료

컴퓨팅입력 :2023/02/09 10:18

깃허브가 자체 검색 엔진 ‘블랙버드’를 개발했다. 이 검색 엔진은 빠르게 성장하는 소스코드 저장소에 맞춰 검색속도를 높이고 호스팅 비용을 낮추는 데 초점을 맞췄다. 

최근 더레지스터 등 외신에 따르면 깃허브 티모시 클렘 엔지니어는 소스코드 검색엔진 ‘블랙버드’를 깃허브 블로그를 통해 공개했다.

블랙버드는 깃허브에서 소스코드를 검색하기 위해 러스트로 개발된 자체 검색 엔진이다. 현재 베타버전을 운영하고 있으며, 전체 저장소 규모의 4분의 1을 지원한다. 약 4천500만 개 리포지토리로 115TB의 소스코드와 155억 개 문서 규모다.

깃허브 블랙버드 검색 결과(이미지=깃허브)

티모시 클렘 엔지니어는 깃허브 저장소의 급격한 성장으로 인해 블랙버드를 개발하게 됐다고 밝혔다.

유닉스 계열 시스템 공통 검색 명령어인 그렙(grep) 등 기존 검색 기능으로는 끊임없이 데이터가 추가되며 규모가 성장하는 깃허브를 감당하기에 한계가 있었다는 설명이다.

엘라스틱서치 역시 800만 리포지토리를 인덱싱 작업하는데 수개월이 걸릴 정도로 대응이 느려 도입이 무산됐다. 현재 깃허브 리포지토리 규모는 2억 개를 넘어섰으며 꾸준히 증가세다.

블랙버드는 합리적인 시간 내에 인덱스를 구축하기 위해 새로운 기능을 추가했다. 저장소 내 많은 비중을 차지하는 중복 데이터로 인한 혼선을 막고 데이터 쉐이빙이란 중복 제거 기술을 적용해 115TB의 데이터를 25TB 수준으로 요약했다. 또한 코드별로 유사성에 따라 사전 분류작업을 친 후 구역단위로 나눠 인덱스 과정에서 요구하는 메모리를 최적화했다.

더불어 끊임없이 소스코드가 추가되고 변하는 과정에서도 쿼리 일관성을 유지할 수 있도록 검색 결과에 대해선 개인화 서비스 등을 적용했다.

검색 속도 향상을 위해 하드웨어 인프라도 확충했다. 64개 코어, 32개 머신 클러스터를 이용해 병렬작업을 수행을 지원한다.

깃허브에 따르면 블랙버드는 64개 코어에서 초당 640 쿼리를 처리할 수 있다. 그렙의 경우 초당 0.01 쿼리를 처리한다. 문서 인덱싱 속도는 초당 약 12만 개로 깃허브의 155억 개 문서를 처리하는 데 약 36시간이 소요된다.

관련기사

이 밖에도 일반 텍스트와 다른 소스코드의 특성에 맞춰 프로그래밍 언어별 색인 등의 전용 검색 기능도 지원한다.

티모시 클렘 엔지니어는 “깃허브는 그동안 기존 검색엔진을 활용하려 했지만 높은 호스스 비용이나 낮은 성능, 사용자 경험 등의 문제로 인해 블랙버드를 직접 개발하게 됐다”며 “블랙버드는 개발자의 위한 것으로 베타버전에 참가해 새로운 검색환경을 체험하고 의견을 남겨 주길 바란다”고 전했다.