본문 바로가기
컴어스

[INSIDE] 엘라스틱서치를 이용한 상품 검색 엔진 개발 스토리

by NHN 커머스 2024. 6. 12.

 

지난 글에서는 <NHN FORWARD 2022> 세션 중, NHN커머스가 물리 서버에서 클라우드로 이전한 내용을 전달해 드렸는데요. 오늘은 또 다른 세션을 성공적으로 발표하신 기라성 대리님을 만나 뵙고 왔습니다! '엘라스틱서치' 라는 새로운 검색 엔진으로 샵바이의 검색 품질을 개선했다고 하셨는데요. 샵바이 상품 검색 사례를 통해 어떤 개선이 필요했고, 어떻게 개선할 수 있었는지 검색 엔진 개발 스토리를 함께 살펴보겠습니다!

 


Q. 안녕하세요 기라성 대리님, 자기소개와 맡고 계신 업무에 대해 소개해 주세요.

안녕하세요, 저는 NHN커머스에서 샵바이 플랫폼을 개발 및 운영하고 있는 백엔드 개발자 기라성입니다. 샵바이상품파트에 소속되어 말 그대로 샵바이의 상품과 관련된 개발 업무를 진행하고 있습니다. 또한, 관련 이슈 대응, 유지 보수 등의 업무를 하고 있어요.

Q. NHN FORWARD 2022에서 발표하신 <엘라스틱서치를 이용한 상품 검색 엔진 개발 일지> 는 어떤 내용이었나요?

저희가 올해 처음으로 ‘엘라스틱서치’라는 기술을 도입했는데요. 해당 기술 도입 과정에 대해 발표를 진행했습니다. 단순히 기술에 대한 설명보다는 어떻게 개발을 했고, 어떤 이슈들이 있었고, 그 이슈들을 어떻게 극복했는지와 관련된 내용들로 스토리를 전개했어요.

Q. 기존 ‘샵바이’ 솔루션에 사용되던 ‘NHN Cloud Search’에서 새로운 검색 엔진을 개발하시게 된 계기는 무엇이었나요?

기존에 사용하던 검색 엔진이 커머스에 특화된 것이 아니다 보니, 업체들의 요구 사항을 반영하는데 한계가 있었어요. 특정 제품이 검색되지 않는다거나, 연관성 없는 제품이 검색 결과에 나타나는 문제들을 개별 건으로 처리해야 했죠. 그래서 검색엔진을 내재화하기로 결정했습니다. 검색 품질을 높이고, 내부적으로도 더 편하게 운영하고 관리하기 위한 방안을 모색하기 위해서였죠. 그 결과로 ‘엘라스틱서치’를 도입하게 된 거예요. 검색 엔진 내재화 이후에는 업체별 니즈에 직접 빠르게 대응할 수 있고, 서비스 유지 보수도 훨씬 간편해졌어요.

Q. '엘라스틱서치'란 무엇인지 간단히 설명 부탁드립니다.

엘라스틱서치는 모든 데이터 색인을 실시간으로 검색 및 분석이 가능한 검색 엔진입니다. 엘라스틱서치는 루씬(*Java 언어로 개발된 오픈소스 정보 검색 라이브러리) 기반의 검색 엔진이다 보니, 검색 결과를 빠르게 받아볼 수 있어요. 또, 분산형 설계로 데이터를 안전하게 보관할 수 있다는 장점이 있죠.

NHN FORWARD 2022 현장 ⓒNHN커머스

Q. 상품 검색은 데이터 색인 과정을 거쳐야 한다고 들었어요. 데이터 색인 구조는 어떤 식으로 개선하셨나요?

엘라스틱서치를 통해 상품 정보를 검색하기 위해서는 색인 작업이 필요한데요. 색인은 사전 안에 있는 부록 페이지처럼 데이터가 검색될 수 있는 구조로 변경하기 위해 원본 문서를 ‘검색어 토큰’으로 변환하는 과정이라고 보시면 돼요.

색인 작업을 위한 코드를 처음 작성하고 3백만 개 이상의 상품 데이터를 테스트해 보았을 때, 약 1시간이 소요됐어요. 데이터를 5만 개씩 순차적으로 진행하다 보니, 데이터 결과를 받기까지 시간이 오래 걸린 거죠. 그래서 이 시간을 단축하고자 코드 개선을 진행했고, 2천 개 데이터를 20개씩 병렬로 처리하기 시작했어요. 그 결과, 3백만 개의 데이터 색인에 드는 소요 시간을 6~7분으로 단축할 수 있었어요.

NHN FORWARD 2022 현장 ⓒNHN커머스

 

Q. 검색 엔진 도입만으로 한 번에 큰 변화가 있었던 건 아니었을 것 같아요. 만족스러운 검색 품질을 위해 어떤 개선 작업을 거치셨나요?

만족스러운 검색 품질을 위해서는 어떤 점이 중요한지에 대해 많이 고민했어요. 그 결과, 검색이 얼마나 일치하는지, 형태소가 얼마나 적절하게 분석되는지, 사용자 요청에 얼마나 유의미한 용어를 추출하는지 등이 중요하더라고요. 예를 들어, ‘남성운동화’라는 상품을 검색했을 때, ‘동화책’이라는 검색 결과가 나오는 것이 아니라 ‘운동화’라는 결과가 나와야 하는 거죠.

형태소 분석이 중요한 이유 ⓒNHN커머스

 

Q. 그 결과를 도출하기 위해 몇 가지 옵션을 적용하셨다고 들었어요. 각각의 옵션에 대해 간단히 소개해 주세요.

저희는 엘라스틱서치에서 제공하는 노리 한글 형태소 분석기’를 적용했는데요. 텍스트를 최소 단위의 뜻을 가진 형태소로 분석해주는 플러그인입니다. 그런데 이 분석기를 단순히 적용만 하면 되는 것은 아니었어요. ‘남성운동화’를 형태소 분석하면, ‘남성’, ‘운동’, ‘화’ 3개 토큰으로 분석이 되는데, 하단의 상품 목록과 같이 ‘운동’ 이라는 형태소가 포함된 ‘운동화’, ‘운동복’, ‘운동기구’ 들이 결과에 포함이 되고 있었습니다.

NHN FORWARD 2022 현장 ⓒNHN커머스

 

이를 해결하기 위해 ‘사용자 사전’을 도입했어요. ‘사용자 사전’에 등록된 단어는 그것 자체를 최소의 형태소로 간주하고 더 이상 개별 용어로 분리하지 않았거든요. 사용자 사전 ‘dictionary.txt’ 파일에 ‘운동화’라는 단어를 등록하면, 이제는 ‘운동’ 과 ‘화’ 라는 2개의 형태소로 분리되지 않는 거죠.

사용자 사전 도입 ⓒNHN커머스

다음으로는 ‘동의어 사전’ 도입으로 검색 품질을 개선했는데요. 보통 쇼핑몰 이용자들은 신발을 검색할 때, ‘신발’, ‘운동화’, ‘러닝화’, ‘스니커즈’ 등 여러 가지 텍스트로 검색을 하게 됩니다. 동의어 사전 ‘synonym.txt’ 파일에 ‘신발’, ‘운동화’, ‘러닝화’. ‘스니커즈’ 등을 동일한 단어로 취급하게끔 등록할 수 있습니다. 따라서, 사용자가 ‘신발’을 검색하면 동의어 사전에 등록된 모든 단어들이 동일 단어로 취급되면서 다양한 상품들을 검색 결과에 포함할 수 있는 것이죠.

동의어 사전 도입 ⓒNHN커머스

이렇게 ‘사용자 사전’, ‘동의어 사전’ 등 여러 가지 옵션들을 조합하면서 실제 검색에 필요한 상품이 나올 수 있도록 개선 작업을 진행했어요.

Q. 발표 이후 어떤 프로젝트를 진행하셨는지 궁금해요!

NHN커머스 앱 스토어’ 개발 업무를 담당했어요. 기획팀, 마케팅팀분들과 협업하면서 NHN커머스 스토어의 ‘앱’과 관련된 개발을 진행하고 있습니다. 앱 스토어에서는 쇼핑몰에 필요한 마케팅, 고객분석, 배송, 재고관리 등 다양한 카테고리의 앱을 탐색하고 설치할 수 있어요. 여기서 앱이란, 쇼핑몰 기능 확장을 위해 플러그인 형태로 설치 가능한 서비스를 의미해요. 최신 트렌드를 반영해서 고객분들이 쇼핑몰에 여러 가지 기능을 편리하게 추가할 수 있도록 ‘앱 스토어’ 개발에 매진하고 있습니다.

Q . NHN커머스에서 앞으로의 목표가 있다면 알려주세요.

검색 엔진과 관련된 업무의 비중이 컸기 때문에 상품 도메인 관련 업무에는 집중하지 못했던 부분이 작은 아쉬움으로 남았습니다. 그래서 앞으로는 고객분들의 문의를 빠르게 해결해 드릴 수 있을 만큼의 역량을 키우고 싶어요. 사실, 상품을 등록하거나 수정할 때도 내부적으로 복잡한 로직이 있는데요. 관련 도메인 지식을 얻기 위해서는 여러 가지 이슈도 많이 봐야 하고, 코드도 많이 봐야 하거든요. 앞으로도 팀원분들께 많이 여쭤보고, 이번 NHN포워드와 같은 기술 컨퍼런스에도 자주 참석하며 계속 성장하는 개발자가 되는 것이 저의 최종 목표입니다!

▼ 세션 영상