Radar, Elasticsearch/MongoDB에서 Rust 기반 HorizonDB로 전환: 고성능 지오로케이션 인프라 구축기

🤖 AI 추천

대규모 위치 기반 API 서비스의 성능 및 확장성 문제 해결을 고려하는 백엔드 개발자, 데이터 엔지니어, 또는 CTO는 물론, Rust를 활용한 시스템 설계 및 최적화에 관심 있는 개발자에게 유용한 인사이트를 제공합니다. 특히 기존 Elasticsearch 및 MongoDB 운영 경험이 있거나, 고성능 데이터베이스 구축을 계획하는 팀에게 도움이 될 것입니다.

🔖 주요 키워드

Radar, Elasticsearch/MongoDB에서 Rust 기반 HorizonDB로 전환: 고성능 지오로케이션 인프라 구축기

핵심 기술

Radar는 수억 대 기기에서 하루 10억 건 이상의 API 콜을 처리하는 대규모 위치 기반 API 운영 시 발생하는 성능 및 확장성 문제를 해결하기 위해, 기존 Elasticsearch와 MongoDB 스택을 Rust로 개발된 자체 지리정보 데이터베이스인 HorizonDB로 전환했습니다. HorizonDB는 RocksDB, S2, Tantivy 등 다양한 오픈소스 라이브러리를 통합하여 고성능, 비용 효율성, 운영 간소화를 달성했습니다.

기술적 세부사항

  • 기존 아키텍처의 문제점: Elasticsearch와 MongoDB의 높은 확장 비용 및 복잡성, 운영 어려움, 대규모 배치 입력의 비효율성, 과도한 리소스 할당, 안정적인 롤백 기능 부재.
  • HorizonDB 구성 요소: Rust 언어 기반, RocksDB (고성능 LSM 트리 인프로세스 저장소), S2 (Google의 공간 인덱싱 라이브러리), Tantivy (효율적 문자열 압축 및 접두어 검색, 인프로세스 역색인 라이브러리), FST (효율적 문자열 압축/접두어 검색), LightGBM (질의 의도 분류, 속성 태깅 등 ML 모델 활용), FastText (단어 벡터 표현 생성, 검색 의미 이해).
  • HorizonDB 개발 목표: 예측 가능한 오토스케일링, 단일 데이터 소스, 쉬운 변경/롤백, 운영 간소화, 로컬 개발 및 테스트 용이성.
  • 성능 지표: 코어당 1,000 QPS 처리, 포워드 지오코딩 50ms, 리버스 지오코딩 <1ms, 범용 하드웨어에서의 선형 확장성.
  • 데이터 처리: Apache Spark로 데이터 전처리 후 Rust에서 S3에 버전 관리 파일로 저장.
  • Rust의 장점: 시스템 프로그래밍 언어, 컴파일 및 메모리 안전성 보장, 가비지 컬렉션 없이 예측 가능한 대용량 인덱스 메모리 관리, 고수준 추상화 지원.
  • 운영 효율성: 단일 멀티스레드 프로세스 기반 동작으로 비용 절감, 성능 개선, 높은 신뢰성 확보. 개발 생산성 향상으로 신규 데이터 및 기능의 신속한 적용 가능.

개발 임팩트

  • 서비스 속도 대폭 향상 및 운영 단순화, 신뢰성 개선.
  • 월 수만 달러의 운영 비용 절감 (Mongo, Elasticsearch 등 대규모 클러스터 및 마이크로서비스 종료).
  • 개발팀이 새로운 기능과 데이터 소스를 하루 만에 적용 및 평가 가능.

커뮤니티 반응

  • 일부 사용자는 자세한 내용 부족 및 오픈소스 계획 부재에 아쉬움을 표하며 Typesense, DuckDB(Spatial 플러그인 포함)를 대안으로 추천.
  • 작성자는 내용 분산을 위해 단계별 블로그 발행 계획을 밝히며, 개인 경험 기반 추천에 감사 표현.
  • 오픈소스 통합의 어려움, DuckDB의 샤딩/클러스터링 부재에 대한 논의.
  • Typesense의 성능과 개발 경험에 대한 긍정적 평가.
  • "오피스 근무 문화"를 첫 번째 혜택으로 강조하는 것에 대한 비판적 시각 및 재택 vs. 통근에 대한 다양한 의견 교환.
  • OSM 데이터 처리를 위한 Photon, LMDB 사용에 대한 제안.
  • 자체 데이터 저장소/쿼리 엔진 설계에 대한 관심 증가와 함께, NIH 신드롬 및 검증된 제품 선호에 대한 의견.
  • Elasticsearch 대체 시도에 대한 흥미와 함께, 시스템 설계의 세부 정보 부족에 대한 지적.
  • 작성자는 분산 시스템 문제를 모놀리식 시스템으로 전환하는 동기, RocksDB/Tantivy 채택 이유, ES 클러스터 운영의 부담감, 더 단순하고 안정적인 대안 추구 의사를 밝힘.
  • 개별 요구사항에 맞춘 솔루션 조합 사례와 Quickwit에 대한 관심 표현.
  • RocksDB의 안정성에 대한 상반된 경험 공유 (LevlelDB와의 차이점 강조).
  • Elasticsearch 키워드로 인한 클릭 유입과 Radar 서비스에 대한 관심 표명.

📚 관련 자료