앞의 일곱 절은 어떻게 만드는지에 관한 것이었습니다. 마지막은 잘 만들었는지 어떻게 아는지입니다. 순서에는 정답이 없어서 이 절이 없으면 나머지가 다 추측이 됩니다.
규칙 변경은 되돌릴 수 있게 넣는다
점수 규칙을 바꾸면 전체 사용자의 피드가 바뀝니다. 나빠졌는지 좋아졌는지는 바꿔 보기 전에는 알 수 없습니다.
그래서 일부에게만 새 규칙을 적용하고 두 집단을 비교합니다. 나쁘면 되돌립니다.
이것이 가능하려면 점수 규칙이 코드에 박혀 있지 않아야 합니다. 규칙을 데이터로 두고 사용자마다 어느 규칙을 쓸지 정할 수 있어야 합니다. 이 구조를 처음에 만들어 두지 않으면 나중에는 비교 없이 배포하게 됩니다.
어떤 지표를 보나
| 지표 | 성질 |
|---|---|
| 더 오래 보나 | 쉽게 오른다. 낚는 글에도 오른다 |
| 더 많이 누르나 | 쉽게 오른다. 자극적인 것에 오른다 |
| 다시 오나 | 늦게 나타나지만 속이기 어렵다 |
| 스스로 올리나 | 늦게 나타나고 속이기 어렵다 |
쉽게 오르는 지표만 보면 낚는 글을 상위로 올리게 됩니다. 자극적인 제목은 머문 시간과 누름을 즉시 올리고, 그것을 성공으로 읽으면 규칙이 그 방향으로 계속 갑니다.
그래서 오르기 쉬운 지표와 어려운 지표를 함께 봅니다. 둘이 같은 방향이면 진짜 개선이고, 앞의 것만 오르면 의심합니다.
점수가 그다음 데이터를 만든다
랭킹 피드에는 되먹임이 있습니다. 우리가 위에 올린 글이 더 많이 보이고, 그래서 반응을 더 받고, 그 반응 때문에 다음에도 위에 옵니다.
상위에 올린 것이 상위에 오를 근거를 만든다
이것을 그대로 두면 처음에 운 좋게 뽑힌 글만 계속 노출됩니다. 새 글과 조용한 계정의 글은 근거를 쌓을 기회를 못 얻습니다.
그래서 후보 목록 하나를 아직 보여준 적 없는 글에 씁니다. 앞 절에서 후보 기준을 여러 개 두기로 한 것이 여기서 다시 쓰입니다.
하지 않기로 한 것
| 뺀 것 | 이유 |
|---|---|
| 학습 모델로 점수 정하기 | 지금은 비교할 기준선이 없다. 규칙으로 기준선을 먼저 만든다 |
| 사용자에게 순서 선택권 주기 | 대부분은 고르지 않는다. 기본 순서를 잘 만드는 것이 먼저다 |
| 완전한 순서 일관성 | 여러 기기에서 같은 순서를 보장하려면 사전 계산을 포기해야 한다 |
| 실시간 반영 | 요구사항이 5분을 허용한다. 그 여유가 설계의 대부분을 가능하게 했다 |
마지막 항목이 이 아키타입의 요점입니다. 5분이라는 한 줄이 사전 계산, 주기 갱신, 근사 집계를 모두 허용했습니다. 실시간을 요구하면 여덟 절의 결론이 거의 다 바뀝니다.