한쪽 분기만 번역되어 있었습니다
쇼츠를 자동으로 올리는 업로더는 영상마다 제목, 설명, 해시태그를 조립합니다. 영상 언어는 ko, en, ja 세 가지입니다. 문구는 언어별 사전(L10N)에서 가져옵니다.
해시태그 조립은 앱 종류에 따라 두 갈래로 나뉩니다. 웹앱이면 웹 분기, 네이티브 앱이면 is_web=False 분기를 탑니다. 웹 분기는 이미 언어를 따지고 있었습니다. 기본 태그는 언어에 맞춰 붙이고, 카테고리 태그(CAT_TAGS)는 한국어 영상에만 붙이는 식이었습니다.
네이티브 앱 분기는 그렇지 않았습니다. 언어와 관계없이 BASE_TAGS라는 기본 태그 한 벌을 그대로 붙였고, 이 태그는 한국어였습니다. 그래서 iOS 앱을 소개하는 영어·일본어 쇼츠에도 한국어 기본 해시태그가 붙어 나갈 수 있었습니다.
당신의 파이프라인에서 언어별 처리를 한 번 고쳤을 때, 같은 일을 하는 옆 분기에도 그 수정이 들어갔는지 확인하셨나요?
왜 눈에 띄지 않았나
에러가 날 이유가 없는 버그입니다. 해시태그는 문자열 목록이고, 한국어 문자열도 유효한 해시태그입니다. 업로드 API는 받아들이고, 영상은 정상적으로 올라갑니다. "태그가 붙었는가"를 검사하면 통과합니다. "이 영상 언어에 맞는 태그인가"는 아무도 묻지 않았습니다.
그리고 웹 분기에는 이미 언어별 처리가 들어가 있었습니다. 해시태그 언어 문제는 해결된 일처럼 보였습니다. 실제로는 두 분기 중 하나에만 적용되어 있었습니다.
당신이라면?
한국어 태그를 영어로 번역한 두 번째 상수를 하나 더 만드시겠습니까, 아니면 언어별 문구가 이미 모여 있는 곳에 태그를 넣으시겠습니까?
수정: 기본 태그를 언어 사전으로 옮겼습니다
새 상수를 만들지 않았습니다. 언어별 문구가 이미 모여 있는 L10N 사전의 각 언어(ko/en/ja)에 basetags 키를 추가했습니다. 네이티브 앱 분기는 이제 BASE_TAGS 대신 해당 언어의 basetags를 씁니다.
카테고리 태그는 웹 분기와 같은 규칙을 따르도록 맞췄습니다. CAT_TAGS는 한국어 영상에만 붙습니다. 두 분기가 같은 규칙을 쓰게 된 셈입니다.
회귀 테스트도 추가했습니다. 영어 iOS 앱과 한국어 iOS 앱의 메타데이터를 만들어서 각각 붙는 태그를 검증합니다. 전체 변경은 업로드 스크립트 8줄, 테스트 13줄입니다.
자가진단 체크리스트
- 언어별로 달라야 하는 값(태그, CTA 문구, 링크)이 언어 사전 밖에 상수로 남아 있지 않은가
- 웹/네이티브처럼 갈라지는 분기가 있을 때, 한쪽에 넣은 언어 처리가 다른 쪽에도 들어가 있는가
- 테스트가 "태그가 있다"만 보지 않고, 영어 영상에 한국어 태그가 없다는 것까지 확인하는가
솔직한 부분
이 수정 전에 영어·일본어 쇼츠 몇 편에 한국어 기본 태그가 실제로 붙어 나갔는지는 세어 보지 않았습니다. 이미 올라간 영상의 태그를 다시 고쳤다는 기록도 없습니다. 잘못된 언어의 해시태그가 노출이나 검색에 얼마나 영향을 줬는지도 모릅니다. 확실한 것은 구조적으로 그럴 수 있었다는 점, 이제는 두 분기가 같은 언어 사전을 본다는 점, 영어와 한국어 iOS 앱 케이스를 테스트가 지킨다는 점뿐입니다. 일본어 케이스는 이번 테스트에 들어가지 않았습니다.