S3, Redis 재요청 제한 처리 재작업#123
Open
yeomin4242 wants to merge 47 commits into
Open
Conversation
…ParticipantDomainService #118
…benchmark mode handling in StudyDomainService and StudyParticipantDomainService #118
…udyParticipantJpaRepository #118
…avior in service tests #118
…DomainService for enhanced stats handling #119
…uce BoardStatRedisKeys for key management #119
…ce and update Redis configuration profiles #119
…te permission checks #118
…sitory and fetching creator ID in StudyQueryRepository #118
… and study tables #118
…refactor-scheduler-logic-for-saving-request-data#119
… and dev profiles
…application settings
…for improved clarity and accuracy
…uplicate payloads
…date BoardControllerTest for role-based access control
minwoonggi
approved these changes
Apr 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#️⃣연관된 이슈
#122
📝작업 내용
이전에 작업한 내용 #111에서 더 나아가 S3, Redis 중복 요청을 더 줄이고자했습니다.
BE에 멱등키 기반 요청 제어를 도입하고, Redis 상태 저장 + Redisson 분산락 최적화, 를 적용했습니다.
또한 첨부파일 업로드에 deterministic S3 key 전략을 적용해 동일 요청 재시도 시 중복 업로드가 발생하지 않도록 개선했습니다.
주요 변경 사항
Board,Study,Project생성/수정/종료 API에서X-Idempotency-Key를 받을 수 있도록 컨트롤러를 확장했습니다.IdempotencyExecutor를 통해 공통 멱등 처리 흐름을 적용했습니다.PROCESSING,COMPLETED,FAILED_RETRYABLE로 저장하도록 구성했습니다.idempotencyKey + payload요청은 기존 결과를 재사용하고, 동일 키에 다른 payload가 들어오면 mismatch 예외로 처리하도록 했습니다.idempotent-v1/{memberId}/{idempotencyKey}/{fileHash}형태의 deterministic S3 key를 적용했습니다.HEAD/PUT중복 호출을 줄이기 위해 local cache + in-flight collapse를 적용했습니다.전/후 비교
1. 멱등키 + 분산락 적용 효과
-99.9%+100.00%p2. Redis 제어 경로 최적화
-51.3%3. S3 deterministic 업로드 최적화
-99.9%-99.7%-99.86%스크린샷 (선택)
💬리뷰 요구사항(선택)