검색 엔진 대체 (비용 1/3)
Last updated
Was this helpful?
Last updated
Was this helpful?
검색엔진에 사용되는 비용이 과다하다고 판단되어 검색엔진을 대체하는 프로젝트
기간: 2023.03 - 2023.04
소속: 노써치 / 개발
기술 스택: Typescript, NodeJS 18, NestJS, Typesense, Docker compose
인원: 2인 (본인, PO)
성과: 검색 성능을 크게 떨어뜨리지 않으며 검색에 소비되는 비용 1/3
기존에는 검색엔진을 DB용도로도 사용하였습니다. 그 결과, 필요 이상의 큰 사양이 필요했습니다. 이 문제를 해결하기 위한 시작으로 검색 기능을 검색엔진으로 대체하기 위해 시작한 프로젝트입니다.
구현한 검색 기능은 크게 검색 데이터 생성, 검색 데이터 반영, 그리고 검색 API 세 가지로 구성됩니다.
이 중 데이터 생성 단계에서는, 향후 계획된 백오피스 대체 작업으로 변경될 가능성을 고려하여 유연하게 설계했습니다.
생성과 반영 과정을 분리한 이유는, 테스트 과정에서 검색 데이터 반영 시 스키마와 맞지 않는 데이터가 종종 발생하는 문제와 올라간 문서를 사후에 검토해야할 필요가 있었기 때문입니다. 이러한 오류를 방지하고 처리 과정을 명확히 하기 위해 두 단계를 나누어 관리했습니다.
또한, 검색 API는 다양한 검색 옵션(필터링 등)을 지원해야 한다는 점을 고려하여 유연하고 확장 가능한 구조로 설계했습니다.
Precision@20에서 80% 수준으로 검색에 소비되는 비용을 1/3으로 감축하였습니다.
아키텍처의 변경은 사전에 좀 더 면밀히 검토해야 한다.
느낀점
최초 개발의 편의를 위해 데이터의 생성과 반영을 분리하는 결정은 너무나 경솔한 결정이었습니다.
우연으로 추후 요구사항을 만족할 수 있었지만, 자칫 개발 기간을 늘릴 수 있는 결정이었습니다.
action item
아키텍처의 분리가 필요하면, 당장의 사유뿐만 아니라 추후 활용 가능성도 함께 검토합니다.