Skip to content

refactor/45 - 단건검증에도 캐시 도입 - #46

Merged
ji-circle merged 2 commits into
devfrom
refactor/45-validate-cache
May 18, 2026
Merged

ji-circle merged 2 commits into
devfrom
refactor/45-validate-cache

Conversation

@ji-circle

@ji-circle ji-circle commented May 18, 2026

Copy link
Copy Markdown
Contributor

📝 작업 내용

이번 PR에서 작업한 내용을 설명해주세요.

  • 주문 생성에서 사용되는 카탈로그 단건 검증에 캐시 도입

🚀 주요 변경 사항

완료한 이슈 번호
Close #45
관련된 이슈 번호 (닫고 싶지 않은 경우)
Related to #

✅ 자체 체크리스트 (필수)

  • ./gradlew build 실행 결과 정상 (인증샷 첨부)
  • IntelliJ HTTP Client 테스트 완료 (인증샷 첨부)
  • 팀 내 컨벤션 준수 및 불필요한 로그, import 제거
  • 중요한 변경 사항이 팀에 공유되었는지

📸 테스트 인증샷

빌드 결과 및 IntelliJ HTTP Client 실행 화면을 여기에 첨부해 주세요.

스크린샷 2026-05-18 오후 6 09 21

💬 리뷰어 전달사항 (선택)

특별히 봐주었으면 하는 부분이나 논의가 필요한 점을 적어주세요.



📎 참고 자료

관련 문서, 레퍼런스 링크 등이 있다면 여기에 첨부해주세요.

Summary by CodeRabbit

  • 성능 개선

    • 옵션 유효성 검증 결과를 옵션 단위로 캐싱해 조회 성능 향상
    • 상품 상세 캐시 직렬화 방식 개선으로 안정적 로딩 성능 향상
  • 개선 사항

    • 옵션 검증 전용 캐시 분리로 직렬화 안전성 강화
    • 상품 생성/업데이트/상태 변경 시 관련 캐시들을 보다 포괄적으로 동기화하여 데이터 일관성 개선

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 011d173e-8b40-4340-a230-f40ff9590821

📥 Commits

Reviewing files that changed from the base of the PR and between 542cbef and 647ccad.

📒 Files selected for processing (3)
  • src/main/java/com/michelet/catalog/application/ProductViewQueryService.java
  • src/main/java/com/michelet/catalog/infrastructure/config/RedisCacheConfig.java
  • src/main/java/com/michelet/catalog/infrastructure/messaging/ProductEventConsumer.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/main/java/com/michelet/catalog/application/ProductViewQueryService.java

📝 Walkthrough

Walkthrough

상품 옵션 검증 결과를 옵션 단위(product_validate_cache)로 캐싱하고, Redis 직렬화 구성을 다형성 기본 캐시와 OptionValidationResponse 전용 캐시로 분리했으며, Kafka 이벤트 소비자에서 검증 캐시까지 포함하도록 캐시 무효화 범위를 확대했습니다.

Changes

옵션 검증 캐시 및 관련 구성

Layer / File(s) Summary
옵션 검증 단건 캐싱
src/main/java/com/michelet/catalog/application/ProductViewQueryService.java
validateOptionInternal(UUID optionId)@Cacheable(cacheNames = "product_validate_cache", key = "#optionId", cacheManager = "catalogCacheManager") 추가.
Redis 캐시 직렬화 분리 및 다형성 설정
src/main/java/com/michelet/catalog/infrastructure/config/RedisCacheConfig.java
기본 캐시는 다형성 지원 GenericJackson2JsonRedisSerializer를 사용하도록 BasicPolymorphicTypeValidator를 inline 구성하고, product_validate_cacheJackson2JsonRedisSerializer<OptionValidationResponse> 전용 설정을 사용하도록 RedisCacheConfiguration을 분기하여 RedisCacheManagerBuilder에 적용함.
상품 이벤트 기반 캐시 무효화 확장
src/main/java/com/michelet/catalog/infrastructure/messaging/ProductEventConsumer.java
Kafka 리스너의 캐시 무효화를 단일 @CacheEvict@Caching으로 변경하여 products_cacheproduct_validate_cache를 함께 무효화: product-updated는 두 캐시 모두 무조건 비우고, status-changedproducts_cache를 조건부로 비우는 동시에 product_validate_cache는 항상 비움.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • githyj-jang
  • Jinyoung-Kim96
  • qldo
  • Sehi55
  • jihxonx

Poem

🐰 검증 하나씩 담아두고, Redis에 살포시 숨겨놨네,
이벤트 오면 깔끔히 털어내고, 다음 호출은 또 빨라지네.
당근 한 입, 캐시 한 줄, 코드도 깔끔히 정리했지요.
홧팅! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 '단건검증에도 캐시 도입'으로 명확하게 주요 변경사항을 요약하고 있으며, 실제 코드 변경(validateOptionInternal 메서드에 @Cacheable 추가, Redis 캐시 설정 분리 등)과 일치한다.
Linked Issues check ✅ Passed PR이 이슈 #45의 요구사항인 '단건검증 캐시 도입'을 정확히 구현했다. validateOptionInternal에 @Cacheable 추가, product_validate_cache 설정, 이벤트 처리 시 캐시 무효화 로직이 모두 포함되어 있다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 단건검증 캐시 도입이라는 명확한 목표에 직접 관련되어 있으며, Redis 캐시 설정 개선, 캐시 무효화 로직 업데이트 등 모두 이슈 범위 내 변경사항이다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/45-validate-cache

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]

This comment was marked as resolved.

@githyj-jang githyj-jang left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다!

@ji-circle
ji-circle merged commit 3c4334f into dev May 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] 단건 검증 캐시 도입

2 participants