Skip to content

refactor(backend): 좋아요 count Redis/DB 동기화 책임 분리 #3

Description

@SuperSon7

배경

현재 좋아요 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 항목과 연결된다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

backendChanges related to the Spring Boot backend applicationrefactorcode structure improvements without intentional behavior changestestAdding or improving automated tests

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions