ClickHouse에서 페이로드 검색을 60배 빠르게 만든 방법
Hookdeck는 매일 수억 건의 웹훅을 처리하며, 사용자가 JSON 형태의 반구조화된 페이로드를 빠르게 검색할 수 있도록 하는 것이 핵심 과제였습니다.
기존 ClickHouse 기반 검색은 대용량 데이터에서 30초 이상 지연되거나 타임아웃이 발생했으나, 이를 해결하기 위해 값 기반 해시 버킷 저장소와 가변 시간 창 반복 스캔 기법을 도입하여 평균 검색 지연 시간을 약 400ms로 60배 이상 개선하였습니다.
첫 번째 기법은 페이로드의 키-값 쌍을 값 기준으로 102개의 버킷에 분산 저장해, 쿼리 시 관련 버킷만 조회함으로써 스캔 데이터를 대폭 줄였습니다.
두 번째 기법은 최근 데이터부터 점진적으로 시간 범위를 확장하며 결과를 빠르게 반환하고, 쿼리 속도에 따라 시간 창 크기를 자동 조정하는 적응형 스캔을 적용해 불필요한 대량 스캔과 중복 제거 비용을 최소화하였습니다.
이 두 기술은 반구조화 데이터 검색에서 데이터 읽기량과 스캔 범위 두 가지 병목을 동시에 해결하며, 실시간 디버깅과 사용자 경험을 크게 향상시킨 사례로 평가됩니다.
