미국 프붕이의 땔깜 썰임.
전에 음악 퍼블리싱 기업에서 스트리밍 플랫폼 개발하는데 추천엔진쪽 인력 뽑으려고 하는지 스타트업들 끌어 모아서 내부 프로젝트/대회를 열었었음. 그 다섯팀 중에 한팀으로 초청 받게됨. 실시간 유저 로그에 참가자들한테 액세스 주고, 걔네 트래픽의 일부를 5등분해서 유저한테 보여주는 컨텐츠를 참가자들이 준비한 API에 콜 보내서 채움.
평가방식은 2주일 동안 유저들이 앱 내부에서 좋아요/싫어요라고 인식되는 동작 횟수를 기반으로 점수 제일 높은 팀이 이기는 걸로함. 팀들이 준비해온 모델들 프로덕션에 올리면서 테스트 시작됐는데 우리 트래픽에서 나오는 로그에 기이한 현상이 일어남. 모든 유저를 상대로 무조건 1순위로 추천되는 곡이 있었던거 (유행도 아닌 철 지난 곡임).
왜 그런가했더니 곡 제목이 "Infinity" 였음. 추천 가능한 컨텐츠 회수하고 유저 데이터랑 병합해서 점수 먹이는 과정에 왜 이렇게 처리했는지는 모르겠는데 제목을 소수점으로 변환하고, 변환 실패시 0.0을 반환하고 제목은 처리하지 말라는 의미로 무효 처리하기 위해 가중치를 0.0으로 고정해둔 상태였고. 결국 그 노래 제목은 Infinity*0 처리해서 NaN을 내뱉고 최종 점수는 무조건 NaN을 받게됨. 안타깝게도 자바의 정렬을 끌어다 써서 그런건지는 모르겠는데 스칼라의 정렬 또한 NaN을 Infinity과 자기 자신을 포함해서 가장 큰 숫자 취급함. 덕분에 정렬처리할 때 무조건 1등 먹었고 계속 나타났던거.
땔깜 팀다운 못 말리는 일이었지만 철 지난 음악이 실시간 상승 50위권에 들어온거 보고 비록 민폐를 끼쳤지만 우리가 사람들의 삶을 바꾸었다고 좆부심을 느끼면서 얼른 고침.
재밌는 버그네요 ㅋㅋㅋㅋ
이런글이 개추를 못받다니