플레이스토어 시절, 두 개의 민원에서 시작된 과제 하나를 풀어 본다. 글로벌하게 유명하다는 이유만으로 한국 화면 위쪽에 올라오던 앱들을 두고, 인기 점수를 나라와 언어로 쪼개 보던 이야기다.
한국의 비즈니스 팀은 한국 개발사들을 고객으로 두고 있었는데, 피드백 중에 스토어가 자꾸, 그것도 강하게 WhatsApp을 여기저기에서 추천하고 있다는 것이었다. 알다시피 그때나 지금이나 한국은 카카오톡이 지배하는 나라이고, 양보해서 인스타그램, 페이스북, 트위터, 라인까지는 그렇다 쳐도, 한국 사용자의 화면에 왓츠앱이 자꾸 올라올 이유는 없었다. 글로벌하게 유명한 앱이, 다른 나라들에서 유명하다는 이유만으로 현지에 떠야 하는가 — 이 질문이 과제의 시작이었다.
한국과 일본 사정을 잘 모르는 영어 위주의 미국 본사에서는 이 문제가 얼른 실감되지 않는 눈치였는데, 비슷한 시기에 정확히 같은 일이 본사에서도 일어났다. 미국 비즈니스 팀의 고객인 우버와 Lyft에서 똑같은 피드백이 올라왔는데, Easy Taxi가 미국에서 우버보다 위에 나온다고 했다. Easy Taxi는 브라질과 중남미에서 크던 앱이라 그쪽 사용자 수가 미국 사용자 수를 압도했고, 게다가 어느 나라에서든 쓸 수라도 있는 왓츠앱에 비해, 이 앱은 당시 미국에서는 쓸 수조차 없었다. 3억의 인구로도 피해갈 수 없던 셈이다.
과제의 이름을 두고(이름 정하는 건 언제나 어렵다) country-slicing이니 language-slicing이니 하다가 locale-aware로 진행하게 되었다. 하려는 일 자체는 명료했고, 자유로운 웹보다는 사용자가 명확한 플레이스토어여서 조금 더 욕심을 부려 촘촘하게 가져가려 했었다. 인기와 관련된 점수들 — 클릭, 설치, 그리고 설치 후 실제로 쓰이는가를 보는 good install까지 — 를 전부 locale로 나누어 적용하고 랭킹 공식을 다시 잡는 것. 그런데 구현에 들어가자 욕심이 과한 게 바로 부작용으로 나타났다. 사용자들이 마흔 개가 넘는 언어와 백 개가 넘는 나라에 걸쳐 있으니 그 조합마다 점수를 저장하고 계산해야 했고, retrieval 비용과 latency가 함께 올라갔다. 갑자기 x4000이 되었으니 인프라 팀에서 반대 의견이 왔다 — 저장은 OK, hot-path에서 계산은 NO.
오프라인으로 진행한 검색과 추천의 품질 검사 결과는 다행히 나아졌고, 풀려고 하는 문제는 풀린다는 게 확인되었기에, 나머지 엔지니어링 최적화는 그리 어렵지 않은 trade-off로 정리할 수 있었다. 모든 locale을 다 나누는 대신 각 앱별로 상위 5~10개 locale을 미리 정해 놓고 나누어 결과를 비교하며 성능을 끌어올리는 것. 그렇게 약간의 비용 추가로 구현이 되었고, 하던 공식대로 인덱스를 먼저 내보내고 바이너리를 dark launch로 깔아 둔 뒤 여러 가지 라이브 실험들을 해 보며 지켜보는 순서로 런치가 진행됐다.
결과는 절반의 성공이었다. categorical query — '메신저'나 '택시' 같은 부류 검색 — 에서는 결과가 다소 나아졌고 navigational query에는 부정적 영향이 없었으며, 추천의 후보군에서 현지 사용자들이 보기에 엉뚱한 앱들이 많이 사라졌다. 보기에 편안해진 면이 있지만 실제 클릭이 늘지는 않았는데, 이는 품질 낮은 결과들을 내려보낼 때 보이는 일반적인 증상과 닿아 있다. 돌아보면 왓츠앱을 밀어 올리던 global popularity도, 쓸 수 없는 앱을 화면에 보여 주려던 availability의 문제도 어느 정도는 다스려진 셈이다. 다만 그 대가도 함께 왔는데, 한 나라에서 유명해진 앱이 새로운 나라에 뒤늦게 출시되는 경우에 이전에 가지고 있던 이점들이 사라지는 등 새로운 이슈들이 생기게 되었다.
나라를 나누는 일을 하다 보면 나라마다 다른 것만 눈에 들어올 것 같지만, 정작 받아들이기 어려웠던 건 반대쪽이었다. 매출 차트를 빼고 보면 '게임'이라는 쿼리의 상단에 오래 머무는 것들은 대형 게임사의 대작이 아니라 slither.io나 arrow.io 같은 캐주얼 게임들이었는데, 어느 나라에서든 그랬다. 실험을 여러 번 돌려 봐도 마찬가지였다. 사용자가 스토어에 '게임'이라고 검색할 때는 유명한 것을 찾는 게 아니라 지금 간단히 해 볼 것을 찾더라는 사실이 전 세계 공통이더라는 것 — 나라마다 다른 것을 찾아 랭킹에 새겨 넣던 과제에서, 제일 오래 걸린 건 그 똑같음을 받아들이는 일이었다. 많은 블록버스터 게임들이 지하철역의 광고판을 통해 검색되고 유통되는 동안, 스토어는 제대로 일을 못하고 있는 게 아닌가 하는 죄책감 같은 것도 있었고, 내 선입견을 데이터에 맞춰 고쳐 넣는 일이, 랭킹에 나라를 새겨 넣는 일보다 어려웠는지도 모르겠다.
이는 일이었다. 많은 블록버스터 게임들이 지하철역의 광고판을 통해 검색되고 유통되는 동안, 스토어는 제대로 일을 못하고 있는 게 아닌가 하는 죄책감 같은 것도 있었고, 내 선입견을 데이터에 맞춰 고쳐 넣는 일이, 랭킹에 나라를 새겨 넣는 일보다 어려웠는지도 모르겠다.
이 글은 '나라와 언어 사이'라는 연작의 한 편입니다. 원문과 나머지 편은 브런치에 있습니다 → https://brunch.co.kr/@chaesang/200