배경


조회수의 역할은 소설의 일일 조회 BEST 순위를 책정할 때 쓰입니다. 실시간으로 정확한 조회수를 보여줘야 하는 서비스에서는 조회수의 역할이 중요하겠지만, 소설을 읽는 독자들은 내가 읽는 소설의 조회수가 정확히 몇 인지에 대해서는 고려하지 않습니다.

조회수를 증가시키기 위해서는 UPDATE 쿼리를 이용하여 조회수를 증가시켜야 합니다.

1. 조회수를 올리는 가장 간단한 방법


가장 간단한 방법은 위에서도 말했듯이 UPDATE문을 통해 조회된 소설의 ID로 소설 엔티티의 조회수를 +1 해주면 되는 것 입니다. 하지만 이 간단한 방법도 대용량 트래픽에서는 고려야 할 점이 생길 것 같습니다.

동시성 문제


조회수는 홈 화면에 노출되는 일일 조회 BEST 탭에 영향을 주기 때문에 하나의 조회수라도 소실되면 안됩니다. 그렇기 때문에 동시에 조회되는 경우를 생각해야 하는데요.

동시에 하나의 소설에 30개의 조회 요청이 들어온다면 해당 소설의 조회수를 30만큼 증가시켜야 합니다. 하지만 동시성 문제 때문에 조회수가 누락됩니다. 이 문제를 해결하기 위해서는 Lock이 필요합니다.

낙관적 Lock VS 비관적 Lock


<aside> 💡 낙관적인 Lock 과 비관적인 Lock에 대한 설명은

어떻게 여러 요청이 들어오면 한 가지 요청만 승인할까?

페이지를 참고해주세요 😊

</aside>

여러 요청이 들어왔을 때, 맨 처음 요청만 올바르게 처리하고, 그 뒤의 요청은 ROLLBACK 시키는 방법은 낙관적인 Lock을 사용하여 처리했다.