점수에는 반응 수가 들어갑니다. 그 숫자를 어떻게 얻는지가 이 절입니다. 겉보기에는 세기만 하면 되는데, 소셜 피드 규모에서는 그 세기가 가장 뜨거운 지점이 됩니다.
뜨거운 글 하나가 병목이 된다
인기 있는 글에는 초당 수천 개의 반응이 붙습니다. 그 숫자를 정확히 세려면 모두가 같은 한 줄을 차례로 고쳐야 합니다. 그 줄이 그 순간의 병목입니다.
일반적인 조회 쏠림은 뜨거운 키와 조회 쏠림에서 다뤘습니다. 여기서 다른 점은 쏠림이 읽기가 아니라 쓰기이고, 그래서 사본을 늘려도 해결되지 않는다는 것입니다.
그런데 그 정확도가 필요하지 않다
점수에서 반응 수는 범위를 좁혀서 씁니다. 그래서 1만과 1만 50은 같은 순서를 만듭니다.
| 값 | 점수 기여 | 순서 |
|---|---|---|
| 반응 1만 | 거의 같다 | 같다 |
| 반응 1만 50 | 거의 같다 | 같다 |
즉 순서를 바꾸지 않는 정확도에는 값을 치르지 않습니다. 이 판단이 있으면 세는 방법이 크게 달라집니다.
여러 곳에서 따로 세고 주기적으로 합친다
합치기 전 값은 실제보다 작지만 순서가 같다
화면에 보여줄 숫자는 다르다
같은 반응 수인데 쓰임이 두 가지입니다.
| 쓰임 | 필요한 성질 |
|---|---|
| 점수 계산 | 근사면 된다. 늦어도 된다 |
| 글 아래 표시 | 사용자가 자기 반응을 바로 봐야 한다 |
두 번째만 즉시성이 필요합니다. 그리고 그것은 전체 정확도가 아니라 자기가 누른 것이 반영되어 보이는 것입니다. 자기 반응은 클라이언트가 화면에서 바로 더해 보여주고, 전체 수는 조금 늦게 맞으면 됩니다.
이 구분을 하지 않으면 점수용 집계에 즉시성을 요구하게 되고, 그러면 뜨거운 글에서 다시 한 줄 병목으로 돌아갑니다.
신호를 그대로 믿지 않는다
집계 값은 조작될 수 있습니다. 반응이 많으면 상위에 오는 구조를 알면 반응을 만들어 내려는 시도가 생깁니다.
| 신호 | 조작 난이도 |
|---|---|
| 조회 수 | 쉽다 |
| 좋아요 수 | 계정이 있으면 쉽다 |
| 오래 머문 시간 | 어렵지만 낚는 제목으로 올릴 수 있다 |
| 다시 찾아오기 | 어렵다 |
그래서 여러 신호를 함께 보고, 한 신호에 큰 무게를 주지 않습니다. 그리고 짧은 시간에 비정상적으로 몰린 반응은 무게를 낮춰 셉니다. 정상적인 확산과 조작의 차이는 대개 속도와 출처의 다양성에서 드러납니다.