[팁]추천수와 댓글수는 어디서 계산해야 할까요?
게시글 옆의 숫자는 작아 보이지만 여러 사람이 동시에 쓰기 시작하면 쉽게 어긋납니다. 특히 브라우저가 “현재 값에 1을 더한 결과”를 직접 저장하는 방식은 신뢰하기 어렵습니다.
동시에 두 사람이 추천하면
현재 추천수: 10
A가 읽은 값: 10 → 11로 저장
B가 읽은 값: 10 → 11로 저장
기대한 추천수: 12
마지막으로 저장된 값: 11
이 예시는 동시성 문제를 설명하기 위한 것입니다. 브라우저의 숫자가 최신이라는 보장도 없고, 사용자가 요청 본문을 바꿀 가능성도 고려해야 합니다.
먼저 기준이 되는 기록을 정합니다
추천이라면 누가 어떤 글을 추천했는지 기록하고, 같은 계정의 중복 추천을 제한하는 구조가 필요합니다. 댓글이라면 실제 댓글의 생성·삭제와 공개 상태가 집계 기준에 맞게 반영되어야 합니다.
화면에 숫자를 어떻게 빨리 보여줄지와 최종적으로 어떤 기록을 신뢰할지는 별도로 정합니다. 임시로 먼저 표시한 수치가 있다면 실패 시 되돌리는 처리도 필요합니다.
Builders Korea에서는
추천과 댓글의 원본 기록을 기준으로 데이터베이스 트리거가 보호된 집계값을 갱신하도록 했습니다. 일반 회원이 글 수정 요청에 추천수나 댓글수를 포함하더라도 그 값을 그대로 반영하지 않도록 보호했습니다. 자기 글 추천도 데이터베이스에서 막습니다.
조회수는 다른 기준을 씁니다. 같은 방문자가 새로고침할 때마다 무조건 늘리지 않도록 서버에서 방문 기준을 만들어 중복을 줄였습니다. 조회수와 추천수는 의미가 다르므로 같은 방법으로 처리하지 않았습니다.
꼭 확인할 시나리오
- 다른 두 계정이 거의 동시에 추천한다.
- 추천을 취소했다가 다시 추천한다.
- 댓글을 추가하고 삭제한다.
- 실패한 요청을 다시 보낸다.
- 글 수정 요청에 임의의 집계값을 넣어본다.
표시 숫자가 그럴듯한지보다 원본 기록과 일치하는지 확인하세요. 출시 전에는 빈 게시판뿐 아니라 동시에 여러 요청이 생길 수 있는 상황도 작게 재현해보는 편이 좋습니다.
댓글 0
불러오는 중…
댓글을 쓰려면 로그인해 주세요.