240M 도메인 이름 자동완성, p99 0ms* 달성
P99 0 ms* autocomplete for 240M domain names
Wirewiki.com을 운영하는 개발자가 2억 4천만 개의 도메인 이름을 대상으로 한 자동완성 기능을 p99 0ms* 지연 시간으로 구현한 방법을 공개한다. 사용자가 키를 누르는 순간 다음 키 입력까지의 시간을 활용해 미리 결과를 가져오는 프리페칭 전략과, 인메모리 트라이(Trie)와 SSD 기반 메모리 매핑 블록 인덱스를 결합한 하이브리드 데이터 구조를 사용한다. 부하 테스트 결과 API는 대부분 2ms 이내에 응답하며, 1.6k req/s에서도 p99 15ms를 유지한다. 저자는 단일 서버로도 충분하지만, 미국 등 원거리 사용자에게는 네트워크 지연이 문제가 될 수 있어 다중 서버 구축 가능성도 언급한다.
p99 0ms는 사용자가 키를 놓기 전에 결과가 준비된다는 뜻입니다.