추천 서비스와 아키텍처[1]-추천 서비스란 무엇인가

Jongmin Lee
How we build MyRealTrip
14 min readNov 27, 2020

동영상, 커머스, 소셜 등의 서비스를 이용하다 보면 추천 서비스를 알게 모르게 사용하게 됩니다. 사용자의 눈에 보이지 않아도 내부적으로 추천 기술이 적용되어 있는 경우가 많습니다. 이제는 추천 서비스는 많이 보편화된 기능이라고 볼 수 있는데요. 마이리얼트립도 사용자를 위해 퀄리티 있는 추천을 제공하고, 이를 발전시키기 위해 노력하고 있습니다.

이 글에서는 평소 무심코 지나쳤을 법한 추천 서비스를 좀 더 이해할 수 있도록 추천 서비스란 어떤 것이고, 어떤 역할을 하는지, 중요한 요소가 무엇인지, 그리고 확장성 있고 안정적인 추천 서비스를 구현하기 위한 추천 아키텍처(Architecture)에 대해서 설명합니다. 이글을 통해 전반적으로 추천 서비스에 대해 이해하는데 도움이 되면 좋을 것 같습니다.

추천 서비스의 목표

추천 서비스는 무엇을 목표로 서비스를 할까요? 추천 서비스는 사용자가 편하게 상품을 탐색하도록 하고 이를 구매로 연결해 줘야 합니다. 정리해보면 다음과 같습니다.

  • 원하는 상품이 바로 보인다.
  • 많은 상품을 노출한다.
  • 많이 클릭하게 만들어서 구매로 연결된다.
  • 사이트에 다시 방문하게 한다.

추천 서비스란 무엇인가

기본적으로 추천 서비스는 사이트 내에 사용자의 동선에 따라 적재 적소에 들어갈 수 있습니다. 상품 페이지나 구매 완료 페이지에서는 보고 있는 상품 혹은 구매한 상품에 맞는 추천을 보여줄 수 있습니다. 홈 혹은 도시 페이지에서는 사용자를 타겟으로 각 사용자에게 최적화된 상품을 보여줄 수 있습니다. 참고로 마이리얼트립에서는 추천 상품을 보여주기 영역을 섹션(section)이라고 부릅니다. 상품페이지와 홈, 도시 페이지에서 적용할 수 있는 추천 서비스 유형은 다음과 같습니다.

상품 페이지

마이리얼트립은 최종적으로는 여행 상품을 판매하는 것이 중요하며, 사용자는 상품 페이지에서 상품의 상세 정보를 보고 구매에 대한 결정을 하게 됩니다. 사용자는 상품 구매를 결정하기 위해 비슷한 상품을 비교해서 최적을 선택을 하는 경우가 많습니다. 이때 추천은 이 상품과 가장 관련된 상품을 좀 더 쉽게 보여줄 수 있습니다.

상품 페이지는 일반적으로 다음과 같이 구성할 수 있습니다. 상품 자체에 대한 사진, 가격을 보여주고 그 밑에 BT (Bought Together) 추천, 그 후에 상품에 대한 설명, 그리고 상품이 끝나면 VT (Viewed Together) 추천을 보여줍니다. 그리고 그 밑에는 “근처 상품 추천” 혹은 “같은 테마 상품 추천” 과 같은 추천도 보여줄 수 있습니다. 여러 추천 모델을 다양하게 배치할 수 있습니다.

모든 페이지에서 추천 섹션들은 사용자의 액션에 기반한 맥락 하에 배치됩니다. 사용자가 상품 페이지에서 확인하는 가장 큰 부분은 “이 상품이 어떤 상품이냐”는 것입니다. 따라서 될 수 있으면 현재 보고 있는 상품의 설명까지는 방해를 하지 않도록 구성합니다. 또한 상품 페이지에서 보여주는 추천은 전부 이 상품과 관련된 상품들을 보여줍니다. 베스트 상품과 같은 추천은 상품 페이지에서는 적합하지 않습니다.

상품 페이지의 추천 구성

여기서는 상세 페이지에 적용해 볼 수 있는 VT, BT, 근처의 상품 추천, 테마 상품 추천에 대해 알아보겠습니다.

1) 함께 본 상품(Viewed Together-VT) 추천

일반적으로 함께 본 상품(VT) 섹션은 상품 설명이 나온 이후에 사용자에게 노출됩니다. VT에는 현재 상품과 비교해 볼 수 있고, 대신해서 살만한 상품을 보여줄 수 있습니다. 사용자는 상품 설명을 먼저 확인한 후, VT 섹션을 통해 가격, 용도를 고려하여 비슷한 다른 상품을 확인해 볼 수 있습니다. VT 섹션은 사용자에게 노출되는 상품의 개수를 늘리면서 클릭을 유도합니다. 이때 VT 영역이 상품 설명 위로 배치되는 것은 바람직하지 않습니다. 사용자가 클릭한 상품의 설명을 읽기도 전에 대신 구매할 만한 것을 보여주게 되어, 다른 상품으로 이탈한다면 현재 상품 구매에 도움이 되지 못합니다.

2) 함께 구매한 상품(Bought Together -BT) 추천

함께 구매한 상품(BT) 섹션 혹은 자주 함께 구매한 상품(Frequently Bought Together -FBT) 섹션은 아마존과 같은 많은 커머스 사이트에서 상품 사진 바로 밑에, 상품 설명 위에 노출됩니다. BT에는 현재 보고 있는 상품과 함께 구매할 만한 상품을 보여줄 수 있습니다. 예를 들어 일반 마트에서 계산대 근처의 상품들을 생각해 보시면 됩니다. 가격이 비교적 저렴하고 자주 쓰는 상품, 아이가 많이 찾는 상품을 배치해 두어 꼭 사려고 했던 것이 아니더라도 이왕 방문했을때 함께 구매하도록 유도합니다.

일반적으로 BT는 위치가 상품 페이지의 위쪽에 위치해 있어도 CTR( View 대비 Click)이 잘 나오지 않는 편입니다. 왜냐하면 BT에 있는 상품들은 대체로 내가 사려고 마음먹은 상품들 대신 살 수 있는 상품이 아니기 때문에, 사용자는 내가 보고 있는 상품 설명을 먼저 읽기 전에는 BT 상품을 클릭하지 않는 경우가 많습니다. 사용자는 BT 섹션을 무시하고 상품 설명을 읽는 경우가 대부분입니다. 하지만 BT 섹션을 위에 배치함으로써 사이트내 상품을 사용자에게 한번이라도 더 보여주는 효과가 있습니다. 나중에 사용자는 “아 이런 물건이 있었지. 같이 살까” 하면서 떠올릴 수 있습니다. 또한 구매 완료 페이지에서도 BT를 보여줄 수 있습니다.

3) 가까운 위치의 상품 추천

여행자는 현재 위치에서 할 수 있는 다른 상품들을 찾는 경우가 굉장히 많습니다. 이런 특징은 다른 커머스 사이트에서는 찾아보기 힘든 특징입니다. 현재 상품과 가까운 곳에 위치한 다른 상품들을 스코어링해서 사용자에게 보여 줄 수 있습니다.

4) 같은 테마의 다른 상품 추천

마이리얼트립에서 테마란 어떤 특정 주제로 여러 상품을 묶어 놓은 것입니다. 예를 들어 “골프 투어”, “뚜벅뚜벅 제주 여행” 같은 것입니다. 테마는 여행을 다양한 각도로 볼 수 있게 상품들의 스토리를 제공하는 아주 좋은 콘텐츠의 하나입니다. 사용자에게 같은 테마안에 속한 다른 상품들을 보여줌으로써 사용자의 만족도를 높일 수 있습니다.

홈, 도시 페이지

다른 커머스 사이트와 달리 사용자들이 여행 사이트를 이용할 때 대부분은 도시라는 중요한 선택지를 먼저 정하고 진행됩니다. 도시 페이지에는 해당 도시의 각 상품들을 다양하게 보여주어 상품페이지 진입을 유도할 수 있습니다. 홈 페이지 역시 마찬가지로 상품 페이지 진입을 유도하며, 도시를 보여주고 도시 페이지로 진입할 수 있도록 합니다.

상품 페이지와 달리 홈, 도시 페이지는 특정한 소스(source) 상품이 없습니다. 상품 페이지는 상품이 소스가 되어 이 상품과 매우 관련된 상품들을 추천으로 보여줍니다. 이와 달리 홈, 도시 페이지는 사용자를 소스로 볼 수 있습니다. 즉, 여기서는 “사용자”와 매우 관련이 높은 상품을 보여주는 것입니다.

홈, 도시 페이지에서는 개인화가 핵심입니다. 개인화 추천이란 개인마다 다른 상품을 보여주는 추천을 말합니다. 홈, 도시 페이지의 영역의 크기는 한정되어 있습니다. 한정된 영역에서 사용자가 클릭할 만한 상품을 효과적으로 보여주려면, 박물관 관람을 원하는 사용자에게는 다양한 박물관을, 교통편을 원하는 사용자에게는 교통 상품을 보여주는 식의 개인화가 필요합니다. 일반적으로 다양한 상품을 보여주기 위해 많은 카테고리별 상품을 노출할 수 있는데, 이런 카테고리 들의 순서와 그 내용에 개인화 추천을 적용하여, 사용자에게 최적화된 상품을 보여줄 수 있습니다.

홈 페이지의 추천 구성

홈, 도시 페이지에 적용할 수 있는 몇가지 추천에 대해 좀 더 자세히 알아보겠습니다.

1) 최근 본 상품 추천

사용자가 여러 상품을 탐색하다 보면 자신이 본 상품들을 다시 확인하는 경우가 굉장히 많습니다. 한번에 물건을 구매하는 경우는 매우 적습니다. 비교를 통해 최적의 상품을 찾으려고 노력합니다. 이런 이유로 많은 사이트에서 사용자가 최근에 본 상품을 페이지 상단에 많이 보여줍니다. 사용자가 최근 본 상품을 확인하려고 할때 이 상품과 관련된 상품을 함께 보여줄 수 있습니다. 최근 본 상품 리스트와 그 추천은 사용자가 쉽게 접할 수 있게 홈의 상단에 표시되는 경우가 많습니다.

2) 사용자 액션 히스토리 기반 개인화 추천

사용자의 액션 히스토리를 기반으로 이 사용자에게 개인화된 추천상품을 하나의 섹션에 보여줍니다. 이 추천은 사용자의 액션을 기반으로 한다는 점에서 최근 본 상품 추천과 비슷하나, 이를 하나의 섹션에 나갈 수 있도록 모든 상품을 스코어링하여 보여준다는 점에서 차이가 납니다. 이런 추천은 UI만 약간 다를뿐 유튜브에서 개인화된 영상을 쭉 나열하여 추천하는 방식과 비슷합니다. 캐로셀(좌우로 스와이프하는 형식)이 아닌 리스트 형식으로 사용자가 더 많은 상품을 볼 수 있게 배치하는 것도 고려해 볼 수 있습니다. 또한 타이틀에는 아래 이미지처럼 사용자의 아이디 혹은 이름을 포함하여 개인화가 적용 되었음을 강조할 수 있습니다. 이 추천은 모든 사용자에게 각기 다른 상품이 노출됩니다.

3) 급상승 추천

급상승 추천은 실시간으로 지난 타임 윈도우 대비 현재 타임 윈도우에서 상승률이 높은 상품을 추천하는 방식입니다. 상품이 좋아도 그 자리에서 변하지 않으면 사용자의 클릭율은 떨어집니다. 현재 인기 보다는 상승률로 스코어링함으로써 많은 변화를 추구합니다. 사용자의 반응(feedback)은 실시간으로 데이터가 처리될 때 점점 좋아집니다. 급상승 추천을 위해서는 실시간 분석 아키텍처를 구현할 필요가 있습니다.

4) 함께 검색한 상품 추천(Searched Together -ST)

어떤 검색어를 함께 검색한 다른 사용자의 상품에 대한 클릭 혹은 구매를 기반으로 추천을 합니다. 이러한 추천은 사용자의 액션 중 ‘검색’을 활용하는 개인화 추천으로, 일반적으로 사용자는 어떤 목적을 가지고 검색을 하기 때문에 검색어에는 사용자가 원하는 바가 강하게 드러납니다. 이를 추천에 활용합니다.

ST는 메인 페이지에도 노출될 수 있고 검색 페이지 하단에도 노출될 수 있습니다. 검색 대비 장점은, 검색은 ‘에버랜드’를 검색하면 ‘에버랜드’결과를 최대한 찾아서 보여주지만, ST는 ‘에버랜드’ 사용자 검색 액션에 대해 ‘에버랜드’ 뿐 아니라 ‘롯데월드’, ‘서울랜드’도 결과로 보여줄 수 있습니다. ST 구현을 위해서는 상품의 관련도 뿐만 아니라, 검색 쿼리의 형태소 분석 및 사전 등록도 필수로 스코어링에 포함되어야 합니다.

5) 랜딩(landing) 키워드 추천

랜딩 키워드 추천은 ST와 비슷한 모델로 사용자의 랜딩 액션에 초점을 맞추는 추천입니다. 사용자가 외부 사이트에서 검색 후 광고를 클릭하여 홈 페이지로 랜딩하는 경우, 대부분은 외부 사이트의 검색어와 같은 정보를 가지고 옵니다. 이 정보는 사용자의 현재 목적을 정확히 알려주는 좋은 액션 정보로, 랜딩 키워드 추천은 이 정보에 포커스를 맞추어 추천합니다. 특히 외부 광고는 비용이 매우 비싸므로 사이트 랜딩시에 사용자에게 맞는 상품을 보여주는 것이 매우 중요합니다. 사용자 입장에서는 랜딩 이후 원하는 상품을 바로 볼 수 있어 효과가 좋습니다.

사진설명

추천의 내용 뿐 아니라 타이틀도 랜딩 키워드를 반영할 수 있습니다. 주로 메인 페이지 상위, 사이트내 랜딩 페이지, 팝업창으로도 노출할 수 있습니다.

6) 카테고리 추천

카테고리 추천은 여러 카테고리를 각각의 섹션으로 구성하고, 각 섹션은 카테고리의 추천 상품을 보여주는 식의 추천입니다. 카테고리 상품들의 개인화는 카테고리의 섹션의 순서를 개인에 맞게 조절하는 것입니다. 사용자의 액션을 기반으로 카테고리를 스코어링하여 사용자가 가장 원하는 카테고리 섹션을 가장 위로 보여줄 수 있습니다. 상대적으로 관심이 떨어지는 카테고리, 상품들은 아래에 노출되거나 생략될 수도 있습니다.

7) 랜드마크 추천

랜드마크란 도시 내에서 잘 알려진 관광 명소를 말합니다. 사용자가 만약 루브르에 관심이 많다면 루브르 위주로 세느강에 관심이 많다면 세느강 위주로 보여줄 수 있습니다. 카테고리 추천과 마찬가지로 여러 랜드마크를 여러 섹션으로 보여주고, 섹션의 순서를 개인에 맞게 조절하여 효과적인 결과를 이끌어낼 수 있습니다.

8) 랜드마크 리스트 개인화

랜드마크 리스트는 랜드마크 상품의 랜딩을 위해 지역의 랜드마크들만 보여줍니다. 사용자 액션에 기반하여 랜드마크 순서를 개인화 할 수 있습니다.

왜 추천 서비스가 중요한가

일반적으로 사용자는 사이트에서 어떤 목적으로 가지고 방문해 검색이나 카테고리 페이지를 활용합니다. 추천 서비스는 사용자가 이런 액션을 취하기 전에도 사용자가 원하는 상품을 적재 적소에 보여줄 수 있습니다. 만약 이것이 성공한다면 사용자는 좀 더 편하게 상품을 탐색할 수 있을 것입니다. 사용자의 액션과 현재의 문맥을 분석하면 사용자가 뭘 원하는 지 미리 파악할 수 있습니다.

  • 현재 보고 있는 상품의 정보
  • 사용자의 액션 (검색, 클릭, 구매)
  • 사용자가 랜딩한 정보

사용자의 액션을 분석하여, 사용자가 필요한 상품을 바로 보여줄 수 있으며, 사용자의 만족도를 높일 수 있습니다. 이는 CTR(뷰 대비 클릭 비율), 구매 전환율 지표로 확인이 가능합니다. 사용자에게 가능한 한 많은 상품을 보게 할 수 있고, 이런 것들이 모여 사용자를 재방문하게 합니다.

사용자를 사이트에 오게 하려면 광고를 진행하게 됩니다. 한번의 클릭이나 설치를 만드는 광고는 비용이 매우 비쌉니다. 이렇게 진입한 사용자에게 될 수 있으면 많은 상품을 보여주고, 가능한 많은 상품을 클릭하게 하며, 다음에도 재 방문하게 만드는 것이 매우 중요합니다. 추천 서비스는 처음 사이트 만들때부터 검색과 함께 고려되어 구현되어야 할 필요가 있습니다.

추천 지표로 효과를 확인하기

추천의 효과는 데이터로 확인할 수 있습니다. 마이리얼트립에서는 다음과 같은 지표를 꾸준히 트레이스하고 향상 시킬 수 있도록 노력하고 있습니다. 이중 핵심 지표는 CTR과 구매 전환율입니다.

  • CTR (뷰 대비 클릭 비율)
  • 구매 전환율(Conversion rate) : 클릭 후 구매가 발생한 비율
  • 경유 거래액 비중: 전체 대비 추천으로 인한 거래액의 비중
  • 노출 Coverage Rate: 전체 상품 대비 추천 서비스가 노출하는 상품 비율
  • Page View Attribution % : 상품 페이지 뷰에 대한 추천의 기여율
  • Retention Rate: 사이트 재 방문율

추천의 업데이트는 AB Test를 진행하고, AB Test에서는 이런 지표들을 확인합니다. 이 지표들이 기존보다 더 좋을 때만 업데이트 됩니다.

기존에 상품 페이지에서 ‘함께 본 상품(VT:Viewed Together)’ 위주로 상품이 추천되었던 마이리얼트립은 20년 초부터 개인화 추천이 본격적으로 적용되어 상품 페이지의 추천 유형의 추가와 품질 개선, 홈, 도시 페이지의 자동화 및 개인화가 진행되었습니다.

그 결과 상반기 기준 기존에 존재하던 섹션 대비 상품 페이지에서의 함께 본 상품(VT:Viewed Together)의 CTR(뷰 대비 클릭 비율)은 약 171% 상승, 홈의 최근 본 도시의 CTR(뷰 대비 클릭 비율)은 약 377% 상승, 도시 페이지의 개인화는 약 162% 상승하였습니다. 또한 마이리얼트립 사이트의 전체에 대한 추천의 기여도(Page View Attribution %) 역시 기존 3.5% 대비 20%로 약 471% 향상 되었습니다.

마이리얼트립은 앞으로도 사이트 전반적으로 고객이 원하는 상품을 쉽게 찾고 구매할 수 있도록 개인화 적용과 추천 품질 개선, 추천 서비스의 추가 및 개선을 위해 계속해서 노력할 예정입니다.

이 글은 추천 서비스와 아키텍처[2]-추천 서비스 제공을 위한 아키텍처로 이어집니다. 다음글에서는 이러한 추천 서비스를 좋은 구조로 구현하기 위한 추천 아키텍처에 대해 설명합니다.

--

--