Aeca가 검색 개발을 쉽게 하는 방법
들어가며
앞서 애플리케이션에 검색 기능을 넣는 것이 왜 어려운지를 살펴보았습니다.
데이터베이스가 제공하는 검색 기능은 제한적이고, 데이터베이스에 검색 엔진을 추가하자니 많은 개발 리소스가 들기 때문이었죠. 그렇다면 이런 생각을 해볼 수 있을 겁니다. 데이터베이스와 검색 엔진을 하나로 합친다면? 모든 데이터가 하나의 시스템에서 다루어지므로 동기화 문제가 없고, 모니터링 등 DevOps 리소스가 상당히 줄어들겁니다.
하지만 데이터베이스와 검색 엔진은 근본적으로 다른 기술이고 두 시스템을 하나로 합친다는 것은 사실상 불가능한 것으로 여겨졌습니다. Elasticsearch 같은 검색 솔루션이 본격적으로 사용된 것이 2010년 초인데 10년이 지난 지금도 여전히 데이터베이스와 검색 솔루션을 따로 사용하고 있죠.
그런데 그 어렵다는 걸 Aeca가 해냈습니다. 데이터베이스에서 검색 엔진 기능을 완벽히 구현하는데 성공한 것입니다. Aeca는 CRUD를 지원하는 OLTP 데이터베이스입니다. 데이터를 빠르게 기록하는 데 최적화 되었죠. 데이터를 기록하는 것과 읽거나 검색하는 것은 상호 배타적인 프로세스 입니다. 하지만 Aeca에서는 데이터가 처리되는 즉시 실시간으로 검색하는 마법 같은 일이 가능합니다. 뿐만 아니라 Aggregation과 같은 OLAP 성격의 기능, Time to Live 등 다양한 기능을 하나의 데이터베이스로 통합하였습니다.
이제 검색엔진에서만 구현가능했던 제대로 된 Full-Text Search를 데이터베이스에서도 사용할 수 있습니다. 그 동안 대표님, 프로덕트 기획, 개발자들을 괴롭혔던 검색 개발의 고통에서 벗어나는 순간입니다. Aeca가 구체적으로 어떻게 검색 개발의 고통에서 벗어나게 도울 수 있는지 살펴볼까요?
3일 만에 가능한 검색개발
데이터베이스에 검색 엔진을 연동하는 과정이 필요 없어 개발 시간이 압도적으로 단축됩니다. 데이터베이스에 데이터가 저장되는 즉시 검색이 가능하므로 서비스 초기부터 우수한 검색 기능을 제공할 수 있는 것이죠.
동기화할 데이터 추출, 전처리, 인덱싱, 일관성 유지 등 복잡한 개발 과정이 더 이상 필요 없어지면서 최소 수개월 이상 걸리는 검색 기능 개발이 단 며칠 만에 가능합니다.
서버 비용 감소
검색 엔진에 데이터를 중복 저장할 필요 없이 모든 데이터를 하나의 데이터베이스에서 관리하므로 추가적인 데이터 저장, 운영 리소스가 필요 없습니다. 클라우드 비용이 감소하는 것이죠.
더 이상 필요 없는 추가 솔루션
검색 엔진 자체가 필요 없기 때문에 데이터베이스와의 동기화 메커니즘 구축을 위한 추가 솔루션도 당연히 필요 없습니다. Apache Kafka와 같은 Message Queue 등을 더 이상 사용하지 않아도 됩니다. 솔루션 도입 비용 감소는 물론 백엔드 단순화에 따른 운영 효율성이 급격히 개선됩니다.
크기에 제한이 없는 검색 결과
Elasticsearch와 같은 검색 엔진의 단점 중 하나는 대량의 검색 결과를 반환하지 못한다는 것입니다. 조건을 만족하는 대량의 검색 결과에서 중요한 정보를 몇 개 뽑아내야 할 때 중요한 결과를 놓치는 문제가 발생할 수 있습니다. 특히 ML과 같은 방대한 학습 데이터를 다룰 때는 방대한 데이터를 검색하여 추출해야 합니다. Aeca는 검색 결과 크기에 영향을 받지 않습니다. 검색 결과가 백만 개 이상의 검색 결과도 한 번에 반환할 수 있죠.
Full-Text Search를 넘어서
위와 같이 Aeca는 데이터베이스에서 우수한 Full-Text Search를 제공합니다. 이제 초기 기업도 우수한 검색 기능을 서비스에 넣을 수 있게 되었죠.
그런데 이게 끝이 아닙니다. 전통적인 Full-Text Search 뿐만 아니라 최근 AI 검색으로 각광 받는 벡터 검색(Vector Search), Full-Text Search와 벡터 검색의 장점을 혼합한 Hybrid 검색도 제공합니다.
함께 보면 좋을 글
검색 기능 개발이 어려운 이유
현대 애플리케이션에서는 검색기능이 필수적입니다. 대표적으로 쿠팡, 배달의민족, 야놀자와 같은 앱들에서 사용자는 다양한 항목들을 검색합니다. 그러나 검색기능의 개발은 간단하지 않습니다. 특히 사용자가 구글과 같은 수준의 검색품질을 기대할 때 기술적 요구사항은 복잡해집니다. 검색기능을 개발하기 위한 두 가지 대표적인 방법은 데이터베이스의 쿼리기능을 사용하는 것과 별도의 검색엔진을 사용하는 것입니다. 데이터베이스의 쿼리기능은 간단한 검색에는 적합하지만, 복잡한 검색 요구사항에는 한계가 있습니다. 반면, 검색엔진을 사용하면 높은 수준의 검색기능을 제공할 수 있지만, 개발의 복잡도와 유지보수의 어려움이 증가합니다. 따라서 서비스 초기단계에서는 어떻게 고품질의 검색기능을 효과적으로 구현할 것인지에 대한 고민이 필요합니다.
By Tim Yang|2023-09-11
검색, 그게 왜 중요하죠?
웹과 모바일 애플리케이션에서 검색은 긍정적인 사용자 경험을 형성하는 핵심기능 입니다. 특히 커머스 서비스에서 검색은 사용자 경험 향상을 넘어, 회사 매출에 직접적인 영향을 미치는 요소 입니다. 상품정보와 콘텐츠의 양이 폭발적으로 증가하는 상황에서 고객이 입력한 검색어에에 부합되는 정보를 적시에 제공하는 검색품질은 애플리케이션과 웹사이트의 성공과 실패를 가를 중요한 요인이 되었습니다. 일반적으로 커머스 서비스에서 상품을 검색하는 고객은 지불의사가 높은 강력한 잠재고객으로 판단합니다. 사용자들이 검색하는 행위와 검색결과에 반응하는 모든 행동에는 고객 자신들의 구매의도, 니즈, 지불의사가 모두 나타나 있다고 보고 있습니다. 통계상으로도 검색을 수행한 사용자의 구매전환율이 그렇지 않은 고객에 비해 2배 이상이며, Total MAU에서 검색을 사용하는 유저의 비율은 20% 이하지만 검색을 한 번 이상 수행한 사용자들에게서 발생하는 매출이 절반이상인 것으로 알려져 있습니다. 또한 첫 검색에 실패한 사용자의 이탈율이 높게 나타나며, 재검색 고객의 구매전환율은 매우 낮게 나타납니다. 즉, 검색은 고객의 지갑을 열기 위한 강력한 수단일 뿐만 아니라 서비스의 지속가능성에도 큰 영향을 미치는 요소 입니다. 그렇다면 검색은 구체적으로 어떻게 고객리텐션과 매출증대, 서비스 개선에 기여할까요?
By Tim Yang|2023-09-10