같은 순서, 다른 시장
제 콘텐츠 엔진에는 성격·궁합 같은 장르를 하나씩 돌아가며 게시하는 로테이션이 있습니다. 언어마다 진행 위치는 따로 저장하지만, 장르를 도는 순서 자체는 하나였습니다. 코드에 등록된 순서(REGISTRY, MATCH)를 모든 언어가 그대로 따랐습니다.
일본어 쪽 수치를 장르별로 나눠 보고 나서야 문제가 보였습니다. 干支占い(띠 운세)는 1418뷰, 星座(별자리)는 225뷰였습니다. 같은 로테이션 안에서 動物顔(동물상)은 15뷰, 血液型(혈액형)은 2뷰에 그쳤습니다. 같은 엔진에서 같은 방식으로 만든 콘텐츠인데 시장 반응은 장르별로 크게 갈렸습니다.
그런데도 로테이션은 이 차이를 모른 채 한국어·영어와 같은 순서로 일본어 장르를 소비하고 있었습니다. 1418뷰짜리 장르와 2뷰짜리 장르가 똑같은 대우를 받으며 차례를 기다리고 있었던 셈입니다.
여러분의 다국어 파이프라인은 언어마다 큐의 순서도 따로 갖고 있나요, 아니면 번역만 따로 하고 순서는 하나를 공유하나요?
처음 떠오른 해법은 쓸모가 없었다
가장 먼저 떠오른 건 반복 가중치였습니다. 잘 되는 장르를 로테이션에 두세 번 넣어서 더 자주 나오게 하는 방식입니다.
하지만 이 엔진에서는 의미가 없었습니다. 장르마다 소재 그룹이 유한하고, 이미 게시한 항목은 published.json으로 중복을 거릅니다. 같은 장르가 로테이션에 여러 번 등장해도 실제로 꺼낼 수 있는 새 항목의 총량은 늘지 않습니다. 가중치를 올리면 같은 그룹을 더 빨리 소진할 뿐이고, 소진 뒤에 돌아오는 차례는 dedup에 걸려 건너뛰게 됩니다. 반복은 양을 늘리지 못하고 시점만 앞당깁니다.
그렇다면 실제로 조정할 수 있는 건 순서, 즉 무엇을 먼저 쓰느냐뿐이었습니다.
당신이라면? 가중치를 올려서 더 많이 내보내겠습니까, 아니면 순서만 바꿔서 먼저 내보내겠습니까?
바꾼 것: 언어별 순서표 하나
rotation.py와 rotation_match.py 두 파일에 언어별 순서표인 LANG_APP_ORDER와 언어를 받아 순서를 돌려주는 _order_for(lang)를 추가했습니다. 변경은 두 파일 합쳐 33줄 추가, 4줄 삭제였습니다.
일본어 성격 로테이션에서는 干支(ddi)와 星座(zodiac)를 앞으로, 動物顔(animalface)와 血液型(bloodtype)을 뒤로 옮겼습니다. 일본어 궁합 로테이션에서는 干支相性을 맨 앞에 두었습니다. 띠 12개로 만들 수 있는 조합이 78쌍이라 한동안은 이 장르로 꾸준히 물량을 낼 수 있다고 판단했습니다.
한국어와 영어의 순서는 하나도 바꾸지 않았습니다. 순서표에 없는 언어는 기존 REGISTRY/MATCH 순서를 그대로 씁니다. 언어별 진행 인덱스를 저장하는 상태 형식도 그대로 두어 기존 상태 파일과 호환되게 했습니다. 한 시장의 데이터로 다른 시장의 순서까지 건드리지 않으려는 의도였습니다.
자가진단 체크리스트
- 다국어 큐나 로테이션에서 언어별 진행 위치뿐 아니라 순서 자체도 언어별로 바꿀 수 있나요?
- 성과를 언어 단위가 아니라 언어×장르 단위로 나눠 본 적이 있나요?
- 소재가 유한하고 dedup이 있는 구조에서 가중치를 올리면 총량이 늘어나는지, 소진만 빨라지는지 확인했나요?
솔직한 부분
이번 변경은 순서만 바꿉니다. 일본어로 내보낼 수 있는 干支·星座 콘텐츠의 총량은 그대로이고, 78쌍을 다 쓰고 나면 뒤로 미뤄 둔 장르가 다시 나옵니다. 1418뷰와 225뷰가 장르 자체의 힘인지, 몇몇 게시물이 끌어올린 수치인지는 제가 남긴 기록만으로는 구분할 수 없습니다. 장르별 게시 개수도 함께 적어 두지 않았습니다. 상태 형식은 유지했지만, 순서가 바뀐 시점에 일본어 쪽에서 건너뛰거나 겹친 항목이 있었는지도 확인한 기록이 없습니다. 바꾼 순서가 실제로 일본어 쪽 조회수를 바꿨는지는 아직 측정하지 않았습니다.