숫자는 틀렸지만 그럴듯해 보였습니다
소셜 대시보드에 Threads 조회수 칸이 있었습니다. 표시된 값은 약 5천이었습니다. 그런데 Threads 프로필에 보이는 전체 조회수는 약 5만이었습니다. 대시보드가 실제의 10분의 1만 보여주고 있었습니다.
까다로웠던 건 5천이라는 숫자가 틀려 보이지 않았다는 점입니다. 충분히 있을 법한 범위여서 프로필과 나란히 놓고 보기 전에는 의심할 이유가 없었습니다.
당신의 대시보드에 있는 '총합'은 정확히 무엇의 총합인가요? 플랫폼이 직접 보여주는 숫자와 마지막으로 맞춰 본 건 언제인가요?
원인: 최근 25개만 더하고 있었습니다
기존 구현은 최근 게시물 25개를 가져와 게시물마다 조회수 인사이트를 하나씩 조회하고 합산했습니다. 칸 이름은 '조회수'였지만 실제로는 '최근 25개 게시물의 조회수 합'이었습니다. 그보다 오래된 게시물의 조회수는 처음부터 집계 범위 밖이었습니다.
두 번째 증상: 새로고침할 때마다 숫자가 흔들렸습니다
게시물 단위 인사이트를 25번씩 호출하다 보니 새로고침할 때마다 그중 일부가 실패했습니다. 실패한 게시물은 합계에서 빠졌고, 그래서 새로고침할 때마다 숫자가 깜빡이듯 달라졌습니다. 범위가 좁다는 문제와는 별개로, 같은 질문에 매번 다른 답을 내는 숫자였습니다.
돌아보면 두 증상은 같은 설계에서 나왔습니다. '이 계정은 지금까지 몇 번 조회됐나'라는 계정 단위 질문에 게시물 단위 데이터를 이어 붙여 답하려 했던 것입니다.
당신이라면? 페이지를 더 넘겨 25개를 전체로 늘리고 실패한 호출에 재시도를 붙이겠습니까, 아니면 질문의 단위에 맞는 데이터 소스를 찾겠습니까?
수정: 계정 인사이트로 교체
게시물 합산을 버리고 계정 단위 인사이트를 쓰도록 바꿨습니다. 계정 누적 views, likes, replies, reposts를 한 번에 받아옵니다. 변경 범위는 대시보드 파일 하나, 6줄 추가와 6줄 삭제였습니다.
바꾼 뒤 조회수는 51,512로 나왔고, 프로필에 보이는 숫자와 일치했습니다. 게시물 수만큼 호출을 나누지 않으니 새로고침할 때마다 흔들리던 현상도 사라졌습니다.
자가진단 체크리스트
- 대시보드의 합계 숫자를 플랫폼 화면에 있는 같은 지표와 직접 비교해 본 적이 있는가
- 합계가 '최근 N개'나 '첫 페이지' 같은 숨은 범위 제한 위에서 계산되고 있지는 않은가
- 개별 호출 중 일부가 실패하면 오류 없이 작아진 숫자만 조용히 표시되는 구조는 아닌가
솔직한 부분
이 숫자가 언제부터 10분의 1이었는지, 그동안 이 값을 근거로 어떤 판단을 내렸는지는 기록에 없어서 말씀드릴 수 없습니다. 게시물별 인사이트 호출이 왜 일부 실패했는지도 따로 파고들지 않았습니다. 계정 인사이트로 우회했을 뿐입니다. 계정 누적값이 프로필 숫자와 맞는다는 건 확인했지만, 플랫폼 내부에서 이 값을 어떻게 집계하는지는 모릅니다. 그리고 게시물별 성과를 비교해야 할 때가 오면, 게시물 단위 호출과 그 실패 처리 문제를 다시 마주하게 될 겁니다.