brunch

You can make anything
by writing

C.S.Lewis

by zzz Mar 05. 2024

검색 서비스 기획: 당신2 9하는 모든 것을 찾도록

29CM의 검색 서비스의 FLOW와 주요 기능을 분석했습니다.


검색 서비스는 기능 목적을 달성시키는 가장 논리적인 분야이기도 하고, 사용자의 행동을 가장 가까이 들여다볼 수 있으며, 동시에 비즈니스 로직도 깊게 녹여 기회를 만들어야 한다는 매력이 있습니다. 또, 효과적으로 원하는 자료를 찾을 수 있는 키워드를 고민하고 비슷한 자료가 많을땐 유니크한 단어를 고민해 기능적인 효율을 실험할 수 있는 등의 과정 전반이 재미있습니다. 이렇게 일상속에서 작고 소소하게 관심을 갖던 중, 서비스 기획자로서 검색 서비스를 제대로 파헤쳐 보면 재밌을 것 같아서 시작하게 되었습니다.


출처: https://www.29cmcareers.co.kr/


29CM를 분석 대상으로 선정

살펴보니 검색 기능을 전문적으로 관리하는 곳은 주로 커머스인 것 같습니다. 아무래도 고객이 원하는 상품을 피로감 없이 쉽고 빠르게 찾아 구매해야 하는 비즈니스 목적에 가장 맞닿아있기 때문인 것 같아요.  

 다양한 커머스 중 분석 대상으로 '29cm'를 선택했습니다. 매일 출퇴근길이나 자기 전, 심심할 때, 쉴 때 등 별일이 없더라도 수시로 접속해 구경하는 만큼 29cm의 탐색 경험에 친숙하다고 생각했습니다. 또, 29cm는 오픈마켓과 다르게 제공하는 상품, 브랜드의 종류가 정해져 있고 그 목록을 잘 알고 있으므로 다양하게 테스트하며 로직을 파악하기에도 쉬울 거로 생각했습니다.  


검색 서비스란

검색의 목적은 단순하고 직관적입니다. 사용자가 원하는 자료를 찾고 목적을 달성시켜야 하죠. 그들이 원하는 건 '폴로 반팔 니트' 같은 구체적인 상품일 수도 있고, '출근하기 적당한 여름 니트'와 같이 명확하지 않을 수도 있습니다. 어느쪽이든 간에 사용자는 화면에 들어와 떠오르는 키워드를 검색하고, 결과 목록을 둘러보며 상품을 탐색하고, 구매를 결정합니다.  

 이 과정에서 다양한 상황이 발생할 수 있습니다. 검색어를 잘못 입력했거나 적절하지 않게 입력했을 수도 있고, 검색 결과가 충분하지 않을 수도 있고, 만족할 만한 결과가 없을 수도 있죠. 이런 케이스를 고려해 제공자는 성과를 파악하기 위한 기준으로 (1) 검색 후 결과가 얼마나 존재하는가, (2) 검색 결과로 노출된 상품을 선택했는가, (3) 장바구니 or 구매로 전환되었는가 등의 지표를 사용할 수 있을 것 같습니다. 이를 바탕으로 지표와 어드민을 꾸준히 관리하며 모니터링하고 개선할 힌트를 얻을 수도 있겠습니다. 지표에 관해서는 다음에 자세하게 알아보겠습니다.  


검색의 3단계

검색 기능을 사용자 행동을 중심으로 3가지로 나누었습니다.


1. 검색어 입력

사용자가 검색 화면에 진입해 검색어를 입력하는 단계입니다. 주로 상단에 위치한 검색 아이콘을 클릭해 입력 화면으로 들어오고, 떠오르는 키워드를 입력합니다.

2. 자료 조회

사용자가 키워드를 완성해 검색을 요청하는 단계입니다. 키워드 입력 후 검색 버튼을 클릭했을 수도 있고, 제안된 검색어를 선택해 요청이 시작될 수도 있습니다.  

3. 결과 전시

요청한 검색어에 대한 결과가 반환되는 단계입니다. 상품 대표 이미지와 상품명, 가격 등의 정보를 확인할 수 있고, 상품을 클릭해 상세 페이지로 넘어갈 수 있습니다.  


FLOW 분석

검색 서비스 전반의 플로우를 정리해 보았습니다. 마찬가지로 3단계로 나누어 사용자의 행동이 발생했을 때, 기능과 정보를 처리하는 과정에서 발생 가능한 여러 시나리오를 테스트해보며 로직을 분석했습니다.


29CM 검색 FLOW



1. 검색어 입력

사용자가 화면에 진입해 검색어를 입력하는 단계입니다.

최근 검색어  

검색 입력필드를 선택할 때, 저장된 최근 검색어가 있는 경우 제공됩니다.   

사용자의 로컬 앱 or 브라우저에 저장하므로 같은 아이디로 로그인했더라도 접속한 앱, 브라우저가 다르거나 시크릿 브라우저를 사용하면 제공받을 수 없습니다.  

앱 기준으로 20개까지 저장됩니다.  


인기 검색어

'인기 브랜드 검색어'와 '지금 많이 찾는 검색어'의 두 종류로 제공됩니다.  

'인기 브랜드 검색어'는 의류, 홈, 잡화 카테고리를 기준으로 제공하며, 매 시간마다 업데이트합니다. '지금 많이 찾는 검색어'는 일별 업데이트 되며 100개까지 제공됩니다.   

'인기 브랜드 검색어'가 참조할 DB 구조를 구상해 보자면, 이미 마련된 카테고리별 브랜드 목록이 있고 실제 검색이 발생할 때마다 해당 브랜드의 카운트를 추가해 집계할 것 같습니다. 한 가지 궁금한 점은 인기 검색어 순위는 시간별로 편차가 클지, 그렇다면 이를 통해서 추가적인 기능을 제공할 수 있을지도 궁금해집니다.


자동완성

검색어를 입력하면 실시간으로 자동완성한 검색어를 제안하는 기능입니다.   

'자소' 기준으로 제공합니다. 따라서, '나ㅇ' 까지만 입력해도 '나'이후 'ㅇ'으로 시작하지 않는 키워드는 모두 제거됩니다. 또한 자소 기준이므로 'ㄴㅇㅋ'만 입력해도 '나이키'로 자동완성 해줍니다.

하나씩 입력할 때마다 자동완성이 업데이트되는 속도가 매우 빠른 걸로 보아, 첫 글자 입력 시 일치하는 목록을 전체 조회하고 그 이후부터는 로컬에서 입력할 때마다 불일치한 키워드를 제거하는 방식일 것 같습니다.



2. 자료 조회

사용자가 키워드를 완성하고 검색을 요청하는 단계입니다. 직접 입력 후 검색 버튼을 누르거나, 화면에 제안된 검색어를 클릭해 검색이 요청된 경우를 모두 포함합니다. 백앤드 로직은 자세하게 파악하기에 한계가 있으므로 직접 테스트 해보거나 29cm 테크 블로그를 참고했습니다.

형태소 분석

요청된 검색어를 분절(tokenize)한 후 검색의 재료로 사용할 수 있도록 분류하고 분석합니다. 29cm 테크 블로그에 따르면 브랜드, 카테고리, 일반 키워드(상품 속성 등)의 세 종류로 형태소 사전을 관리한다고 합니다. 추가로, 형태소 분석은 N-그램과 같은 형태 단위보다는 의미 단위로 분석하고 있고, 따라서 검색의 정확도가 높아 상품 검색에 적합해 보였습니다.

29CM는 다양한 브랜드를 많이 가지고 있으므로 브랜드명과 같이 쪼개져서는 안 되는 용어의 관리가 특히 중요해 보였습니다. 예를 들어 '메이크어토스트'라는 브랜드를 '메이크', '어', '토스트'로 쪼개면 전혀 다른 검색 결과를 초래할 수 있습니다.


유사어 확장

분석된 키워드를 바탕으로 동의어, 유사어를 찾아 검색의 재료를 확장해 보다 많은 검색 결과를 노출할 수 있습니다.

예를 들어 '드라이어'와 '드라이기'는 둘 중 하나만 검색해도 다른 용어가 포함된 상품이 함께 검색되고 있어 유사어로 관리됨을 알 수 있습니다. '흰 니트'와 '하얀 니트'를 검색한 결과 또한 일부 정렬 순위만 다를 뿐 비슷해 마찬가지의 케이스에 해당합니다.


결과 매칭

지금까지의 단계를 거쳐 마련된 검색 재료인 키워드를 통해 일치하는 정보를 찾는 과정입니다. 29CM의 결과 화면은 상품 목록뿐만 아니라 브랜드 바로가기 버튼을 제공하므로 검색 키워드와 일치하는 '상품'과 '브랜드' DB를 각각 조회할 것으로 보입니다.  

상품이나 브랜드의 정보가 담긴 원천 DB는 별도로 존재하지만 수많은 데이터가 저장된 만큼 매 검색마다 직접 조회하면 검색 성능이 낮고 부하가 우려될 수 있습니다. 따라서 주요 정보만 별도로 저장한 인덱싱 DB를 따로 관리해 검색 시에만 활용하며, 정기적으로 업데이트해 최신성을 유지할 것입니다. 인덱싱 DB에 저장된 데이터의 종류를 알고 싶다면 검색 결과 목록에 제공하는 정보를 확인하면 됩니다.  



3. 결과 전시

요청한 검색어에 대한 결과를 받아 전시하는 단계입니다.

검색 결과 없음

검색한 결과가 없는 경우를 안내합니다. 검색 키워드가 실패했음을 의미하지만 '검색어 교정'이나 '대체 검색어 제안' 등의 부가 기능은 없으며, 대신 추천 상품을 노출합니다.  

추천 상품은 로그인한 아이디 값을 기반으로 제공하는 것으로 보입니다. 비로그인 상태에서는 제공되지 않습니다. 추가로, 로그인 후 'MY' 탭에 접속하면 최근 본 상품이나 나의 활동, 구매 내역 등의 아이디 기반의 정보가 있는데, 이를 바탕으로 추천 상품이 구성될 것이며 검색 결과에서는 로그인 상태를 체크해 해당 정보를 API로 불러오는 정도일 것 같습니다.


검색 결과 반환

상품 이미지, 상품명, 가격, 상세페이지 URL 등 검색 결과 목록에서 볼 수 있는 정보가 바로 검색 후 반환된 정보입니다. 검색어 조회 단계에서 인덱싱 DB를 조회한 결과이며, 상품뿐만 아니라 브랜드 검색 결과로는 브랜드 이미지, 브랜드명, 브랜드 상세 URL을 반환합니다.  

결과를 클릭해 상품 상세 페이지로 진입하거나(여기서부터는 검색보다는 전시 서비스의 영역), 재검색을 하는 등 사용자는 검색 결과를 확인하고 다음 탐색 과정을 이어갈 수 있습니다. 또한, 제공자는 이때의 클릭률이나 전환율 등의 지표를 수집해 서비스 개선에 활용할 수 있습니다.  


연관 검색어

검색 결과 화면에서 연관검색어를 제공하는 경우가 있습니다. '아이폰13 케이스', '아이폰13 미니', '얇은 목도리', '남자 목도리' 등 구체적인 키워드가 제안됩니다.

노출 기준은 입력한 키워드를 포함하면서 검색량이 일정 수준 이상으로 많은 경우 제공되는 것으로 보입니다. 연관검색어를 보여주기 위해서는 사용자의 전후 검색 키워드를 별도로 저장하는 등의 데이터 관리가 필요할 것입니다. 검색 부가 기능인 연관검색어 관련해서는 다음에 자세하게 알아보겠습니다.






지금까지 검색 서비스의 기본 구조와 기능을 분석해 보았습니다. 검색 뒷단의 동작에 대해서는 잘 몰랐던 상태로 시작해 여러 자료를 찾아 공부하고 테스트해보며 정리한 글이라 실제와는 다른 점이 있을 수 있습니다. 그럼 다음에는 보다 자세한 검색 UX로 돌아오겠습니다�

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari