협업 필터링 추천 쇼핑몰. Redis 캐시 일관성과 평점·리뷰·조회수 동시성을 PostgreSQL 잠금과 제약으로 제어한 2인 프로젝트입니다.
<aside>
📌
2026.01 ~ 2026.10 · 2인
</aside>
- 기술: Java 21, Spring Boot 3.4, PostgreSQL, Redis, Docker Compose, AWS EC2, GitHub Actions
- 담당: 추천 시스템·Redis 캐시, Spring Security·JWT 인증, 주문·리뷰·판매 통계 API, 인프라·배포
- 링크: 코드 · 트러블슈팅 문서
🔑 핵심 문제 해결
협업 필터링 추천
- ratings 셀프 조인 네이티브 쿼리로 유사 사용자 집계 (K=5)
- Cold Start는 인기 상품으로 대체
캐시 일관성
@Cacheable 추천 캐싱, 리뷰 변경 시 커밋 후 캐시 무효화 (TTL 1시간)
동시성 · 정합성
- 조회수 원자적 증가 — 동시 50건 → 50
- 평균 평점은
FOR NO KEY UPDATE 후 DB 집계 — 동시 20건 일치
- 주문당 리뷰 유니크 제약 → 409 — 동시 10건 중 1건
인증·배포
OncePerRequestFilter JWT 필터, 판매 통계는 판매자/관리자만 접근
- PostgreSQL·Redis·Spring Boot·Nginx를 Docker Compose로 EC2 배포, 멀티 스테이지 빌드