배경
현재 좋아요 count 처리는 Redis 캐시와 DB 값의 동기화 책임이 서비스 흐름 안에 섞여 있고, 캐시가 비어 있을 때 DB 값을 다시 읽어 복구하는 fallback 경로가 부족하다.
관련 TODO:
LikeService: Redis와 DB 동기화 오류 가능성
- 캐시 미스 시 DB fallback 부재
- 게시글/댓글 count 계열 로직이 서비스 내부에 흩어지는 문제
목표
좋아요 count 읽기/쓰기와 Redis-DB 동기화 규칙을 명확한 컴포넌트로 분리한다.
후보 컴포넌트:
LikeCountCache: Redis에서 좋아요 count를 읽고 쓰는 책임
LikeCountSynchronizer: Redis count를 DB와 동기화하는 책임
작업 범위
- 현재
LikeService와 관련 batch/scheduler 흐름 점검
- 캐시 미스 시 DB fallback 정책 정의
- 좋아요 추가/취소 시 Redis count와 DB 정합성 보장 방식 정리
- 기존 동작을 보호하는 테스트 추가
- 필요하면 scheduler/batch 쪽 동기화 책임을 별도 컴포넌트로 이동
검증 기준
- 캐시가 존재할 때 Redis 값을 기준으로 정상 응답한다.
- 캐시가 없을 때 DB 값으로 fallback 하고 Redis를 복구할 수 있다.
- 좋아요 추가/취소 후 count가 음수나 중복 증가 상태로 흐르지 않는다.
- 동기화 컴포넌트는 서비스 use case와 분리되어 단위 테스트 가능하다.
참고
리팩터링 원칙 문서의 backend extraction candidate 중 LikeCountCache, LikeCountSynchronizer 항목과 연결된다.
배경
현재 좋아요 count 처리는 Redis 캐시와 DB 값의 동기화 책임이 서비스 흐름 안에 섞여 있고, 캐시가 비어 있을 때 DB 값을 다시 읽어 복구하는 fallback 경로가 부족하다.
관련 TODO:
LikeService: Redis와 DB 동기화 오류 가능성목표
좋아요 count 읽기/쓰기와 Redis-DB 동기화 규칙을 명확한 컴포넌트로 분리한다.
후보 컴포넌트:
LikeCountCache: Redis에서 좋아요 count를 읽고 쓰는 책임LikeCountSynchronizer: Redis count를 DB와 동기화하는 책임작업 범위
LikeService와 관련 batch/scheduler 흐름 점검검증 기준
참고
리팩터링 원칙 문서의 backend extraction candidate 중
LikeCountCache,LikeCountSynchronizer항목과 연결된다.