테크포크 어플리케이션에서는 인기순 정렬을 위해 조회수 필드를 추가해야 했습니다.
조회수를 증가시키는 로직의 위치를
처음에는 게시글 상세조회 API에 넣으려고 했습니다만...
Query 로직이 Command 로직과 결합된다고 생각하여 따로 분리를 하고 싶었습니다.
Transactional 어노테이션의 read-only 속성을 제대로 활용하지 못한다는게 그 이유입니다.
그래서 기존에 읽은 시간을 저장하기 위한 읽은 게시글 저장 API가 있어
여기에서 조회수 증가 로직을 실행하는 것으로 결정했습니다.
이 경우 Command 로직이 응집되어 Query는 성능 최적화가 될 것이라 생각했습니다.
조회수를 늘리는 것에서 중복 허용에 대한 좀 고민이 있었는데,
한 사용자가 한 게시글에 대해 중복해서 조회수를 늘리는 것은 막도록 코드를 구성했습니다.
조회수는 온전히 얼마나 사용자들이 관심이 있는지를 판단하는 척도로 두고자 하였고,
사용자의 읽은 기록을 관리하는 엔티티로 중복된 접근에 대해 기록하고자 했습니다.
이때 그럼 읽은 기록을 가지고 Count 쿼리로 조회수를 체크해도 괜찮지 않을까라는 의문도 들었지만
반정규화하는쪽이 Query의 성능이 높아질 것이라 판단해 이대로 구현을 진행했습니다.
내일은 작성한 코드에 대한 테스트코드를 짜보려고 합니다!
기존에 학기중에는 구현에 집중하느라 테스트없이 진행했는데, 이게 안정성 측면에서 너무 취약한 것 같다고 생각이 들었습니다.
'프로젝트 > Techfork' 카테고리의 다른 글
| [26/01/01] 오늘의 개발 일지 - OCI 서버 배포 완료 (0) | 2026.01.01 |
|---|---|
| [25/12/31] 오늘의 개발 일지 - Oracle Cloud Infrastructure 가입! (0) | 2026.01.01 |
| [25/12/30] 오늘의 개발 일지 - 테스트 컨테이너 스프링 빈으로 변경 (0) | 2025.12.31 |
| [25/12/27] 오늘의 개발 일지 - 테스트 환경 구성 (0) | 2025.12.30 |
| [25/12/26] 오늘의 개발 일지 - 테스트 코드 작성 (0) | 2025.12.27 |