개발자
안녕하세요! 커뮤니티 서비스를 개발하면서 조회수 증가에 대한 로직에 대한 고민이 생겨 이렇게 글을 작성하게 되었습니다. 현재 Redis를 활용하여 게시글 조회에 대한 카운팅을 수행하고 이를 일정 주기마다 DB에 반영하도록 했는데 이렇게 되면 조회수를 실시간적으로 사용자에게 보여주지 못하는 구멍이 생겨 이를 보완하고자 다음 두가지 방법을 고려해봤습니다. 1. 현재 설정한 주기보다 더 빠르게 반영하도록 해서 비교적 실시간과 가까운 결과를 반영한다. 2. 게시글 조회수에 대한 정보가 필요할 때 마다 Redis에 저장된 카운팅을 가져와 이를 더한 값을 반환해준다. 입니다. 개인적으론 조회수가 정말 실시간성이 필요한 부분인가에 대한 고민도 있고, 현업에서는 이와 같은 부분들을 어떻게 해결해나가는지 궁금하기도 합니다!! 마지막으로 긴 글 읽어주셔서 감사합니다 😀
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 08월 10일
안녕하세요! 먼저 고민을 공유해주셔서 감사합니다. 조회수 반영에 있어서 실시간성이 중요한지에 대해서는 해당 서비스의 특성과 사용자의 요구사항 등을 고려해야 합니다. 실시간성이 필요하다면, 이는 추가적인 비용(리소스 사용량 증가)을 수반할 수 있으니 이 점 알고계시면 좋습니다. 두 가지 방법 모두 장단점이 있습니다. 1번 방법은 주기를 빠르게 하여 DB에 반영함으로써 사용자에게 비교적 실시간과 가까운 결과를 보여줄 수 있지만, 이 경우 리소스(네트워크, CPU 등) 소모가 커질 수 있습니다. 2번 방법은 Redis의 카운테ィ를 가져와 합산하는 것으로, 조회수 데이터가 필요할 때마다 실시간으로 값을 가져오므로 사용자에게 실시간 정보를 제공할 수 있다는 장점이 있습니다. 하지만 이 경우 Redis에서 데이터를 가져오는 작업이 빈번히 발생하므로 Redis 서버에 부하가 발생할 가능성이 있습니다. 따라서 어떠한 방식을 선택할 지 결정하기 위해서는 서비스의 특성을 고려하고, 원하는 성능 목표를 설정하고, 이를 테스트해보며 가장 적합한 방식을 선택하는 것이 좋습니다. 마지막으로 현업에서는 이와 같은 문제를 어떻게 해결하는가에 대한 답변입니다. 현업에서는 다양한 방법을 사용하고 있습니다. 일부 서비스에서는 조회수의 정확한 실시간 성이 중요하지 않기 때문에 일정 주기로 DB에 반영하는 방법을 사용할 수 있습니다. 반면, 실시간성이 중요한 서비스에서는 메모리 캐시(Redis 등)를 활용하여 조회수 정보를 관리하기도 합니다. 대체로 많은 커뮤니티 사이트들이 비교적 빠른 업데이트 속도(5분 ~ 10분 주기)와 요구되는 리소스 사이에서 균형을 찾으려고 노력합니다. 분산 카운팅 시스템을 도입하는 경우도 있는데, 이런 시스템은 여러 서버가 조회수 등의 카운트를 관리하면서도 한번에 결과 값을 계산해서 제공할 수 있게 해줍니다. 너의 고민에 도움이 되길 바랍니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!