룸톤 Roomtone TIL 6
듣는 사람을 세 갈래로 갈랐다
유료로 팔기로 한 이상, 누가 무엇까지 들을 수 있는지를 먼저 정해야 했다. 처음엔 「산 사람과 안 산 사람」 둘로 보면 될 줄 알았는데, 그러면 앱을 처음 열어 본 사람이 갈 데가 없다.
그래서 셋으로 갈랐다. 가입도 안 한 사람(둘러보기), 가입했지만 결제 안 한 사람, 결제한 사람이다. 앞의 둘은 곡마다 30초만 들리고 셋째만 전곡이 열린다.
둘이 아니라 셋인 게 중요한 이유는 가운데 칸이 판매 동선이기 때문이다. 가입은 했다는 건 관심이 있다는 뜻이고, 그 사람에게는 결제하러 갈 길을 계속 보여 줘야 한다. 나중에 무료 체험을 붙일 자리도 결국 이 칸이었다.
권한을 나눌 때 「되는 사람과 안 되는 사람」으로만 나누면, 아직 결정하지 않은 사람이 갈 곳이 사라진다.
결제 화면은 앱 안에 끼우지 않기로 했다
결제 페이지를 앱 화면 안에 끼워 넣으면 흐름이 끊기지 않아 보기에 좋다. 그런데 거기서 카드 번호를 넣는다.
앱 안의 창은 만드는 쪽이 얼마든지 손댈 수 있는 자리다. 쓰는 사람 입장에서는 주소창도 자물쇠도 안 보이니, 이게 진짜 결제사 화면인지 확인할 방법이 없다. 그래서 결제는 기기의 브라우저를 열어 거기서 하게 했다.
보기에 매끄러운 것과 믿을 수 있는 것이 부딪히면, 돈이 오가는 자리에서는 믿을 수 있는 쪽이 이긴다. 그 대신 잃는 매끄러움은 결제 뒤에 앱으로 잘 돌아오게 만들어 메우면 된다.
결제 알림은 로그인 밖에서 들어온다
결제가 끝났다는 사실은 사람이 앱에서 알려 주는 게 아니라, 결제 대행사 서버가 우리 서버로 직접 알려 준다(웹훅). 이 요청에는 로그인 정보가 없다. 우리 서버 입장에서는 로그인하지 않은 낯선 요청이 「돈이 들어왔으니 구독을 켜라」고 말하는 셈이다.
그래서 이 문은 로그인으로 지킬 수 없고, 보낸 쪽이 진짜 그 대행사인지를 따로 확인해야 한다. 대행사와 우리만 아는 값으로 보낸 내용을 검사해 맞을 때만 받아들인다.
여기서 배운 건 「로그인한 사람만 들어온다」는 가정이 서비스 전체에 통하지 않는다는 것이다. 바깥 회사와 연결되는 순간 로그인 없이 들어오는 문이 생기고, 그 문은 다른 방식으로 잠가야 한다. 결제를 붙인다는 건 기능 하나가 아니라 이런 문을 하나 여는 일이었다.
고친 곡이 계속 불량으로 잡혔다
끝이 뚝 잘린 곡을 찾아 페이드를 걸어 고쳤는데, 다시 검사하면 같은 곡이 또 걸렸다. 고친 게 반영이 안 된 줄 알았다.
원인은 검사가 보는 파일이 달랐던 것이다. 앞선 TIL 5에서 끝이 잘린 곡을 페이드로 고치기로 하면서 원본은 손대지 않고 따로 보관하기로 했는데, 페이드는 실제로 매장에 나가는 파일만 고친다. 검사는 그 원본을 보고 있었다. 원본은 영영 안 바뀌니 영영 잘린 곡이다.
검사 대상을 재생되는 파일로 바꾸니 고친 곡은 저절로 목록에서 빠졌다. 자동 검사를 믿기 전에 「그게 무엇을 보고 있나」를 먼저 확인해야 한다. 같은 곡이라도 원본과 실제로 쓰는 것이 다를 수 있고, 그 차이가 판정을 통째로 뒤집는다.
6분에서 잘린 곡을 검사가 놓쳤다
들어 보면 분명히 뚝 끊기는 곡인데 검사에 안 걸리는 게 있었다. 검사는 곡 맨 끝의 아주 짧은 순간만 보고 소리가 줄어드는지를 판정하고 있었는데, 음악 파일 맨 끝에는 만들 때 따라붙는 짧은 무음이 있다. 그 무음이 검사가 보는 구간을 덮어서 「조용해졌다」로 읽혔다.
보는 구간을 조금 넓히자 그 곡들이 드러났다. 고친 것은 판정 방법이 아니라 「얼마나 보고 판단하는가」였다.
자동 검사가 틀릴 때는 두 가지를 본다. 무엇을 보고 있나, 그리고 얼마나 보고 있나. 앞선 절의 원본 문제가 앞엣것이었고 이건 뒤엣것이다. 둘 다 방법을 바꾸지 않고도 결과가 달라진다.
검사가 인기 곡 순위를 흔들 뻔했다
곡을 검사하려면 곡을 받아 와야 한다. 그런데 룸톤은 곡을 받아 가는 순간을 재생 한 번으로 센다(앞선 TIL 1에서 정한 기준이다). 그 숫자가 인기 곡 정렬과 통계의 근거다. 수백 곡을 검사하면 그만큼 재생이 찍힌다.
그래서 검사가 쓰는 길은 재생 수를 올리지 않는 별도 통로로 뒀다. 기능이 하나 늘어난 게 아니라, 통계의 정의를 지킨 것이다.
무언가를 자동으로 여러 번 하는 도구를 만들 때는, 그 동작이 사람의 행동을 세는 숫자에 섞이는지 본다. 한 번 섞인 기록은 나중에 갈라낼 수 없다.
요약
- 권한은 「되는 사람·안 되는 사람」 둘이 아니라, 아직 결정하지 않은 사람의 칸을 두어 셋으로 나눈다. 그 칸이 판매 동선이다.
- 돈이 오가는 화면은 매끄러움보다 믿을 수 있는 쪽을 고른다. 결제는 앱 안이 아니라 기기 브라우저에서.
- 바깥 회사와 연결하면 로그인 없이 들어오는 문이 생긴다. 그 문은 다른 방식으로 잠가야 한다.
- 자동 검사가 틀리면 방법보다 「무엇을 보고 있나」와 「얼마나 보고 있나」를 먼저 본다.
- 자동으로 여러 번 도는 도구가 사람 행동을 세는 숫자에 섞이지 않게 한다. 섞인 기록은 갈라낼 수 없다.